1.4 DevOps与敏捷
DevOps的一个特征是强调DevOps实践与敏捷实践的关系。本节将把DevOps实践覆盖在IBM规范敏捷交付上。我们的重点不是解释规范敏捷交付,而是说明DevOps中增加的内容。如果想了解规范敏捷交付,可参阅《Disciplined Agile Delivery: A Practitioner’s Approach》一书。如图1-2所示,规范敏捷交付包含3个阶段——开始、构造和转换。在DevOps的语境中,我们把转换解释为部署。
DevOps实践影响所有这三个阶段。
1)开始阶段。在开始阶段中,完成发布计划和初始需求规格说明。
a.运维人员考虑的内容将为开发人员增加一些需求。本书后面会介绍更多细节,其中的两个需求是维护发布向后兼容性以及软件可切换的特性。运行日志信息的形式和内容影响运维人员排查问题的能力。
b.发布计划包含了为功能定优先级,它也包含了与运维人员之间的配合,包括发布调度、确定运维人员为了支持新发布需要做哪些培训。发布计划也包含了确保与生产环境中的其他软件包的兼容性以及发布失败时的恢复计划。DevOps实践使得在发布计划中与协作相关的很多主题不再需要,而其他方面变得高度自动化。
图1-2 每个发布的规范敏捷交付阶段(改编自Ambler和Lines编著的《Disciplined Agile Delivery: A Practitioner’s Guide》一书)[标注法:波特价值链]
2)构造阶段。在构造阶段中,DevOps实践的关键要素是对代码分支的管理、持续集成和持续部署的使用、自动化测试的测试用例的合并。这些也是敏捷实践,但却是实现自动化部署流水线的一个重要组成部分。一个新的元素是在构建与转换活动之间,集成和自动连接的。
3)转换阶段。在转换阶段中,对解决方案进行部署,并由开发团队负责部署、监控部署的过程,确定是否需要回滚以及何时回滚,并监控部署后的运行。开发团队有一个“可靠性工程师”的角色,他在部署和后续运行过程中负责监控及排查问题。