【干货】DevOps的演进与落地价值

DevOps是当前IT领域最热门的话题之一,了解、掌握、应用DevOps对于提高软件交付与管控具备重要的意义。然而时至今日DevOps尚无统一的定义。运维

 

本文主要从业务及IT的发展对DevOps的诞生背景、定义演进以及落地价值等方面进行了分析和阐述,以期对DevOps的内涵进行探讨。工具

DevOps在2009年提出以来,已经走过了十个年头。近几年来,DevOps的热度呈快速上涨趋势,从DORA的年度报告也能够看出来,到2018年底全球主要行业的DevOps的应用程度已达到30%,上升势头迅猛。测试

 

然而,时至今日,对于DevOps仍没有一个准确的定义,这对于咱们理解DevOps,或者说在落地DevOps的过程当中会带来不小的困扰,各方都有本身的理解。那么,DevOps的内涵到底是什么呢?咱们指望从DevOps的发展背景、定义演进以及落地价值等方面进行一次探讨。优化

 

DevOps发展背景

 

业务发展对软件的依赖

民用软件系统的应用崛起于上个世纪八十年代, 2000年后蓬勃发展,其中,做为重要组成部分的软件系统,逐渐深刻到社会的每个角落,从总体的发展过来来看,业务与软件系统的关系可分为三个阶段。spa

轻度依赖设计

在这个阶段主要出如今早期,软件系统主要解决业务中重复多或计算量大的问题,支撑范围主要局限在业务中的某一过程或环节。或者说,在这个阶段,业务离开了软件系统也能开展,软件对业务来讲不是必选项,软件功能的更新频率能够是数天乃至数月、年。3d

 

重度依赖blog

随着业务的发展,业务的关联性与复杂度提升后,业务彻底依赖人工完成已经成为不可能。到这个时期,软件系统成为业务的核心支撑,业务的开展已经离不开软件系统,但尚可接受短暂的非服务期存在,软件功能的更新频率被要求在数天、月。生命周期

 

彻底依赖开发

随着软件服务深刻社会各个角落,社会生活的衣、食、住、行、用都依赖于软件系统,从某一领域或应用来讲,软件系统相对于业务已经进入了主导阶段,软件系统必须提供365*7*24的服务,任何中断服务可能都会带来极大的经济或社会损失,软件功能的更新频率必须控制在数天、小时、分钟。

 

IT管理与研发模式演进

IT管理与研发模式的演进,与IT对业务的响应效率密不可分,大体可分为三个阶段;

“稳态”模式

传统稳态模式的管理上,业务、研发、测试、运维依次分阶段管理,各阶段的人员只需关注本阶段内部的相关内容便可,研发以系统软件包交付为目标;总体结构以下图所示:

 

在研发模式上,以瀑布模型为主要特色,其优点是各阶段划分比较清晰、总体成本较低,但迭代速度较慢,其在业务对软件轻度依赖阶段适用性较好。

 

“稳态+敏捷”模式

随着业务对软件依赖程度的提升,传统模式下软件的迭代效率成为了一个阻碍业务发展的主要问题点,因而针对软件研发过程最耗时的开发过程出现了一系列的优化措施,敏捷研发是其表明。这个时期的IT管理模式变成了“稳态+敏捷”的模式,研发仍旧以系统软件包交付为目标,以下图所示:

 

固然,在这个时期,针对各阶段的效率提高也进行得如火如荼,出现了了一大批针对不一样阶段提速的工具软件,以下图所示:

 

“敏态”模式

当业务对软件系统彻底依赖时,IT管理与研发模式就须要进入“敏态”模式了。而这个模式也就是咱们今天时常提起的DevOps。在这个模式下,研发交付目标再也不是系统软件包,而是面向业务的服务能力,以下图所示:

 

因为业务与软件的关系愈来愈紧密,研发的交付已经由原来的面向软件包产品,而转向面向业务须要的服务能力,然而,这种服务能力也是涉及多个方面,下面咱们从DevOps的定义发展,来看看DevOps的内容丰富过程。

 

DevOps定义演进

“稳态+敏捷”模型只能实现局部效率提高,而DevOps那么惟一的途径就是从总体上进行优化和提高,使整个研运过程造成一个有机的总体。从2009年提出依赖,DevOps的内涵也在进行着不断的发展与丰富,咱们先看一下不一样时期的定义。

 

  • 2009年10月,【Patrick Debois】DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协做与整合。

 

  • 2010年5月,DevOps是一个重要的理论,它经过敏捷、精益等在方法、在一个传统的组织中,把独立的部门协同在一块儿实现跨部门集成,创建更加紧密的多部门协做。DevOps不只仅关注软件部署这一技术问题,它是考虑部门与部门之间沟通和协做的管理方法。

 

 

  • 2014年12月 DevOps是一种软件开发方法,它强调软件开发人员和信息技术人员之间的沟通、协做和集成。

 

 

  • 2015年11月 DevOps是一种文化、运动或实践,它强调软件开发人员和其余信息技术人员的协做和沟通,同时强调自动化软件交付和基础设施变动的过程。

 

 

  • 2018年AWS DevOps定义:DevOps是一组实践,目的是在确保高质量的状况下,快速地把变动导入到生产环境。

 

 

咱们把不一样时期的定义整理为一个时间轴,并作一些关键字抽取:

 

 

能够看出针对DevOps的定义,随着时间的推移,DevOps的内涵在不断丰富,已经从最初一组过程、方法与系统的组合简的单定义,发展为一套有理论、有方法、有文化、有实践的体系。

 

DevOps体系与传统模式是有着本质的不一样的,主要体如今如下几个方面:

 

组织方式不一样

DevOps中强调以项目或产品的一体化管理为基本管理模式,从而消除传统模式下分阶段任务管理与执行,经过管理模式的调整,消除传统模式下不一样阶段的衔接问题。

 

关注重点不一样

DevOps是以最终向业务的服务能力交付为目标,而不是传统模式下分阶段任务交付为目标。

 

提高维度不一样

DevOps关注软件系统的整个生命周期,是从总体上提高软件交付的质量与效率,而不单只关注某一个阶段的提高,各阶段的提高能够更加的有机协同。

 

管控深度不一样

DevOps强调全程监控,全程度量,经过技术手段透明化软件交付的全程,包括过程与结果,而传统模式下过程数据缺少,难以进行有效的过程度量与分析。

 

效益效果不一样

DevOps支持针对交付过程的持续优化,经过度量数据分析能够快速定位交付过程的问题与努力方向,支持持续科学的优化提高,传统模式难以作到。

 

DevOps落地价值

DevOps的定义演进以及与传统模式的对比,能够看出DevOps体系自己系统化、总体性的设计思想,其既包括了软件全生命周期的系统化考虑,也包括了了IT管理的多方诉求,DevOps的落地涉及DevOps平台的建设、流程体系建设、人员赋能、标准规范等多个方面,其能够为带来以下方面的提高。

 

业务响应能力提高

DevOps的落地,在提高效率的同时能够提高交付的质量,自动化程度的提高能够提高对业务需求迭代的响应能力,研运吞吐量能够获得几何级的提高。

 

研发交付规范提高

不一样项目或产品的研发团队,在同一套平台上开展研发交付活动,经过平台预先制定的流程、规则等约束不一样研发团队的交付活动,从而实现研发交付规范与标准的统一,实现企业级的优化提高与改进。

 

研发交付效率提高

经过针对研发交付过程当中的环境准备、编译构建、代码质量检查、系统测试、软件部署等过程的自动化实现,下降人工操做或等待人工操做时间,全面提高研发交付过程的自动化水平,提高研发交付效率。

 

研发交付质量提高

研发交付质量的从现有的部署结果质量保障,延伸到源代码质量保障、测试覆盖度保障等过程,从而实现从源代码到部署全过程的质量检查与提高,全链路提高研发交付质量

 

研发交付管控提高

针对研发交付的需求、开发、测试、发布和部署等过程,进行全面的数据化和度量,针对重点关注指标创建质量门禁,从而实现自动化的技术管控,结合已有的行政管控,由单一的结果管控,实现研发交付“过程+结果”管控,提高管控力度。

 

研发交付持续优化

基于DevOps平台,经过流水线过程数据收集,以及进一步的度量分析,实现研发交付过程的持续优化,既包括DevOps平台的优化,也包括研发交付流程、标准规范等方面的优化。

 

总结

DevOps的演进简单来讲就是从一项技术到文化的构建与实践;从可有可无到依赖;从业务的局部到所有。而DevOps的落地价值实现于研、运的整合而且提高对业务需求的响应。趋势已成,只愿你们都能共襄盛举。

 

做者:黄全中