ECSのローリングアップデートとブルー/グリーンデプロイを比較してみた

2022.12.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、つくぼし(tsukuboshi0755)です!

ECSのデプロイタイプには、ローリングアップデートブルー/グリーンデプロイの2種類が存在します。

最近ECSを触っている中で、上記2つの違いについて調べる機会があったので、本記事でまとめてみたいと思います!

ローリングアップデート

概要

コンテナ全体では稼働状態を維持しながら、一部のコンテナを順々にアップデートし、徐々に更新する事でシステムをデプロイする手法。

具体例

①ローリングアップデート開始時点

②コンテナAをアップデートする。コンテナBはまだアップデートが始まっていないため、稼働状態は維持される。

③コンテナAのアップデート後に、コンテナBをアップデートする。アップデート済のコンテナAがあるため、稼働状態は維持される。

メリット

  • ECSのみで設定が完結するため、シンプルな構成になる
  • 稼働コンテナ数は一定のため、コストが安い

デメリット

  • デプロイ中に新コンテナが障害を起こした際、コンテナをダウングレードする必要があるため旧コンテナへのロールバックに時間がかかる
  • デプロイ中は新旧コンテナが混在するため、予期せぬ動作が起きる可能性がある

ブルー/グリーンデプロイ

概要

稼働中のコンテナ(ブルー)とは別にアップデート済みのコンテナ(グリーン)を作成し、ルーティングを切り替える事でシステムをデプロイする手法。

具体例

①ブルー/グリーンデプロイ開始時点

②アップデート済みのコンテナ(グリーン)を新規作成し、システム担当者側のリスナールールをグリーン側にルーティングにするよう変更する。

③システム担当者がアップデート済みのコンテナが正常に動作されているか確認できたら、ユーザー側のリスナールールをグリーン側にルーティングにするよう変更する。

④ブルー側のコンテナ及びターゲットグループを削除する。

メリット

  • デプロイ中に新コンテナが障害を起こした際、ルーティングを切り替えるだけなので即座に旧コンテナにロールバック可能
  • デプロイ中は新旧コンテナが完全に分離されているため、予期せぬ動作が起こりにくい

デメリット

  • 稼働コンテナ数が一時的に2倍になるため、その分コストがかかる
  • CodeDeployの設定・運用が追加で必要
  • 一部ブルー/グリーンデプロイ特有の制約があるため注意(ブルー/グリーンデプロイの考慮事項参考)

最後に

今回はECSのデプロイタイプについてまとめてみました。

各々のデプロイタイプの概要については何となく知っている方も多いかもしれませんが、メリット・デメリットまで把握しておくと、どちらのデプロイタイプが合っているか判断しやすいかと思います。

なおECSのデプロイタイプに限った話ではないですが、事前にアプリケーションのデプロイテストを実施し、問題なくデプロイできる事を確認してから適切なデプロイタイプを採用するようにしましょう!

以上、つくぼし(tsukuboshi0755)でした!