背景:什么是持续交付

之前我们讨论了持续集成(CI)。 继续进行连续交付。 这是一组软件开发方法。 它有助于确保代码已准备好进行部署。


/ PNG / bluebudgie / PL

故事


从2001年开始的敏捷清单中 ,就可以看到连续交付的组合:“优先是使用连续提供相关软件来解决客户问题的方法。”

2010年,Jez Humble和David Farley发布了Continuous Delivery。 这组作者说,该CD是对持续集成方法的补充,使准备部署代码更容易。

该书出版后,这种方法开始流行,并在短短几年内几乎被普遍接受。 根据2014年对600多名开发人员和IT经理的调查 ,97%的技术经理和84%的程序员熟悉持续交付。

现在,这种方法仍然是最受欢迎的方法之一。 根据2018年吸引DevOps和Jenkins社区IT社区的研究超过一千名受访者中有一半使用它。

连续交付的工作方式


CD的基础是部署代码的就绪性。 为了完成此任务,使用了准备发布软件的过程的自动化。 它应该是各种开发环境的标准,这将帮助您快速发现并优化缺点。 例如,加快测试速度。

连续交付过程的示例如下:



如果持续集成方法负责前两个阶段的自动化,则负责接下来的两个阶段-持续交付。 除其他因素外,由于配置管理系统,可确保过程的稳定性。 他们监视基础架构,数据库和依赖项中的更改。 部署本身可以是自动化的,也可以手动完成。

该过程具有以下要求:

  • 有关准备进入生产环境和准备立即发布的信息的可用性(CD工具测试代码,并可以评估发布中更改的影响)。
  • 最终产品的总体责任。 产品团队(经理,开发人员,测试人员)不仅要考虑结果,而且要考虑他们的职责范围(结果是工作版本,该版本可供产品用户使用)。

CD通常使用代码审查暗启动的原理用于收集客户意见。 首先,针对一小部分用户发布了一项新功能-他们与产品互动的经验有助于发现内部测试中未发现的缺陷和错误。

有什么好处


持续交付有助于简化代码部署,这对生产力有积极影响,并减少了员工精疲力尽的可能性。 最终,这降低了总体开发成本。 例如,一张CD帮助惠普团队之一此类成本降低了40%。

此外,根据2016年的一项研究( 文档的第28页),与未使用CD的公司相比,已实施CD的公司在解决IS问题方面的速度提高了50%。 在某种程度上,这种差异可以通过过程自动化工具的工作来解释。

另一个优点是可以加快发布版本。 在芬兰开发工作室中,连续交付有助于将代码汇编速度提高25%。

潜在困难


第一个也是主要的问题是需要重建熟悉的流程。 为了展示这种新方法的好处,值得一开始逐步使用CD,而不是从最耗费人力的应用程序开始。

第二个潜在问题是大量的代码分支。 “分支”的结果是频繁的冲突以及随后的大量时间损失。 一种可能的解决方案是无分支方法。

特别是在某些公司中,主要的困难在于测试-这需要太多时间。 测试结果通常必须手动分析,但是在CD实施的早期阶段并行测试可能是一种解决方案。

您还应该培训员工使用新工具的工作-初步的教育计划将节省开发人员的时间和精力。


/ Flickr / h.ger1969 / CC BY-SA

工具


以下是一些用于持续交付的开放工具:

  • GoCD是用于Java和JRuby on Rails连续交付的服务器。 允许您控制整个应用程序交付过程:构建-测试-发布。 该工具已在Apache 2.0下获得许可。 在官方网站上,您可以找到安装指南
  • Capistrano-用于创建脚本的框架,该脚本可自动以Ruby,Java或PHP部署应用程序。 Capistrano能够在远程计算机上执行命令,并通过SSH连接到它。 与其他持续集成和交付工具(例如Integrity CI服务器)配合使用。
  • Gradle是一个多平台工具,可自动完成整个应用程序开发周期。 Gradle可与Java,Python,C / C ++,Scala等一起使用。与Eclipse,IntelliJ和Jenkins集成在一起。
  • 无人机是Go CD平台。 无人机可以部署在本地或云中。 该工具基于容器构建,并使用YAML文件进行管理。
  • Spinnaker是在多云系统中连续交付代码的平台。 由Netflix开发的Google工具在该工具的开发中扮演着重要角色。 安装说明可在官方网站上找到

在公司博客中阅读的内容:

Source: https://habr.com/ru/post/zh-CN449364/


All Articles