Kanban 指南 · 精益基础
持续交付:原则、流水线与优势
持续交付是一种软件实践,代码始终保持可发布状态,因此新的变更可以随时快速、安全地发布给用户。它将 Kanban 所倡导的小批量、持续流动的理想变为技术现实。
要点总结
- 持续交付让软件始终处于可发布状态。
- 部署流水线将构建、测试和发布自动化。
- 它通过消除批量发布来补充 Kanban。
起源
Jez Humble 和 David Farley 在 2010 年出版的《持续交付》(Continuous Delivery)一书中深入阐述了这一实践。它建立在敏捷原则的基础上,尤其是第一条原则:尽早并持续地交付有价值的软件。
持续集成、持续交付与持续部署对比
| 实践 | 含义 |
|---|---|
| 持续集成(CI) | 开发人员频繁合并小的变更;每次合并都会自动构建和测试 |
| 持续交付(CD) | 每个通过流水线的变更都可以发布;是否发布是一项业务决策 |
| 持续部署 | 每个通过流水线的变更都会自动发布 |
部署流水线
- 提交阶段: 构建代码并运行快速的自动化测试。
- 验收阶段: 自动化功能测试和集成测试。
- 进一步测试: 性能、安全和探索性测试。
- 发布: 部署到生产环境,通常借助功能开关或逐步发布。
- 监控: 观察真实的使用情况和错误,必要时快速回滚。
优势
- 规模更小、风险更低的发布。
- 更快地获得真实用户的反馈。
- 更短的 前置时间 (从想法到客户)。
- 发布日压力更小。
- 通过自动化实现更高质量。
持续交付与 Kanban
Kanban 限制在制品并保持条目小型化;持续交付则消除了最后的批量发布步骤。两者结合,让每个条目一完成就能流向客户。参见 DevOps.
本主题的免费模板
常见问题
持续交付只适用于软件吗?
该术语源自软件领域,但让工作以小增量始终保持可发布状态的原则同样适用于内容、文档和其他数字产品。
实践持续交付需要持续部署吗?
不需要。持续交付意味着您可以随时发布;持续部署则意味着您确实会自动发布。
什么是持续交付?
持续交付是一种软件实践,代码始终保持可发布状态,因此任何变更都可以随时安全、快速地部署到生产环境。
持续交付和持续部署有什么区别?
在持续交付中,每个变更都已准备好发布,但由人来决定何时部署。在持续部署中,每个通过流水线的变更都会自动发布。
持续集成和持续交付有什么区别?
持续集成意味着频繁合并和测试代码变更。持续交付在此基础上更进一步,使集成后的代码始终可以部署到生产环境。
持续交付中的部署流水线是什么?
一系列自动化阶段,例如构建、测试和部署到测试环境,每个变更在发布前都要经过这些阶段。
《持续交付》一书的作者是谁?
Jez Humble 和 David Farley,在他们 2010 年出版的《持续交付》一书中。
持续交付有哪些好处?
规模更小、风险更低的发布,更快的用户反馈,更少的人为错误,以及压力更小的发布日。
持续交付使用哪些工具?
团队通常将版本控制、CI/CD 服务器、自动化测试框架和基础设施即代码工具结合使用。具体产品远不如自动化和纪律重要。
持续交付与 Kanban 有何关系?
两者都追求小批量工作稳定地流向客户。Kanban 看板若拥有较短的 周期时间 ,便与能够发布任何已完成条目的流水线天然契合。
持续交付中的功能开关是什么?
代码中的一个开关,无需重新部署即可开启或关闭某项功能,让团队能够在功能对所有用户可见之前安全地发布代码。