ECSのデプロイ方法についてまとめました

こんにちは、西海です。
ECSについて勉強する中で気になったECSデプロイ方法についてまとめます。

デプロイ方法の種類

ECSのデプロイ方法には以下の3つが存在します。
・ローリングアップデート
・Blue/Greenデプロイ
・外部デプロイ

特徴

それぞれの方法の特徴は以下の通りです。

ローリングアップデート

ECSで標準となるデプロイ方法。
実行中のタスクを新しいタスクに置き換える形でデプロイを実行する。
置き換えるタスクの数は、次の2つのパラメータで制御する。

・minimumHealthyPercent
デプロイ時に稼働させたままにするタスクの最小の割合を設定する。
例)タスク稼働数4(稼働率100%)で設定値50%の場合、稼働率50%を維持するために必要なタスク2個を維持したまま、残りのタスク2個を置き換えます。

・maximumPercent
デプロイ時に稼働中のタスク数と新たに稼働するタスク数の合計の割合を設定する。
例)タスク稼働数4(稼働率100%)で設定値200%の場合、稼働率200%まではタスクを増やせる。そのため追加で新規のタスク4個を起動することができる。

デプロイが失敗した場合、次の方法を組み合わせることでデプロイを中断しロールバックすることができる。
・デプロイサーキットブレーカーによる障害検知
・CloudWatch アラームによる障害検知

Blue/Greenデプロイ

デプロイ環境をBlue(旧環境)とGreen環境(新環境)の2つ用意し、AWS CodeDeployとELBを使用してデプロイする方法。
Blue環境が存在する状態で新しい環境であるGreen環境を別途作成し、トラフィックを切り替えることで新しい環境をデプロイする。
トラフィックを切り替える方法は、次の3つのパターンがある。

・Canary(カナリアリリース)
最初に設定した値の割合だけトラフィックを切り替え、その後一定時間経過後に残りのトラフィックを切り替える方法。
最初に切り替えるトラフィックの割合や残りのトラフィックを切り替えるまでの時間は自分で設定するか、既存のセットを指定することができる。
例)ECSCanary10Percent5Minutes
最初に10%のトラフィックを切り替え、その5分後に残り90%のトラフィックを切り替える。

・Linear(リニアリリース)
最初に設定した値の割合だけトラフィックを切り替え、その後段階的に同じ割合だけトラフィックを切り替えていく方法。
こちらもトラフィックの割合や残りのトラフィックを切り替えるまでの時間はCanaryと同様に設定可能
例)Linear10PercentEvery1Minutes
最初に10%のトラフィックを切り替え、その3分毎に10%ずつトラフィックを切り替える。

・AllatOnce(一括リリース)
Blue環境からGreen環境へ一度でトラフィックを切り替える方法。切り替えにかかる時間が短いが、バグや障害が発生した際は全体に影響がでる可能性がある。

外部デプロイ

ECSサービスのデプロイ管理をAWSに任せず、ユーザーまたはサードパーティのツールで制御する方法。
他2つのデプロイ方法と異なり、ECSサービスは自動でタスクセットを切り替えたりしません。代わりに手動またはスクリプトによる操作が必要となる。

まとめ

ECSデプロイ方法については、AWS SAA/SAPやDOPの勉強時に問題として出てきたため、なんとなく理解してはいました。
ただ、今回各方法をまとめることで特徴をより理解できたと思います。
次は、Blue/Greenデプロイについて実際に環境を構築して動作を確認しようと思います。

参考

タスクを置き換えて Amazon ECS サービスをデプロイする

デプロイ前に Amazon ECS サービスの状態を検証する

改めてECSのデプロイ方法を整理する

Last modified: 2025-07-14

Author