REL08-BP05 使用自动化功能部署更改 - AWS Well-Architected 框架

REL08-BP05 使用自动化功能部署更改

自动执行部署与修补来消除负面影响。

对许多组织来说,对生产系统进行变更是风险最大的工作之一。除了软件解决的业务问题外,我们认为部署也是亟待解决的首要问题。如今,这意味着根据实际情况在操作中使用自动化,包括测试和部署更改、添加或删除容量以及迁移数据。

期望结果:通过广泛的预生产测试、自动回滚和错开生产部署,将自动化部署安全性融入发布流程。这种自动化尽可能地减少了部署失败对生产造成的潜在影响,开发人员不再需要主动关注部署到生产的情况。

常见反模式:

  • 手动执行更改。

  • 跳过自动化流程中的步骤,采用手动应急工作流。

  • 不遵循既定的计划和流程,急于求成。

  • 在不预留烘焙时间的情况下,快速执行了后续部署。

建立此最佳实践的好处:当使用自动化来部署所有更改时,可以消除引入人为错误的可能性,并提供在更改生产环境之前进行测试的能力。在生产推送之前执行此流程,以便验证您的计划是否能完成。此外,自动回滚到发布流程可以识别生产问题,并将您的工作负载恢复到以前的正常工作运行状态。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

实现部署管道的自动化。借助部署管道,您可以调用自动化测试和异常检测,并且能够在生产部署前的某个步骤停止管道,或自动回滚更改。其中必不可少的是采用持续集成和持续交付/部署(CI/CD)文化,这样一来,提交或代码更改会经过各种自动化阶段(完成构建和测试,并最终部署至生产环境中)。

虽然传统观点认为,您应该让人来处理循环中最困难的操作程序,但出于相同的原因,我们建议您将最困难的程序自动化。

实施步骤

您可以按照以下步骤实现自动化部署,从而消除手动操作:

  • 设置代码存储库来安全地存储代码:使用 AWS CodeCommit 创建基于 Git 的安全存储库。

  • 配置持续集成服务来编译源代码、运行测试和创建部署构件:要为此目的设置构建项目,请参阅 Getting started with AWS CodeBuild using the console

  • 设置部署服务来自动执行应用程序部署并处理复杂的应用程序更新,无需依赖容易出错的人工部署过程:AWS CodeDeploy 可自动将软件部署到各种计算服务,例如 Amazon EC2、AWS FargateAWS Lambda 和本地服务器。要配置这些步骤,请参阅 Getting started with CodeDeploy

  • 设置持续交付服务,实现发布管道的自动化,从而带来更快、更可靠的应用程序和基础设施更新:请考虑使用 AWS CodePipeline 来帮助您实现发布管道的自动化。有关更多详细信息,请参阅 CodePipeline tutorials

资源

相关最佳实践:

相关文档:

相关视频: