如何实现DevOps之持续交付?

DevOps的具体实施必须基于敏捷等软件开发理念,而在这些理念中持续交付尤显得至关重要。

如何实现DevOps之持续交付?

软件交付的挑战

在互联网高速发展的过程中,互联网业务具有客户范围广、个体差异大、个性化需求多、变化快等特点,基于这些业务特点,软件交付面临着各种各样的困难,比如:

1、各环节能力没有自动化拉通,交付周期长;

2、问题不能及早发现,不断向后积累,交付质量差;

3、解决问题不能自动化验证,效率低;

4、研发过程缺乏统一视角,沟通效率差,导致大量浪费和返工。

在这样的情况下,客户还期望快速并且高质量交付,为此软件企业和个人将面临效率与质量的双重挑战,这就要求我们在DevOps实践过程中必须具备自动化持续交付工作流。

持续交付

首先,我们需要了解一下持续交付的概念。

在敏捷开发和DevOps中,持续交付至关重要。持续交付理念最早来源于敏捷,意为尽早持续交付有价值的软件让客户满意,提前并且频繁地做让你痛苦的事情(以降低风险)。

如何实现DevOps之持续交付?

持续交付本质是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件稳定、持续地保持在随时可以释出的状况。它的目标在于让软件的建置、测试和释出变得更快以及更频繁。这种方式可以减少软件开发的成本和时间,减少风险。通俗来讲,持续交付要实现这样一个目标:产品团队具备通过重复、可靠的研发过程(自动化),采取小批量频繁的部署或发布,尽可能早地获取质量反馈,使版本快速达到随时可交付状态。

持续交付能够带来以下好处:

1、快速发布,能够应对业务需求,并更快地实现软件价值;

2、缩短编码、测试、上线、交付的频繁迭代周期,同时获得迅速反馈;

3、高质量的软件发布标准,整个交付过程标准化、可靠、可重复;

4、整个交付过程进度可视化,方便团队人员了解项目成熟度;

5、更先进的团队协作方式,从需求分析,产品的用户体验到交互、设计、开发、测试、运维等角色密切协作,相比传统的瀑布式软件团队,更少浪费。

实施持续交付的主要措施:

1、“小批量/小粒度频繁的持续部署或发布”;

2、“为软件的开发到发布创建一个可重复且可靠的自动化过程”;

3、“每次修改都能经过一次构建、测试、部署、发布完整高效的自动化验证过程,实现高速频繁验证,快速问题闭环”。

持续交付的最佳实践:

1、可视化:团队中每一个成员对交付过程中的构建测试部署发布等环节信息都能及时接收和处理以保证交付高效协同;

2、反馈:团队成员能第一时间收到问题反馈以便尽可能快的修复;

3、持续部署:打造持续交付流水线,保障每一个版本的应用程序可以快速部署到任意环境中。

持续交付流水线

具体实施持续交付需要打造自动化持续交付流水线。

打造持续交付流水线能够拉通Dev&Ops,保证研发过程高效、可靠、可重复、支撑企业小、频、快的交付价值特性。

流水线包含几个关键步骤:构建、研发环境、测试环境和类生产环境等,构建阶段包含代码检查、构建,研发环境、测试环境、类生产环境包含部署及自动化测试等任务。

打造持续交付流水线有如下几个要求:

1、小迭代交付:月迭代->周/双周迭代,提升交付频率和节奏,高效运转。按小批量特性包/增量包(功能点、story)持续快速交付,实现小批量增量需求分析、设计、开发、精准快速验证,更容易暴露设计上的耦合和团队开发,测试间的协同问题;

2、流水线自动化执行:建立代码到版本交付的自动化流水线,实现高速流转;

3、流水线可视化:自动化度量质量、效率和CycleTime,及时反应流水线运行状况,实现可视化自循环驱动;

4、分层质量防护: 利用流水线智能门禁功能,分层分级设置质量门禁,当质量不达标时及时终止交付过程,快速发现问题,提升交付质量;

5、保证缺陷发现前移:问题累积最后发现。提前发现问题。


分享到:


相關文章: