DevOps与持续交付
DevOps和持续交付是通过自动化、快速反馈以及使软件保持持续可发布状态的部署管道,来统一软件开发和运维的实践。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
DevOps是一套文化和技术实践,旨在整合软件开发和IT运维,以缩短交付周期;而持续交付则是一门工程学科,旨在自动化构建、测试和部署,从而使软件能够随时可靠地发布。
Scope
本主题涵盖持续集成和持续交付/部署管道;构建、测试和发布自动化;基础设施即代码;配置管理;监控和可观察性;开发与运维之间的文化协作;以及部署频率、提前期、变更失败率和平均恢复时间等指标。
Core questions
- 部署管道如何自动化从提交到生产的路径?
- 哪些实践可以在保持质量的同时使软件持续可发布?
- 持续集成、持续交付和持续部署有何不同?
- 哪些指标能可靠地指示软件交付性能?
Key theories
- 部署管道
- 每一次变更都流经一个自动化的构建、自动化测试和分阶段部署管道,提供快速反馈并确保通过管道的任何版本都可作为发布候选。
- DevOps的三种方式
- Kim的原则描述了优化从开发到运维的流程、放大反馈循环以及培养持续实验和学习的文化,作为高性能技术组织的基础。
- DORA交付绩效指标
- 研究确定了四个关键指标——部署频率、变更提前期、变更失败率和服务恢复时间——这些指标在统计学上区分了高绩效和低绩效的软件交付组织。
Clinical relevance
DevOps和持续交付将发布周期从数月缩短至数小时,通过自动化和小批量减少部署风险,并提高稳定性和吞吐量;实证研究表明这些实践与更好的组织绩效相关。
Evidence & guidelines
年度DevOps现状报告和Accelerate研究项目提供了实证证据,表明持续交付实践与软件交付和组织绩效相关。
History
DevOps一词起源于2009年左右的敏捷系统管理和基础设施即代码运动,旨在打破开发与运维之间的壁垒。Humble和Farley于2010年将持续交付规范化,随后的实证研究正式确定了区分高性能团队的指标。
Debates
- 持续部署与持续交付
- 关于每个通过的变更是否应自动部署到生产环境(持续部署)或等待手动发布决策(持续交付)存在争议;答案取决于风险承受能力、监管环境和自动化验证的成熟度。
Key figures
- Jez Humble
- David Farley
- Gene Kim
- Nicole Forsgren
- Patrick Debois
Related topics
Seminal works
- humble2010
- kim2016
- forsgren2018
Frequently asked questions
- 持续交付和持续部署有什么区别?
- 在持续交付中,每个通过管道的变更都是可发布的,但部署到生产环境的决定是一个有意识的人工操作;在持续部署中,最后一步也是自动化的,因此每个通过的变更都会自动发布。
- DevOps是一个角色还是一个实践?
- DevOps主要是一套涵盖开发和运维的文化和技术实践,而不是一个单一的职位名称;将其仅仅视为一个重新命名的运维角色,就忽略了其对共享所有权和自动化的强调。