0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

インフラ屋さん向けECSデプロイ戦略(新種含む)のまとめ

0
Posted at

概要

説明のたびにmarkdownのファイルを投げつk・・提示するよりは外部に公開しておいたほうがよいよねという話から執筆しています。

類似の記事はいっぱいあると思うので、B/Gって何?とかより詳しい説明はそちらをお求めください。

デプロイ戦略の変化

2025年7月18日のリリース より前と後について、インフラの人向けに terraform(おそらくCDKでも同じだと思うけど) のdeployment_controller.typedeployment_configurationの組み合わせを用いて説明します。

2025年7月以前

2025年7月リリース以前のECSデプロイメントコントローラーとストラテジーの組み合わせ一覧:

deployment_controller.type deployment_strategy/configuration 説明 特徴
ECS (デフォルト) ROLLING (デフォルト) ローリングアップデート minimumHealthyPercentmaximumPercentで制御
CODE_DEPLOY CodeDeployDefault.ECSAllAtOnce 一括トラフィック移行 CodeDeployアプリケーション必須
CODE_DEPLOY CodeDeployDefault.ECSLinear* 段階的トラフィック移行 例: Linear10PercentEvery1Minutes
CODE_DEPLOY CodeDeployDefault.ECSCanary* カナリアデプロイ 例: Canary10Percent5Minutes
EXTERNAL (外部ツールで管理) 外部コントローラー TaskSet APIで手動管理
  • ECSコントローラーではROLLINGのみ対応
  • B/G、Linear、CanaryはすべてCODE_DEPLOYコントローラー経由でのみ利用可能

現在

現在採用できるdeployment_controller.typedeployment_configurationの組み合わせの一覧。

deployment_controller.type deployment_strategy 説明 特徴
ECS (デフォルト) ROLLING (デフォルト) ローリングアップデート タスクを順次置き換え。minimumHealthyPercentmaximumPercentで制御
ECS BLUE_GREEN ネイティブB/G(2025年7月新機能) ALB/NLB/ServiceConnect必須。ライフサイクルフック、ベイクタイム対応
ECS LINEAR 段階的トラフィックシフト 指定パーセントずつ段階的にトラフィック移行(例:20%ずつ)
ECS CANARY カナリアデプロイ 最初に小割合、その後残りを移行(例:10%→90%)
CODE_DEPLOY (CodeDeployで設定) CodeDeploy管理のB/G 非推奨。CodeDeployアプリケーション、デプロイメントグループが必要
EXTERNAL (外部ツールで管理) 外部コントローラー TaskSetを手動管理。Jenkins、PipeCDなどのサードパーティツール用
  • かつてはECSネイティブのBLUE_GREEN/LINEAR/CANARYストラテジーは存在しなかった
  • 全この表はAIに作らせていて部を実際に構築して試したわけではないので間違いはあるかもしれないですが、説明したいのはECS+BLUE_GREENのケースについてです、指摘があればコメントにお願いします

ECS+BLUE_GREENのケースについて

B/GやるのにCodeDeployいらないんですって・・・
Code Deployをやろうと思うと信じられないくらいめんどくさかったんですが、それが一切不要になりました。
また、デプロイのためのaws cliのコマンドもローリングアップデートのときと同じです。

# 新しいタスク定義の登録
aws ecs register-task-definition \
  --cli-input-json file://task-definition.json \
  --region us-east-1

# サービスの更新(新しいタスク定義を使用)
aws ecs update-service \
  --cluster my-cluster \
  --service my-service \
  --task-definition my-task:2 \
  --region us-east-1

いろいろ言ってのらりくらり躱してますがまじでCode Deploy作るのめんどくさいので作りたくなかったですが、構築の手間無しでB/Gできると・・・
リリースフローや要件によっては採用たくないネガティヴが消えるかもですね。

採用したくないのは私だけですか、そうですか。

設定に寄ってはローリングアップデートと同じような見た感じの挙動をさせることができるので、まだ検証してませんが次のインフラ構築辺りでコッソリ入れてみようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?