🖥

AWS ECS + CodeDeploy - blue/green デプロイ と Canaryデプロイの違い ( ECSAllAtOnce

2024/03/13に公開

疑問

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デプロイだと説明されている。

https://cloud.google.com/architecture/application-deployment-and-testing-strategies?hl=ja

image

https://www.docswell.com/s/TIER_IV/5388GV-2023-03-17-093717#p18

image

https://garafu.blogspot.com/2018/11/release-strategy.html#blue-green

広義のblue/greenデプロイ

徐々にトラフィックを転送する方式をblue/greenデプロイだと説明しているページもある。

ブルーグリーン・デプロイメントは、ユーザートラフィックを、アプリケーションやマイクロサービスの以前のバージョンから、ほぼ同一の新しいリリースに徐々に転送するアプリケーション・リリースモデルで、両バージョンが稼働中の状態で実施するものです。

https://www.redhat.com/ja/topics/devops/what-is-blue-green-deployment

ブルーグリーンデプロイメントという概念は、要約すると常に(少なくとも)2つのアプリケーションインスタンスが実行されることを意味しています。新しいバージョンがリリースされたとき一方のインスタンスにのみリリースされ、残りのインスタンスは旧バージョンで動作します。最初は新しいバージョンへのアクセスは完全に制限され、徐々に一部のユーザーに公開されて新しいリリースの信頼性が確保されます。

https://www.infoq.com/jp/articles/blue-green-deployments/

CodeDeployの設定

CodeDeploy > デプロイグループ > デプロイの設定 を見ると以下の選択肢がある
この中でトラフィックを少しずつ移行させて行くのが線形リリース/カナリアリリースという扱いらしい

https://aws.amazon.com/jp/blogs/news/aws-codedeploy-now-supports-linear-and-canary-deployments-for-amazon-ecs/

各種デプロイ方法の違い

AWSではないがGoogleCloudのガイド「アプリケーションのデプロイとテストの戦略」がまとめられていて分かりやすい。

https://cloud.google.com/architecture/application-deployment-and-testing-strategies?hl=ja

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-08-29

Discussion