持续交付心得(1):用自动化技术实现部署流水线,持续交付让软件发布安全、可靠、高效

软件发布的重要性

软件研发,最重要的是如何以最快的速度将可用的软件交付给用户。

持续交付,Continuous Delivery,简称CD,它以持续集成为基础,提出“部署流水线”的模式,采用一些技术、工具和方法,尽可能将软件交付过程(包括构建、部署、测试、发布)自动化,从而找到一种高效、快速、可靠的方式交付高质量且有价值的软件的方法。

持续交付,作为DevOps中软件交付的最佳实践,它涉及到哪些知识?需要怎样实施才能高效?有哪些工具可以推荐?下面,红哥打算用10-20篇左右的博文来系统的探究这些问题,并记录下探究的心得。

软件交付的问题

通常,软件发布,或者说软件交付的时候,往往是软件开发人员和发布人员“担心受怕”、“战战兢兢”的时刻,因为软件发布过程存在很多的未知因素和不确定性,发布失败的风险很大。

1、如何快速将软件交付给用户?

2、怎样使交付过程更加可靠有效?

3、有什么方法可以实现可靠、迅速、频繁、低风险且可预见过程的软件发布?

是软件软件从业人员希望解决的问题。

软件交付的常见模式:

(1)手工部署软件

(2)在开发完成之后才开始尝试部署(部署在测试环境、试运行环境等类生产环境)

(3)手工管理生产环境的配置

以上这些软件交付的模式,存在很多固有的缺陷,导致软件发布的高风险。

是否可以做得更好?

“部署流水线”,将构建、测试、部署的过程高度自动化,并结合全面的配置管理,实现一键式软件发布,可以大大提高软件的交付效率和交付质量,降低软件发布失败的风险。

 

几个概念

部署流水线:应用程序从构建、部署、测试到发布整个过程的自动化实现。整个过程对所有人可见,自动化过程可以尽早的发现问题并反馈,促进问题的及时解决,团队可以通过部署流水线在任意环境上部署和发布任意版本。

周期时间:从决定进行需求开发(或进行变更)时,至用户可以使用软件特性为止的时间周期。

精益制造:聚焦于消除浪费,减少成本,缩短产品上线时间,确保快速的交付高质量的软件。

候选发布版本:每次代码提交,每次变更,都可能产生一个可发布的版本。

 

部署流水线的优势

(1)授权团队

部署流水线使软件交付过程成为一个“拉动(Pull)”流程,使测试人员、运维人员、支持服务人员能够做到自服务,即他们可以自行决定将哪个版本发布到哪个环境上。

团队成员可以更好的控制工作节奏,改善工作质量,团队协作更好,让软件的质量更高。

(2)减少错误

自动化减少了人为活动引入缺陷的几率。如需求提出、需求理解、软件配置等

(3)缓解压力

频繁的发布,可以多次验证交付的过程,降低一次发布失败的风险,提高发布人员的信息,从而可以缓解压力。

(4)部署的灵活性

(5)多加练习,使其完美

 

软件交付的原则(实践)

(1)为软件的发布创造一个可重复且可靠的过程

(2)将几乎所有事情都自动化

(3)将所有的东西都纳入版本控制

(4)提前并频繁的做哪些痛苦的事

(5)内建质量

(6)DONE即“已发布”,或呈“随时待命“的可发布状态

(7)交付是每个人的责任

(8)持续改进交付过程

 

 

 

发布了44 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/wangyinghong_2013/article/details/90452688