疑問
AWS ECS への blue/greenデプロイ ( CodeDeployのデプロイ設定 ) で ECSAllAtOnce
という設定には何か意味があるのか。
そもそもblueからgreenへ少しずつトラフィックを移行させていくのがblue/greenデプロイではないのか。
ECSAllAtOnce
で一度にトラフィックを切り替える場合はそもそもblue/greenデプロイとしてのメリットがあるのだろうか。
結論
次のように理解した。
- 狭義のblue/greenデプロイは トラフィックをいちどにgreenに切り替えるもの ( ECSAllAtOnce )
- 広義のblue/greenデプロイは ECSAllAtOnce / Linear / Canary を全て含むもの
- トラフィックを少しずつblueからgreeenに切り替える方式は Linear / Canary と呼ばれる
世間の用語が混乱しているような気がした。
狭義のblue/greenデプロイ
次のページでは全てのコンテナでトラフィックを一気に切り替える方式がblue/greenデプロイだと説明されている。
広義のblue/greenデプロイ
徐々にトラフィックを転送する方式をblue/greenデプロイだと説明しているページもある。
ブルーグリーン・デプロイメントは、ユーザートラフィックを、アプリケーションやマイクロサービスの以前のバージョンから、ほぼ同一の新しいリリースに徐々に転送するアプリケーション・リリースモデルで、両バージョンが稼働中の状態で実施するものです。
ブルーグリーンデプロイメントという概念は、要約すると常に(少なくとも)2つのアプリケーションインスタンスが実行されることを意味しています。新しいバージョンがリリースされたとき一方のインスタンスにのみリリースされ、残りのインスタンスは旧バージョンで動作します。最初は新しいバージョンへのアクセスは完全に制限され、徐々に一部のユーザーに公開されて新しいリリースの信頼性が確保されます。
CodeDeployの設定
CodeDeploy > デプロイグループ > デプロイの設定 を見ると以下の選択肢がある
この中でトラフィックを少しずつ移行させて行くのが線形リリース/カナリアリリースという扱いらしい
各種デプロイ方法の違い
AWSではないがGoogleCloudのガイド「アプリケーションのデプロイとテストの戦略」がまとめられていて分かりやすい。
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。