持续部署

menu icon

持续部署

本指南探讨了持续部署战略的概念以及该战略如何支持企业可扩展性。

什么是持续部署?

持续部署是一种软件开发战略,方法是将应用的代码变更自动发布到生产环境中。 这种自动化由一系列预定义的测试驱动。 一旦新更新通过这些测试,系统会将更新直接推送到软件的用户。

持续部署为希望扩展其应用和 IT 产品组合的企业带来了多种益处。 首先,这种方法通过消除编码与实现客户价值之间的时间差(通常要数天、数周甚至数月),加快产品推向市场的速度。

要实现这一目标,回归测试必须采取自动化方法,消除成本不菲的手动回归测试。 对于大多数变更而言,这种战略也有助于消除组织用于管理大量生产变更(包括发布规划和批准会议)的系统。

持续部署 vs …

持续部署 vs. 持续交付

虽然 "持续部署 " 和 "持续交付" 听起来差不多,但实际上是有关频繁发布的两种不同的方法。

持续交付是软件开发实践,在软件构建过程中,能够随时发布到生产环境中。 为实现这一目标,持续交付模型包含类似于生产的测试环境。 在持续交付解决方案中执行的新构建将自动部署到自动质量保证测试环境中,以测试任何数量的错误和不一致。 在代码通过所有测试之后,持续交付需要人为干预进行批准,以部署到生产环境中。 然后,部署本身由自动化功能执行。

持续部署使自动化程度更上一层楼,消除了人工干预的需求。 测试和开发人员被认为值得信任,因此不需要生产发行版的审批过程。 如果测试通过,那么新代码就被视为已获批准,将立即执行生产部署。

持续部署是持续交付的自然结果。 最终,我们会发现人工审批基本没什么价值,只会拖慢开发流程。 到那时,人工审批就退出舞台,持续交付就变成了持续部署。

请观看 Eric Minick 的以下视频,了解有关持续部署和持续交付之间差异的更多信息:

持续交付 vs. 持续部署 (07:36)

持续部署 vs. 持续集成

确保无缝持续部署的另一个关键要素是持续集成。 为了使部署过程实现自动化,在所有项目中工作的开发人员都需要采取有效的方式,就发生的变更进行沟通。 持续集成可以做到这一点。

通常,在从事同一软件开发项目时,开发人员会单独处理代码主分支的各个副本。 但是,在开发人员将其变更合并到主代码库后,可能会发生功能问题和错误;当开发人员彼此独立工作时,尤其如此。 他们独立工作的时间越长,风险越高。

通过持续集成,每个人每天至少将其代码变更合并到存储库一次。 出现更新时,会运行自动构建测试,以确保任何变更与主分支保持兼容。 此操作作为一种故障保护机制,有助于尽快发现集成问题。

要进一步了解持续集成与持续交付和持续部署有何不同,请参阅博客帖子“持续集成 vs. 持续交付:快速说明”和视频“什么是持续集成?”:

什么是持续集成 (06:20)

持续部署工具

为了持续开发和部署高质量的软件改进,开发人员必须使用适合的工具,构建有效的 DevOps 实践。 这样做不仅可以确保开发部门和业务部门之间的高效沟通,而且能够最大程度减少或消除软件交付管道中的错误。

以下是持续部署工作流程中使用的一些最关键的工具:

  • 版本控制:版本控制通过跟踪对特定项目资产的修订,帮助实施持续集成。 版本控制也称为“修订”或“源代码”控制,有助于提高项目更新和变更的可视性,同时帮助团队开展协作,而不用考虑工作的地点和时间。
  • 代码评审:顾名思义,“代码评审”是使用工具来测试当前源代码的过程。 代码评审通过查找编码中的错误,帮助开发人员在部署更新之前解决这些问题,从而提高软件的完整性。
  • 持续集成 (CI):CI 是持续部署的关键组成部分,当多个开发人员从事同一项目时,这种方法有助于最大程度消除开发障碍。 用户可选择各种专有和开源的 CI 工具,以应对企业软件部署的独特复杂性。
  • 配置管理:配置管理是确保所有软件和硬件保持一致状态的战略和准则。 这包括所有服务器存储器网络和软件的正确配置和自动化。
  • 发布自动化:对于自动执行驱动持续部署所需的所有活动而言,应用发布自动化(或应用发布编排)非常重要。 编排工具将流程相互连接,以确保开发人员遵循所有必要的步骤,将新变更推送到生产环境。 这些工具与配置管理流程密切配合,以确保所有项目环境都已正确配置,能够以最高性能水平运行。
  • 基础架构监控:在运行持续部署模型时,必须能够直观呈现测试环境中的数据,这非常重要。 基础架构监控工具可帮助您分析应用性能,以了解所作的变更是否具有正面或负面影响。

与 Kubernetes 配合使用

Kubernetes 是一种优秀的开源解决方案,在开发持续部署管道时使用。 由于其高度灵活、符合逻辑而且直观易懂的用户界面,Kubernetes 有助于减少服务器使用限制和停机方面的常见问题,同时支持现代基础架构和多云部署。

Kubernetes 有助于提高 DevOps 流程的敏捷性。 由于其模块化设计,Kubernetes 能够更改服务中的各个 pod,并且能够在 pod 间的无缝过渡。 这种灵活性可帮助开发团队避免服务器宕机,在运行微服务时实现最大的资源利用率。 Kubernetes 还是一种极其可靠的平台,首先检测应用和服务的就绪情况和总体运行状况,然后再将其部署到公共环境。

覆盖各种不同应用的持续部署

在创建持续交付或持续部署基础架构时,必须提供合适的企业解决方案,以确保企业相信自己需要自动执行软件测试和部署过程。 IBM UrbanCode Deploy 是一个应用部署自动化平台,提供企业所需的可视性、可跟踪性和审计功能,在一个优化的软件包中满足企业的软件开发需求。

多云部署

使用 UrbanCode Deploy 的 Easy Process 和 Blueprint Designer,组织可以创建定制云环境模型,以直观的方式呈现应用如何部署到公有云私有云混合云。 Blueprint Designer 支持用户创建、更新和分解全栈计算环境,同时启用完整的云编排功能。 可对所有环境进行配置,以自动或按需部署应用组件。

分布式自动化

UrbanCode Deploy 是一种高度可扩展的解决方案,支持所有任务关键型应用和服务的动态部署。 UrbanCode Deploy 的架构旨在满足企业在多个数据中心部署的独特需求,支持主服务器集群,并使用轻量级部署以提供即时可用的服务。

质量关卡和审批

能否依靠自动化测试环境的准确性,对于成功实现持续部署绝对至关重要。 但是,对于某些环境,必须创建某些条件以标记人工审批,以确保在适当的时候将适当的信息推送到生产环境。 UrbanCode Deploy 包含部署审批和关卡,使管理员能够对其持续部署过程拥有更强的控制、可视性和审计功能。

经过测试的集成

虽然 UrbanCode Deploy 支持您使用自己的脚本,但现成的插件使部署过程更容易设计和管理。 通过使用经过测试的集成,开发人员可利用已证明的预先构建的自动化。 这取代了专门为 UrbanCode Deploy 创建定制脚本的需求。

IBM UrbanCode Deploy 具有高级流程编排和协作工具,使企业能够在一个易于使用且可定制的仪表板中组织所有部署需求。 无论是在本地、外部还是数以千计的受管服务器上部署应用,UrbanCode Deploy 都可以为您提供所需的所有解决方案,以确保整个企业范围的持续交付和快速部署。

要了解有关 IBM UrbanCode Deploy 的更多信息,以及它如何推动部署过程的发展,请探索 IBM 的部署自动化解决方案

持续部署和 IBM Cloud

自动将代码变更发布到生产环境中的能力有助于显著加快产品上市速度。 您可以使用 IBM 工具以及与第三方和开源插件的集成做到这一点。 IBM 流程和工具可帮助您实现企业在云之旅中所面临的最具挑战性的 DevOps 计划 - 构建应用以及实现现代化

采取下一步行动:

立即开始使用 IBM Cloud 帐户