REL 8: 如何实施更改?
要部署新功能,必须对更改加以控制,以确保工作负载和操作环境正在运行已知的软件,并以可预测的方式进行修补和替换。如果此类更改不受控制,您将难以预测这些更改的影响,或难以处理由它们引发的问题。
资源
 AWS Summit 2019: CI/CD on AWS
 What Is AWS CodePipeline?
 What Is CodeDeploy?
 Overview of a Blue/Green Deployment
 Deploying Serverless Applications Gradually
 The Amazon Builders' Library: Ensuring rollback safety during deployments
 The Amazon Builders' Library: Going faster with continuous delivery
 Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
 CanaryRelease
 AWS Marketplace: products that can be used to automate your deployments
 APN Partner: partners that can help you create automated deployment solutions
最佳实践:
- 
               对部署等标准活动使用运行手册: 运行手册是用于实现特定结果的预定义步骤。使用运行手册执行标准活动,无论这些活动是手动还是自动执行。例如部署工作负载,对其进行修补,或修改 DNS。 
- 
               将功能测试作为部署的一部分进行集成: 功能测试作为自动化部署的一部分运行。若未满足成功条件,则相关管道会中止或回滚。 
- 
               将弹性测试作为部署的一部分进行集成: 将弹性测试(混沌工程的一部分)作为预生产环境中自动化部署管道的一部分执行。 
- 
               使用不可变基础设施部署: 这种模式要求在生产系统上不会就地出现更新、安全补丁或配置更改。需要更改时,会在新的基础设施上构建架构,并将其部署到生产环境中。 
- 
               使用自动化功能部署更改: 自动部署与修补以消除负面影响。 
改进计划
对部署等标准活动使用运行手册
AWS Well-Architected Framework: Concepts: Runbook
- 使用 AWS CloudFormation(或受信任的第三方提供商)定义您的基础设施。
 What is AWS CloudFormation?
- 使用良好的软件设计原则创建单个解耦模板。
                     - 确定实施的权限、模板和责任方
 Controlling access with AWS Identity and Access Management
- 使用源代码控制(例如 AWS CodeCommit 或受信任的第三方工具)进行版本控制。
 What is AWS CodeCommit?
 
- 确定实施的权限、模板和责任方
将功能测试作为部署的一部分进行集成
- 当在 AWS CodePipeline 中建模的软件发布管道执行“测试操作”时,调用 AWS CodeBuild。此功能使您能够对代码轻松运行各种测试,例如单元测试、静态代码分析和集成测试。
 AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
- 使用 AWS Marketplace 解决方案,将自动化测试作为软件交付管道的一部分执行。
 Software test automation
将弹性测试作为部署的一部分进行集成
- 弹性测试会注入故障或资源降级,以此评估您的工作负载能否以预期弹性做出响应
 Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
- 这些测试可以在自动部署管道的预生产环境中定期执行。
- 他们还应作为计划实际演练的一部分在生产环境中运行。
- 使用混沌工程原理,提出有关工作负载在各种破坏情况下如何表现的假设,然后使用弹性测试验证您的假设。
 Principles of Chaos Engineering
使用不可变基础设施部署
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
CanaryRelease
使用自动化功能部署更改
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
- 使用 AWS CodePipeline(或受信任的第三方产品)定义和执行您的管道。
                     - 将管道配置为在将更改实施到代码存储库后开始。
 What is AWS CodePipeline?
- 使用 Amazon Simple Notification Service (SNS) 和 Amazon Simple Email Service (SES) 发送有关管道中的问题的通知,或与
                           Amazon Chime 等团队聊天工具集成。
 What is Amazon Simple Notification Service?
 What is Amazon SES?
 What is Amazon Chime?
 Automate chat messages with webhooks.
 
- 将管道配置为在将更改实施到代码存储库后开始。
