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.
- 設定管道以在對程式碼儲存器提交變更時啟動。