帮助:什么是持续交付

以前,我们 告诉 关于持续集成(CI)。 让我们继续持续交付。 这是一套软件开发方法。 它有助于确保您的代码已准备好部署。

帮助:什么是持续交付
/Pixabay/ 蓝鹦鹉 / PL

故事

持续交付一词可以追溯到 敏捷宣言 从 2001 年开始就列出了基本原则:“首要任务是通过持续交付最新软件来解决客户问题。”

2010 年,Jez Humble 和 David Farley 发行 这本书 通过持续交付。 据作者称,CD 补充了该方法 持续整合 并允许您简化部署代码的准备工作。

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

现在这种方法仍然是最流行的方法之一。 根据 2018 年 IT 社区 DevOps 和 Jenkins 社区参与的一项研究, 使用 超过一千名受访者中的一半。

持续交付如何运作?

CD 基础是代码部署的准备情况。 为了完成此任务,使用了准备软件发布过程的自动化。 它应该是跨不同开发环境的标准,这将有助于快速找到薄弱环节并进行优化。 例如,加快测试速度。

持续交付流程的示例如下所示:

帮助:什么是持续交付

如果持续集成方法负责前两个阶段的自动化,那么持续交付则负责后两个阶段。 除其他外,通过系统确保过程稳定性 配置管理。 他们监视基础设施、数据库和依赖项的变化。 部署本身可以自动化或手动完成。

对该过程提出以下要求:

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

在 CD 中通常使用 代码审查,以及收集客户意见-原则 黑暗发射。 一项新功能首先向一小部分用户发布——他们与产品交互的体验有助于发现内部测试期间没有注意到的缺点和错误。

有什么好处

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

此外,根据 2016 年的一项研究(第 28 页) 文件) - 实施 CD 的公司解决信息安全问题的速度比未使用该方法的公司快 50%。 在某种程度上,这种差异可以通过流程自动化工具的性能来解释。

另一个优点是发布速度加快。 芬兰开发工作室的持续交付 帮助了 代码汇编速度提高 25%。

潜在的困难

第一个也是主要的问题是需要重建熟悉的流程。 为了展示新方法的好处,值得逐渐切换到 CD,而不是从劳动密集型应用程序开始。

第二个潜在问题是大量的代码分支。 “分支”的后果是冲突频繁,进一步浪费大量时间。 可能的解决方案 - 方法 没有分支机构.

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

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

帮助:什么是持续交付
/flickr/ 格1969 / 创用CC BY-SA

工具

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

  • 光碟 — 用于 Java 和 JRuby on Rails 持续交付的服务器。 允许您控制整个应用程序交付过程:构建-测试-发布。 该工具根据 Apache 2.0 许可证分发。 你可以在官方网站上找到它 设置指南.
  • Capistrano的 — 用于创建脚本的框架,可自动部署 Ruby、Java 或 PHP 中的应用程序。 Capistrano 能够通过 SSH 连接到远程计算机来执行命令。 与其他持续集成和交付工具配合使用,例如 Integrity CI 服务器。
  • 摇篮 是一个多平台工具,可以自动化整个应用程序开发周期。 Gradle 可与 Java、Python、C/C++、Scala 等配合使用。与 Eclipse、IntelliJ 和 Jenkins 集成。
  • 无人机 - Go语言的CD平台。 无人机可以部署在本地或云端。 该工具构建在容器之上,并使用 YAML 文件来管理它们。
  • 三角帆 — 多云系统中持续代码交付的平台。 该工具由 Netflix 开发,谷歌工程师在该工具的开发过程中发挥了重要作用。 安装说明 在官方网站上找到它.

在我们的企业博客上阅读什么:

来源: habr.com

添加评论