はじめに
Amazon Elastic Container Service (Amazon ECS) でコンテナアプリケーションを運用する際、新しいバージョンのアプリケーションをどのように無停止・安全にリリース(デプロイ)するかは非常に重要な設計ポイントです。
この記事では、デプロイ方法の分類と概要、シナリオを説明していきます。
デプロイ方法の体系
ECSのデプロイ方法は以下のように分類ができます。
- ローリングデプロイ(ECSの標準デプロイ)
- ブルーグリーンデプロイ(AWS CodeDeployを使用する方法)
- 2-1. 一括デプロイ(All-at-once)
- 2-2. カナリアデプロイ(canary)
- 2-3. 線形デプロイ(Linear)
以下の章で、それぞれのデプロイ方法について解説をしていきます。
デプロイ方法の詳細
ローリングデプロイ(ECSの標準デプロイ)

概要
ローリングデプロイは、AWS CodeDeploy を使用せず ECS 単体の機能として実行される標準的なデプロイ方式です。
同じ環境内で、新しいバージョンのタスク(コンテナ)を順次立ち上げ、正常起動(ヘルスチェック通過)を確認しながら古いバージョンのタスクを段階的に停止・入れ替えていきます。
メリットとデメリット
メリット
- 追加リソースコストが最小限: サービスの「最小ヘルシー率」「最大率」パラメータの設定に基づき、最小限の追加タスク数で安全に入れ替えを行うため、コスト効率に優れています。
- 構成がシンプル: ロードバランサーの複雑な設定や CodeDeploy 用の設定ファイル(AppSpec 等)を別途用意する必要がなく、手軽に導入可能です。
デメリット
- 新旧バージョンが一時的に混在する: デプロイ実行中の数分間は、旧バージョンのタスクと新バージョンのタスクが同時にトラフィックを受け付けるため、新旧アプリの混在が発生します。
- ロールバックに時間がかかる: 途中でエラーが発生した場合、再度ローリング処理を通して古いタスクを順次起動し直すため、切り戻し完了までに時間がかかります。
2. ブルーグリーンデプロイ
概要
ブルー/グリーンデプロイは、旧バージョン(ブルー環境)と新バージョン(グリーン環境)の 2 つのタスクセットを一時的に並行稼働させ、Application Load Balancer (ALB) や Network Load Balancer (NLB) のルーティングを切り替えることで安全に移行する方式の総称です。
トラフィックのシフト(移行)方法に応じて、以下の 3 つの戦略を選択できます。
2-1. 一括デプロイ(All-at-once)

概要
新環境(グリーン)のタスクセットを 100% 立ち上げて準備を完了させた後、すべてのトラフィック(100%)を一瞬で新しいタスクセットへ一括切り替えします。
メリットとデメリット
メリット
- 新旧バージョンが混在しない: トラフィックが切り替わった瞬間に全員が新環境へ移行するため、新旧混在による不具合が起きません。
- 超高速ロールバック: 万が一不具合が発生しても、ロードバランサーの参照先を旧環境へ戻すだけで即座に復旧できます。
デメリット
- コスト増: 一時的に旧環境と新環境の両方で 100% のタスクを起動するため、2 倍のリソースコストがかかります。
- 影響範囲の大きさ: また、バグがあった場合に全ユーザーへ一括で影響が及びます。
2-2. カナリアデプロイ(canary)

概要
最初に少量のトラフィック(例: 10%)だけを新環境に切り替えて一定時間(例: 5分や15分)様子見(検証)し、問題がなければ残りのトラフィック(90%)を一気に移行します
メリットとデメリット
メリット
- 問題があった場合の被害の最小化: 万が一新バージョンに致命的なバグがあっても、影響を受けるユーザーを最初の少量(10% 等)のユーザーだけに限定可能。
デメリット
- デプロイ時間増: 移行完了までに一定の観察時間(待機時間)が必要です。
2-3. 線形デプロイ(Linear)

概要
指定した時間間隔ごとに、均等な割合(例: 1分ごとに 10% ずつ、または 5分ごとに 25% ずつ)で段階的に新環境へのトラフィックを増やしていく方式です。
メリットとデメリット
メリット
- 負荷のウォッチが可能: トラフィックをなだらかにシフトさせるため、新環境への急激な負荷増大を防ぎつつ、各段階でエラー(CloudWatch アラーム等)を検知した際に自動ロールバックを実行できます
デメリット
- デプロイ時間増: 0% から 100% までの完全移行完了までに最も時間がかかります。
むすび
今回の記事では、ECSにおけるデプロイ方法の比較を行いました。
適切なデプロイ方法を選ぶことで大きな障害を避ける(あるいは障害における影響を最小限に抑える)ことが可能になります。
それぞれのデプロイ方法のメリット・デメリットや、イメージについて整理を行い、実際の現場でも役立ていきます。
