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.
- 将管道配置为在将更改实施到代码存储库后开始。