许多公司都在争先恐后地实施持续集成和持续交付(CI/CD)管道,以简化其软件开发工作流程。很少有人采取额外的步骤来自动化持续部署,即使用CI/CD管道将更改持续推送到生产中的做法。可以理解。每天或每小时频繁地将代码推送到生产环境的想法让我不寒而栗。然而,过去几年发生了很多变化,越来越多的DevOps团队正在采用技能、实践和工具来自动化高质量和可靠的部署。本文解释了持续交付和持续部署之间的区别,然后建议devops团队在其CI/CD管道中自动化持续部署之前应该做的五件事。持续交付与持续部署Capgemini的敏捷和DevOps主管KulbirRaina分享了一个帮助我们区分持续交付和持续部署的定义。他说:“持续交付是一个从软件发布到生产的端到端的自动化过程,而持续部署是一个自动化过程,将过程中的软件包通过预测试过程推送到生产,并在生产后继续集成。“自动化生产部署具有更大的风险,因为其结果会影响业务、客户和最终用户。如果devops团队决定自动化部署,则部署过程必须包括持续测试和稳健的错误处理。否则,部署可能会在生产中产生性能问题、不可靠的系统、安全漏洞和错误。SPR软件工程总监MikeSaccotelli补充说:“运行持续交付模型与持续部署模型的组织之间的主要区别在于其构建和部署过程的成熟度和复杂性。”Devops团队可以使用以下清单来准备升级到CI/CD管道以进行持续部署。1.评估业务收益持续部署作为一项原则可以应用于许多应用程序,即使在最受监管的行业中也是如此。Buildkite的联合创始人兼联合CEO蒂姆卢卡斯说:“每个项目都可以采用持续部署,最好的组织设定了一个目标,将尽可能多的项目转移到这种模型上。即使在金融和监管行业,大多数项目都可以采用这种模式。我们甚至看到自动驾驶汽车公司在进行持续部署。”尽管devops团队可以在许多项目中实施持续部署,但问题是,它在哪些方面提供了强大的业务案例和显着的技术优势?经常部署功能和修复的项目,以及现代架构简化自动化的项目,更有可能过渡到持续部署。2.准备开发团队Lucas分享了一些先决条件,这些先决条件在迁移到持续部署模型之前应该成为软件开发过程的一部分。“持续部署是真正的敏捷,是从代码更改到生产的最快方式,”他说。它需要始终将master分支保持在可交付状态、自动化测试和您可以信任和有信心的高质量工具。“寻求自动化持续部署的开发人员的一些开发职责和规则包括:持续测试具有足够的代码覆盖率以确保更改不会产生新的缺陷。针对安全性、性能和其他代码质量问题的静态测试以及动态代码分析工具。承诺左移安全实践,包括围绕API安全的最佳实践。围绕应用程序和微服务的可观察性标准。功能标志,以便可以打开和关闭新功能,或将控制权交给部分用户。Saccotelli补充说:“持续部署预示着更成熟的开发团队对质量代码的理解,以便该过程能够成功。如果代码很差或未经测试,就会创建一个不可靠的系统,并迅速将错误和漏洞推向生产。3.准备运营团队,以便CI/CD管道运行并将新代码部署到生产环境。这是否意味着DevOps团队清楚他们的工作已经完成并且每个人都可以继续下一个版本?没那么快。尽管开发人员为确保构建不会中断、自动化代码测试以及控制在生产中启用哪些代码所做的所有工作,仍然存在某些部署可能导致生产出现问题的风险。监控业务服务、应用程序和系统是devops的一部分运营责任,他们支持持续部署的能力早在部署自动化启用之前就开始了。最佳实践包括以下内容:使用基础设施即代码和容器,以确保开发、测试、生产和其他环境之间的基础设施配置一致。使用应用程序和系统级监控工具,这些工具还可以加载和分析应用程序和微服务创建的可观察性数据。选择适用于从应用程序到微服务和数据存储的AIOps平台在整个堆栈中集成监控、警报和可观察性数据,并将事件关联到可管理的事件中。设置金丝雀版本以控制新部署的切换和流量,并降低更困难的切换策略的风险。拥有一套强大的安全工具,包括API网关、Web应用程序防火墙、容器安全、威胁监控和敏感数据监控,以降低高度动态应用程序环境中的风险。4.跨团队和工具集成ITSM和工作流,即使已经建立有了所有的开发和运营能力,我们还没有完成。假设devops团队提交代码,持续部署将变更转移到生产中,并且应用程序性能监控工具正在运行。正确的devops团队成员多久会收到一次警报,以便他们可以对事件进行分类、调查根本原因并快速解决任何问题?Lucas认为,在转向持续部署时,“不稳定的测试是头号风险”。他列举了不可靠的CI/CD工具、糟糕的生产监控和随叫随到的做法,以及工程和IT之间缺乏真正的合作伙伴关系,这些都是进一步的风险。如果没有监控、AIOps、IT服务管理(ITSM)、敏捷和通信工具之间的工作流和集成,devops团队的响应和问题解决时间可能会落后于他们的部署速度。这种差距会产生压力并削弱开发和运营之间的伙伴关系。最佳实践是确保集成IT工具和工作流,以便DevOps团队可以跟上持续部署引起的任何问题。5.定义基于风险的决策门和KPICopado产品营销总监KristinBaskett提供了持续部署所需的关键要素。“虽然鲁莽的自动化会阻碍系统发展,但正确的自动化可以帮助组织实现真正受益于devops所需的敏捷性和一致性,”她说。当开发人员可以自动集成代码时,协作就会得到改善。通过投资测试自动化和质量门控,组织可以更快地创新,同时降低风险。”除了测试自动化之外,Baskett还提到实施应该扩展到其他风险评估的质量门。当构建触发持续部署时,QualityGate会强制执行业务规则以确定哪些部署可以投入生产,哪些可能需要合规性审查或管理层签字。支持持续部署的其他最佳管理实践包括开发DevOps关键绩效指标(KPI)、规范反馈循环以及制定沟通策略。持续部署可以产生许多业务和技术优势,但纪律严明的DevOps团队和IT组织应确保在使用自动化来提高部署频率之前,他们拥有最佳实践和工具。
