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.
- 変更がコードリポジトリにコミットされた時点で処理を開始するようにパイプラインを設定します。