DevOps概念始于2009年O`Reilly敏捷大会上的一次演讲,演讲的题目是《每天10+部署:开发与运维在Flicker的协作》,在当时软件交付周期普遍以月和年为单位的时代,每天10部署被认为是史无前例的创举,同年在比利时根特组织的第一次DevOpsDays活动中,将他们的方法称为DevOps,这个名称由此开始流行。《DevOps实践指南》中指出,DevOps基于精益、约束理论、丰田生产系统、柔性工程、学习型组织、安全文化、人员优化因素等知识体系,并参考了高信任管理文化、服务型领导、组织变动管理等方法论。虽然DevOps是精益原则、约束理论和丰田套路运动的衍生物,但也被许多人视为始于2001年的敏捷运动的延续。
2001年由17位敏捷专家发布的敏捷宣言,标志着敏捷运动的出现,敏捷宣言的核心是摆脱僵化、瀑布式的、文档化的软件开发模式,针对传统瀑布式开发方法的问题提出了敏捷的解决方案。敏捷开发的目标是找到一种迭代的方法,实现与客户、终端用户或者代理人的持续互动,随着XP(Extreme Programming)极限编程、Scrum敏捷开发、SAFe方法论的发展,敏捷运动得到进一步的提升。如今,互联网科技行业大都在利用敏捷方法开发和交付各种规模的项目和产品,随着敏捷方法的应用,开发人员加快了软件开发速度,要求软件更快速地测试,更加频繁的发布,最终部署到线上生产环境产生价值,这种软件更高频率迭代的快速开发、持续交付的要求增强了开发与运维团队之间的沟通和协作需求。
随着DevOps方法论研究和实践应用,关于DevOps的定义有很多,维基百科上DevOps的定义,DevOps是Development和Operations的组合词,是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或实践。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。行业内应用DevOps方法多用于改进软件开发交付工作的效率和质量,因此作者更倾向于把DevOps看作开发(软件工程)、运维(IT服务管理)和质量(质量保证QA)三者的交集(如图2.1所示),是一组可用于促进开发运维一体化沟通、协作与整合的过程、方法与系统的统称,把DevOps过程改进看做是增强开发人员与运维人员之间沟通协作,并提高软件交付工作过程效能的技术管理解决方案。DevOps可以把运维工作作为软件开发交付流程的一部分,而非软件产品发布前都不参与的独立环节,这种超越开发-测试周期的敏捷扩展也是DevOps方法论的核心思想。
据2019年中国信通院的研究报告表明,实施并参与DevOps方法转型的企业行业分布中,互联网行业占比36.42%,科技行业占比30.48%,说明DevOps已经在全球软件企业中积累了大量的实践应用,国内由 DevOps 时代社区与高效运维社区联合主办组织的DevOps峰会,也会定期组织分享行业内DevOps过程改进的优良实践。
通过汇总各行业Devops应用的优良实践,可以发现企业在DevOps应用中存在很多共性特点,其中比较聚焦的关键核心是软件持续交付过程,并以软件持续交付过程为核心,改进和增强其他软件开发相关过程的扩展和支撑能力,是各企业实施DevOps的普遍思路。同时在实施效果评估上,也都聚焦于比较软件交付能力的各项绩效指标评估。因此研究DevOps优良实践与软件开发交付生命周期的关系,是实施DevOps方法的必要过程。