Blue/Green デプロイ

2 つの同一環境を用意し、トラフィックを切り替えることでゼロダウンタイムデプロイを実現する手法

デプロイ可用性

Blue/Green デプロイとは

Blue/Green デプロイは、本番環境 (Blue) と同一の新環境 (Green) を用意し、新バージョンを Green にデプロイ後、トラフィックを Blue から Green に切り替える手法である。問題があれば Blue に即座にロールバックできる。

流れ

Step 1: Blue (v1) がトラフィックを受けている
  [ALB][Blue: v1] ← 本番

Step 2: Green (v2) をデプロイ・テスト
  [ALB][Blue: v1] ← 本番
          [Green: v2] ← テスト中

Step 3: トラフィックを Green に切り替え
  [ALB][Green: v2] ← 本番
          [Blue: v1]  ← スタンバイ

Step 4: 問題があれば Blue にロールバック (即座)
  [ALB][Blue: v1] ← 本番に戻す

ローリングアップデートとの比較

観点 Blue/Green ローリングアップデート
ロールバック速度 即座 (切り替えるだけ) 遅い (再デプロイ)
リソースコスト 2 倍 (2 環境) 追加コスト小
新旧の混在 なし (一括切り替え) あり (段階的)
テスト Green を事前にテスト可能 本番トラフィックでテスト

AWS での実装

ALB + ターゲットグループ

CodeDeploy

Lambda エイリアス

S3 + CloudFront での Blue/Green

静的サイトの場合、S3 のプレフィックスまたはバケットを切り替える。

CloudFront → S3 /blue/  (v1)
           → S3 /green/ (v2) ← オリジンパスを切り替え

注意点

注意点 対策
DB スキーマの互換性 Expand-Contract パターン
セッションの引き継ぎ 外部ストア (DynamoDB) で管理
DNS キャッシュ TTL を短くしてから切り替え

全体像を把握するには関連書籍も有用。

関連用語