Blue/Greenデプロイメントの構築
1. 目的
CI/CDパイプラインの構築で構築したCI/CDパイプラインではローリングアップデートで本番にデプロイしているため、新バージョンに不具合があってもデプロイ自体は進行してしまい、サービス全体が劣化したり、切り戻しに時間がかかったりするリスクがあります。
そこで、Blue/Greenデプロイメントを導入し、新旧2つの環境を同時に稼働させて検証してから本番トラフィックを切り替える仕組みを構築してみましょう。これにより、ダウンタイムなしのデプロイと、検証失敗時の自動ロールバックを両立できます。
2. やるべきこと
- 採用するBlue/Greenデプロイメントの方式と、ロールバック・承認の運用方針を検討してみましょう
- Blue/Greenデプロイメントを構築してみましょう
- テスト環境(Green)に対する自動検証と、検証失敗時の自動ロールバックの仕組みを組み込んでみましょう(Lambdaライフサイクルフックを使う構成が基本ですが、他の実装方式を選んでも構いません)
- 重要な切り替えに人間の判断を挟むため、手動承認のステップも組み込んでみましょう
3. 余裕があれば
- 本番切り替え時にトラフィックを段階的にシフトするカナリアリリースまで実装してみましょう
- ChatOpsの導入課題と組み合わせ、本番切り替えの承認操作やデプロイ通知をチャットツール上で完結させてみましょう
- E2Eテストの導入課題と組み合わせ、E2Eテストの結果に応じて本番切り替えを自動判定する仕組みまで作り込んでみましょう
4. ツール・機能の候補
※ 以下のすべてを使う必要はなく、目的に合わせて適切なものを選んでみましょう。ここに無いツールを使っても構いません。
| ツール・機能名 | 概要 |
|---|---|
| ECS native Blue/Green | ECS標準機能でBlue/Greenデプロイを実現できる |
| AWS CodeDeploy | デプロイメントサービス。Blue/Greenやカナリアリリースに対応 |
| AWS Lambda | ECSのライフサイクルフックとして自動テスト・ロールバック判定を実装 |
| Amazon DynamoDB | 手動承認の状態管理(承認待ち・承認済み)に利用 |
5. 参考講座
6. 目安期間
2〜3週間