持续交付(CD)是一种软件策略,它使企业尽可能快速有效地向用户提供新特性。持续交付的核心思想是创建可重复、可靠和逐步改进的过程,从而将软件从概念变为现实带给客户。持续交付的目标是通过自动化软件生产线使变更不断流入生产。持续交付流水线使持续交付成为可能。
流水线将软件交付过程分成阶段。每个阶段旨在从不同角度验证新特性的质量,以确认新功能,并防止失误给用户造成影响。流水线应向团队提供反馈,并让所有交付新特性的人员了解变更流。
虽然没有标准流水线这样的东西,但典型的持续交付流水线包括以下阶段:构建自动化和持续集成、测试自动化和部署自动化。
1.构建自动化和持续集成
流水线首先会构建二进制文件来创建可交付成果,这些成果然后被传递到后续阶段。开发人员实现的新特性被持续集成到中央代码库中,并被构建和进行单元测试。这是最直接的反馈循环,它可以通知开发团队其应用程序代码的健康状况。
2.测试自动化
在这个阶段,新版本的应用程序经过严格测试,以确保其达到所有预期的系统质量。通过流水线验证所有相关方面极为重要 - 无论是功能、安全性、性能或合规性。该阶段可能涉及不同类型的自动或手动(至少最初需要这样)活动。
3.部署自动化
每次将应用程序安装在测试环境中时都需要进行部署,但部署自动化的最关键时刻是上线时间。由于前面的阶段已经验证了系统的整体质量,所以部署已是一个低风险的步骤。部署可以分阶段,可以将新版本最初只发布到生产环境的一部分,而非全部,并在完全上线之前进行监控。部署是自动化的,如果需要,它可以在几分钟内为用户提供可靠的新功能。
4.你的流水线需要平台分配和配置管理
部署流水线由平台分配和系统配置管理支持,它允许团队自动或通过按下某个按钮来创建、维护和拆除完整的环境。
自动平台分配确保你的候选应用程序部署到正确配置和可复制的环境中并进行测试。它还有助于横向可扩展性,并允许企业随时在沙箱环境中试验新产品。
5.编排一切:发布和流水线编排
部署流水线中的多个阶段需要不同小组的人员进行协作和监控新版本应用程序的发布。发布和流水线编排提供了整个流水线的顶层视图,使你能够定义和控制阶段,并深入了解整个软件交付过程。
通过为你的发布创建价值流映射,你可以突出显示任何残余的低效率和热点,并找到改善流水线的机会。
6.在质量未达标前, 不要添加新的功能!
持续交付指使你的组织能够快速可靠地将一个个新特性带入生产。这意味着每个单独的特性需要在上线之前进行测试,确保其满足整个系统的质量要求。
在传统的环境中,开发团队通常会一次性地实施整个新版本,而且当项目接近完成时,他们才解决软件质量属性问题(如鲁棒性、可扩展性和可维护性)。然而,随着截止日期的临近和预算压力的增加,质量往往是首先被妥协的。
采用在保证质量达标之前不添加新功能的原则,可以避免系统质量差、用户满意度低和无止境地贴“质量创可贴”的现象。你应该始终首先满足并保持你的质量水平,然后才考虑逐渐向系统添加功能。
使用持续交付,每个新特性从一开始就需要满足系统整体的质量水平。只有达到这个质量水平,才能将特性转移到生产中。
7.开始进行持续交付
显然,组织不能也不该在所有业务部门立即采用持续交付。最好的办法是专注于改善你最大的交付瓶颈。持续交付会自动显示下一个瓶颈是什么。这使你可以度量你的改进。
使用持续交付的主要目标是使比以前的迭代更好的新特性和功能上线,并逐渐整合和完善整个组织的持续交付原则。慢慢地走,平稳地走——观察改进! 原创:Andrew Phillips
|