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 + ターゲットグループ
ALB では Blue と Green の 2 つのターゲットグループを用意し、リスナールールの転送先を Green に付け替えることで一括切り替えを実現する。切り替え単位はリスナー (ルール) で、加重ターゲットグループを使えば重みを段階的にずらして途中経過も表現できる。切り替え時は Blue 側の登録解除の遅延 (deregistration delay) を確保し、処理中のリクエストを取りこぼさないようにする。
CodeDeploy
CodeDeploy は Amazon ECS・AWS Lambda・EC2/オンプレミスの各プラットフォームで Blue/Green デプロイを管理する。ECS では新しいタスクセット (Green) を起動して検証フックを実行し、ALB のリスナーを付け替えてトラフィックを移す。移行方式は一括・カナリア・線形から選べ、CloudWatch アラームと連動して異常時に自動ロールバックできる。
Lambda エイリアス
Lambda のエイリアスは 1 つのエイリアスから最大 2 つのバージョンへトラフィックを分割でき (加重エイリアス)、Blue = 現行バージョン・Green = 新バージョンとして重みを段階的に Green 側へ移して切り替える。関数コードやエイリアス ARN を変えずに向き先だけを移すため、呼び出し側は同じエイリアスを参照し続けられる。CodeDeploy と組み合わせれば、この重み移行と CloudWatch アラーム連動のロールバックを自動化できる。
S3 + CloudFront での Blue/Green
静的サイトの場合、S3 のプレフィックスまたはバケットを切り替える。
CloudFront → S3 /blue/ (v1)
→ S3 /green/ (v2) ← オリジンパスを切り替え
注意点
注意点を以下にまとめる。
| 注意点 | 対策 |
|---|---|
| DB スキーマの互換性 | Expand-Contract パターン |
| セッションの引き継ぎ | 外部ストア (DynamoDB) で管理 |
| DNS キャッシュ | TTL を短くしてから切り替え |
全体像を把握するには関連書籍も有用。
この記事は役に立ちましたか?
関連用語
関連する記事
技術書がエンジニアのキャリアを変える - 読書習慣と年収の関係
技術書の読書習慣がエンジニアのキャリアアップに影響する 3 つの経路と、ジュニア / ミドル / シニア各段階に応じた読書戦略を具体的に解説します。
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
深夜 3 時のデプロイ前に読み返したい 1 ページ
本番デプロイの直前、最終確認のチェックリストとして技術書の特定のページが役立つことがあります。緊張の場面で頼りになる「お守りの 1 ページ」の見つけ方と活用法。