持续交付流水线为何对软件开发如此重要?

转载 | EAWorld 公众号

翻译 | 张斌

持续交付(CD)是一种软件策略,它使企业尽可能快速有效地向用户提供新特性。持续交付的核心思想是创建可重复、可靠和逐步改进的过程,从而将软件从概念变为现实带给客户。持续交付的目标是通过自动化软件生产线使变更不断流入生产。持续交付流水线使持续交付成为可能。

流水线将软件交付过程分成阶段。每个阶段旨在从不同角度验证新特性的质量,以确认新功能,并防止失误给用户造成影响。流水线应向团队提供反馈,并让所有交付新特性的人员了解变更流。

虽然没有标准流水线这样的东西,但典型的持续交付流水线包括以下阶段:构建自动化和持续集成、测试自动化和部署自动化。

1.构建自动化和持续集成

流水线首先会构建二进制文件来创建可交付成果,这些成果然后被传递到后续阶段。开发人员实现的新特性被持续集成到中央代码库中,并被构建和进行单元测试。这是最直接的反馈循环,它可以通知开发团队其应用程序代码的健康状况。

2.测试自动化

在这个阶段,新版本的应用程序经过严格测试,以确保其达到所有预期的系统质量。通过流水线验证所有相关方面极为重要 - 无论是功能、安全性、性能或合规性。该阶段可能涉及不同类型的自动或手动(至少最初需要这样)活动。

3.部署自动化

每次将应用程序安装在测试环境中时都需要进行部署,但部署自动化的最关键时刻是上线时间。由于前面的阶段已经验证了系统的整体质量,所以部署已是一个低风险的步骤。部署可以分阶段,可以将新版本最初只发布到生产环境的一部分,而非全部,并在完全上线之前进行监控。部署是自动化的,如果需要,它可以在几分钟内为用户提供可靠的新功能。

4.你的流水线需要平台分配和配置管理

部署流水线由平台分配和系统配置管理支持,它允许团队自动或通过按下某个按钮来创建、维护和拆除完整的环境。

自动平台分配确保你的候选应用程序部署到正确配置和可复制的环境中并进行测试。它还有助于横向可扩展性,并允许企业随时在沙箱环境中试验新产品。

5.编排一切:发布和流水线编排

部署流水线中的多个阶段需要不同小组的人员进行协作和监控新版本应用程序的发布。发布和流水线编排提供了整个流水线的顶层视图,使你能够定义和控制阶段,并深入了解整个软件交付过程。

通过为你的发布创建价值流映射,你可以突出显示任何残余的低效率和热点,并找到改善流水线的机会。

6.在质量未达标前,不要添加新的功能!

持续交付指使你的组织能够快速可靠地将一个个新特性带入生产。这意味着每个单独的特性需要在上线之前进行测试,确保其满足整个系统的质量要求。

在传统的环境中,开发团队通常会一次性地实施整个新版本,而且当项目接近完成时,他们才解决软件质量属性问题(如鲁棒性、可扩展性和可维护性)。然而,随着截止日期的临近和预算压力的增加,质量往往是首先被妥协的。

采用在保证质量达标之前不添加新功能的原则,可以避免系统质量差、用户满意度低和无止境地贴“质量创可贴”的现象。你应该始终首先满足并保持你的质量水平,然后才考虑逐渐向系统添加功能。

使用持续交付,每个新特性从一开始就需要满足系统整体的质量水平。只有达到这个质量水平,才能将特性转移到生产中。

显然,组织不能也不该在所有业务部门立即采用持续交付。最好的办法是专注于改善你最大的交付瓶颈。持续交付会自动显示下一个瓶颈是什么。这使你可以度量你的改进。

使用持续交付的主要目标是使比以前的迭代更好的新特性和功能上线,并逐渐整合和完善整个组织的持续交付原则。慢慢地走,平稳地走——观察改进!

原文链接:https://devops.com/continuous-delivery-pipeline/

DevOps 时代社区流水线 3.0 ,关注 DOIS 2018 · 深圳站!还有海量精彩议题等你来!

原文发布于微信公众号 - DevOps时代(DevOpsTimes)

原文发表时间:2018-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ThoughtWorks

DevOps实践——打造自服务持续交付(下)|洞见

本文首发于InfoQ: http://www.infoq.com/cn/articles/devops--build-self-service-continuo...

2753
来自专栏云计算D1net

云计算固然好 但挑战依然存在

虽然云计算使用起来非常方便,对于用户来说也具有较好的成本效益,但它在整合和处理数据方面也可能带来新的挑战和要求。 ? 云计算的出现,让企业在投资IT和商业应用时...

3457
来自专栏大数据文摘

业界 | Python爆红的六大原因

1893
来自专栏云计算D1net

观点:混合云优势难以实现

混合云听起来很酷,或者至少三年前可以这样来看吧。响应混合云的流行,企业硬件和软件厂商都用云洗白了自己的技术,将其作为私有云提供出来,而这也成为混合云的一部分。 ...

2154
来自专栏cloudskyme

云计算产生的背景

1.经济方面 (1) 全球化经济一体化 (2)日益复杂的世界和不可确定性的黑天鹅现象 (3) 需求是云计算发展的动力。 2.社会层面 (1)数字一代的崛起 (2...

2.3K14
来自专栏顾宇的研习笔记

推进微服务落地的 7 个步骤

微服务实施常被忽视的 5 个难点中描述了实施微服务常见的主要阻碍。本文针对前文提到的5个难点提出了 7 个步骤。每个步骤分别包含了管理和技术两方面的建议。

1132
来自专栏EAWorld

持续交付流水线为何对软件开发如此重要?

作者 Andrew Phillips 译者 张斌 持续交付(CD)是一种软件策略,它使企业尽可能快速有效地向用户提供新特性。持续交付的核心思想是创建可重复、可靠...

2883
来自专栏软件成本造价评估

软件成本造价之什么是软件项目的工作量?

  在软件成本造价过程中,软件项目的工作量是很多开发组织进行估算的主要对象。那么,什么是软件项目的工作量呢?它都包括哪些内容呢?   一个软件项目的工作...

932
来自专栏畅所欲言

【畅所欲言】专栏已开通

46210
来自专栏DevOps时代的专栏

公有云上基于微服务架构 SAAS 产品研发实践

4553

扫码关注云+社区