适合小白了解学习的DevOps实践
什么是DevOps?
随着微服务及容器化技术的普及至大众视线后DevOps常被提及,关于DevOps似乎并没有一个标准的定义,如果说从基于目标导向去给它做一个定义,DevOps是一套实践方法,即在保证高质量的前提下,缩短系统由变更、提交、部署更新到生产环境的时间,DevOps的核心由此可见体现在“保证高质量”, “缩短时间”,“部署”。
如上图,传统开发和运维之间存在一堵墙,开发人员想改变而运维人员想要稳定。另外,传统开发工具与运维工具也存在一堵墙,并没有打通成为一条工具链。
从字面上来理解DevOps ,Dev(开发人员)+Ops(运维人员),DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。
软件开发演变:
缓慢而繁琐的瀑布模型演变成敏捷,开发团队在短时间内完成软件开发,持续时间甚至不超过两周。如此短的发布周期帮助开发团队处理客户反馈,并将其与bug修复一起合并到下一个版本中。
虽然这种敏捷的SCRUM(迭代式增量软件开发)方法为开发带来了敏捷性,但它在运维方面却失去了敏捷实践的速度。开发人员和运维工程师之间缺乏协作仍然会减慢开发过程和发布。DevOps就是基于对更好的协作和更快的交付的需求而产生的。
为什么DevOps没有迅速走红?
从2009年提出DevOps的概念,时至今日已经有十余个年头,在此之前DevOps为什么没有迅速走红,总结主要原因为以下几点:
● 之前的云计算还属于小众产品,虚拟化、虚拟机还是重量级的IT基础设施。
● 容器相关技术(Docker为代表)没有横空出世,导致DevOps无法迅速走红。
● Micro Service即微服务尚未广泛的推广使用。
DevOps开始深入人心,和云计算、容器/Docker、微服务、敏捷等相关概念和实施的发展离不开,互联网迅猛的发展,需要更快的业务试错与业务创新,让软件的生产、交付、获取、升级变得自动,DevOps在传统企业也开始备受关注开始走红。
关于DevOps的一些误区
对DevOps的狭义理解:
简单说DevOps是提倡开发和IT运维之间的高度协同,在完成高频率部署的同时,提高生产环境的可靠性、稳定性、弹性和安全性。
DevOps不仅需要打通开发和运维之间的隔阂墙,更需要从应用的全生命周期考虑,实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力。
纵向集成,打通应用全生命周期(需求、设计、开发、编译、构建、测试、打包、发布、配置、监控等)的工具集成,最终实现自助化。
例如:项目组的开发人员可以通过DevOps的平台上,自主申请开通需要的各种服务,比如开通开发环境、代码库等。
横向集成,打通架构、开发、管理、运维等部门墙。横向集成中DevOps强调的重点是跨团队的线上协作。
例如:传统的系统上线部署方式,通过一个发布手顺文档,上百页都有可能,但在DevOps的平台下,应该是通过标准运行环境的选择、环境配置的设置、部署流程的编排,实现数字化的部署手册,这样的手册,人机都能够执行,并且过程可以被追踪和审计。
我们使用DevOps时,大致有这几种误区认知:
● 企业没有使用云相关产品(IaaS、PaaS),无法开展DevOps;
● 微服务架构开发的应用适合DevOps,传统SOA应用不适合;DevOps的实施和应用架构无关,无论是微服务架构,还是SOA类型应用,都可以开展DevOps工作;
● 自动化工具的运用等同于DevOps的成功;采用自动化工具本身不是DevOps,只有将这些工具与持续集成、持续交付、持续的反馈与优化进行端到端的整合时,这些工具才成为DevOps的一部分;
● DevOps不仅仅是自动化。自动化是DevOps非常重要的一部分,但不是唯一的部分,实施DevOps需要从敏捷、持续、协作、系统性、自动化多个维度进行建设与改进。
DevOps架构支撑
逻辑架构整个DevOps平台分为三层:
设施层:包括IaaS,CaaS,一般是基于OpenStack和Kubernetes、Docker;
服务层:服务管理与调度的基础能力,如注册中心,编排,以及企业级或互联网式的云服务;
DevOps层:更多的是工作流程需求、设计、开发、测试、发布等,看板等;
DevOps在企业的实践
实施DevOps的核心目标是加速企业IT精益运行,提升IT的生产效率,加速部门、企业的业务创新能力。实施DevOps需要从组织、技术、流程三个维度进行。
可以梳理出目前团队中欠缺但又容易改进的点,逐步将更多的实践活动纳入团队当中。团队实施DevOps的目的在于,将重复、价值低的事情交由DevOps平台实现。在传统企业中,技术方面的实践最容易在团队中实现、流程次之、组织的优化与变革最为艰难。
1、技术方面
● 集成工具链:
打通应用开发工具链:需求、项目、代码、构建、测试、打包、发布、配置、监控;
● 基础设施即编码:
将基础环境服务化、可编程化,基础设施让项目团队可以自助获取;让基础设施从物理机、虚拟机、走向容器;
● 一键编译、测试、部署:
开发人员可以从代码开始,一键获得可访问的环境,根据需要可以推送开发、测试、预发、生产环境;
● ChatOps:
项目团队成员将沟通、工具和过程整合在一起。将工具植入对话中,保障团队能够自动执行任务与协作。推荐最近比较流行的hubot。
2、 流程方面
● 看板:
在DevOps中看板不仅是任务协调沟通的机制;也可作为管制平台,量化组织生产能力的工具。
● MVP:
采用MVP(Minimum Viable Product最小可行产品)原则,最短时间内快速交付产品原型,然后通过测试并收集用户的反馈,快速迭代,不断修正产品,适应客户的需求。
● 发布:
建立持续发布机制,形成自动化、自助化,支持常见的灰度发布、金丝雀、蓝绿、回滚、A/B测试等;
● 软件度量:
通过软件度量(包括过程度量、质量度量、用户度量、成本度量),推算出组织的各种有效指标;可以掌控组织的生产力水平,也可通过度量数据,反向优化组织瓶颈点;
● 一切皆代码:
文档(用户场景、功能特性等)、配置(应用配置、环境配置、脚本等)、环境(基础设施、中间件环境等)、发布包需要统一看待成代码,纳入版本管理,提供全视角的链路追踪。
例如:每个发布的版本,可以追溯其对应的配置,代码、文档,发布的功能点。
组织、技术、流程三个维度中,技术、流程可以通过平台或者工具进行最佳实践的固化。
平台建设第一步,梳理出DevOps的整体模型。从角色、规划设计、开发交付、运营反馈四个维度进行梳理。以产品为核心,将代码、配置、环境进行严格分离,同时覆盖产品全生命周期。
另外企业在落地DevOps也存在如下困境:
1)涉及的部门多(开发中心、质量控制部门、生产运行部门);
2) 流程改造复杂;
3) 责任边界需要重新划分;
4) 自动化是核心问题。
实施DevOps工具选择
关于DevOps工具选择,按照阶段进行拆分,将其分解到各阶段分别是:规划、构建、持续集成、部署、运营以及持续反馈。
1) 规划
视觉与设计方面达成协作,推荐使用的工具:Confluence, HipChat,JIRA Software。
2) 构建
开发阶段环境构建,推荐使用的工具:Docker。
基础设施自动化,推荐使用的工具:Bamboo, Bitbucket, Chef,Docker, Puppet。
3) 持续集成
它是支撑新功能的代码与当下代码集成的环节。软件在持续性开发,升级后的代码必须持续性集成,并快速地与系统集成,实现用户的各种需求变更。变更后的代码,还应当保证执行时环境中沒有异常。推荐使用的工具:Bamboo, HipChat。
自动化测试,对于准备和支持开发构建工作,自动化测试的操作过程透明化以及彻底性是非常重要的。推荐使用的工具:Bamboo, Bitbucket,Capture for JIRA。
4) 部署
发布仪表盘,在一个地方对于你想寻找的关于分支,构建,拉请求和部署警告等信息提供高可视化。推荐使用的工具:JIRA Software。
自动化部署,推荐使用的工具:AWS, Bamboo, HipChat,Puppet。
5) 运营
监控,实施自动化监控针对服务器监控和应用程序性能监控,推荐使用的工具:BigPanda,HipChat,HostedGraphite,Nagios,NewRelic,PagerDuty,Pingdom,Splunk。
沟通与集群,跨团队沟通是实现文化转变的第一步,聊天工具可促进它的实时性。推荐使用的工具:BigPanda,DataDog, HipChat,NewRelic, PagerDuty,StatusPage。
事件、变更和问题跟踪,推荐使用的工具:JIRA Service Desk,JIRA Software
6) 持续反馈
通过用户反馈创造更好的产品,推荐使用的工具:GetFeedback,HipChat,JIRA Service Desk,Pendo,Surveymonkey,HootSuite。
实施DevOps成熟度评判指标
在实践DevOps时,可以从运营效率、IT服务水平、组织效能、客户价值、经营业绩五个维度进行评判,持续优化与改进。
企业实施DevOps价值
1、从原先线下协作、沟通,统一到DevOps平台上协作、沟通;可以随时了解项目进展全貌,利用平台可以做到各种过程数据的实时收集;
2、 资源管理由原来专职人员,过渡到开发人员实现自助化服务,可按需实现各类环境申请与开通,基础设施即服务提供来技术的支撑;
3、由邮件文化到DevOps平台统一沟通,同时DevOps打通多个工具链路端,任务分发、沟通、提醒可以实时推送。
适合小白了解学习的DevOps实践相关推荐
- 北京python培训班价格-北京Python培训班,为什么Python超适合小白学习
原标题:北京Python培训班,为什么Python超适合小白学习 每次在网上看到小白提问:零基础学编程,哪门编程语言更容易上手? 其实这个问题有两种回答,一是多去试试,常见的语言只有那么几种,挨个试 ...
- 适合小白的Python学习大纲
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰,但是,我们要清楚:淘汰的永远只是那些初级水平的从业者,过硬技术的从业者永远都是稀缺的.因此对于学习,我们还是要踏踏实 ...
- python中小学生编程学习-推荐几个适合小白学习Python的免费网站
9gd少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 想要学好python,只靠看Python相关的书籍是远远不够的!互联网时代,我们还要充分利用网络上的免费资源,不然怎样成为一 ...
- python自学网站免费-推荐几个适合小白学习Python的免费网站
9gd少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 想要学好python,只靠看Python相关的书籍是远远不够的!互联网时代,我们还要充分利用网络上的免费资源,不然怎样成为一 ...
- Vue实现音乐播放效果(适合小白学习)
Vue实现音乐播放效果(适合小白学习) 播放器介绍 五个html主要标签 功能介绍 (1)搜索 (2)播放效果: 完整代码: 播放器介绍 总体的效果如图所示,没有加很多css特效,需要美化的小白,可以 ...
- 《Devops实践指南》学习总结(全干货)
Devops基于精益原则,约束理论,和丰田套路运动,并拓展了"基础设施即代码"的实践,被人们视作敏捷运动的延续 基础设施即代码 包括 持续集成,持续交付,和持续部署 技术价值流:把 ...
- 推荐:适合小白入门的Asp.Net Core 开源学习手册
前言 推荐一个入门级的.NET Core开源项目,非常适合新手入门学习.NET Core. 开源地址: https://github.com/windsting/little-aspnetcore-b ...
- 微软开发团队的DevOps实践启示
过去几年,微软的工程师团队已经接受了DevOps的工作方式,本文讲述我们在这个过程中积累的经验. \\ 纵观整个软件产业,坦白地说,从我们一路的经验来看,DevOps的实践和方式对于服务和其它产品的交 ...
- python自学用什么书好-适合python基础学习的好书籍
分享几本python基础学习的书籍给大家 <Python编程:从入门到实践> 内容简介:本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用P ...
最新文章
- director.js实现前端路由
- net.sf.fmj.media.cdp.civil.CaptureDevicePlugger addCaptureDevices解决方法
- 腾讯手游助手android版本,腾讯游戏助手下载-腾讯游戏助手 安卓版v3.3.4.22-PC6安卓网...
- 面试官系统精讲Java源码及大厂真题 - 27 Thread 源码解析
- C# 循环语句 for
- 简单计算机app inventor,app inventor计算器
- java final 变量 好处_深入理解Java中的final关键字
- 西门子s7 计算机通讯,西门子s7-200 plc通讯连不上怎么办?
- TYUT-A专题题解(二)
- 各大linux发行版安装宝塔桌面脚本
- 西北乱跑娃 --- python繁体字简体字互转第三方库
- 怎么提供专利技术交底书
- 项目管理十大知识领域和五大过程
- winedit注册码
- nginx配置https启动报错:Expecting: TRUSTED CERTIFICATE)
- web网页制作期末大作业——蓝色的异清轩个人博客(6页) 个人博客模板源码异清轩博客
- 物联网-云平台可靠性设计
- 消除代码中的 if-else/switch-case的正确姿势
- [OPNET]license expired的处理
- 那计算机的发展基础是什么呢,计算机的基础
热门文章
- hadoop之 Hadoop1.x和Hadoop2.x构成对比
- 我都不敢信了 东芝芯片“又”将最后决定
- iOS制作一个雷达图,可用于多种场景(一)
- 让KVM虚拟机支持console功能
- ubuntu20.04运行《大航海家2》
- Method Not Allowed一例
- virtualenv在ubuntu系统中的缺点
- Flask碰到 原因:CORS 头缺少 'Access-Control-Allow-Origin'解决方案 解决
- ubnutu18.10拔除硬盘后进行recovery mode
- Python操作Redis中的hash