システムのリリース作業において、サービスを止めずに新バージョンを展開したいというニーズは非常に一般的です。
その代表的な解決策として「ブルー/グリーンデプロイ」という手法が広く採用されています。
この記事では、ブルー/グリーンデプロイの意味・仕組み・メリットとデメリット・活用場面について、無停止・リリース・切り替えといったキーワードを交えながらわかりやすく解説していきます。
無停止リリースを実現したい方やデプロイ戦略を学びたい方にとって、ぜひ押さえておきたい内容です。
ブルー/グリーンデプロイとは2つの環境を用意して切り替えることで無停止リリースを実現する手法のこと
それではまず、ブルー/グリーンデプロイの基本的な意味と概要について解説していきます。
ブルー/グリーンデプロイとは、本番環境を「ブルー(現行)」と「グリーン(新バージョン)」の2つ用意し、トラフィックを切り替えることでサービスを停止させずに新バージョンをリリースするデプロイ手法のことです。
ブルー環境が現在ユーザーにサービスを提供している本番環境であり、グリーン環境に新バージョンをデプロイして準備が整ったらトラフィックをグリーンに切り替えます。
切り替え後に問題が発生した場合はブルー環境に即座に戻せるため、リリースリスクを大幅に低減できる点が最大の特徴です。
ブルー/グリーンデプロイを工事に例えると「迂回路を作ってから古い道路を閉鎖する」イメージです。
新しい道路(グリーン環境)を完成させてから交通を切り替えることで、工事中も車(ユーザー)を止めずに通行させ続けることができます。
問題があればすぐ古い道路(ブルー環境)に戻せる点もこの例えに当てはまります。
ブルーとグリーンの名前の由来
ブルー/グリーンという名前は単純に2つの環境を区別するための色の名称であり、青と緑に特別な意味があるわけではありません。
リリース前はブルーが本番でグリーンが準備中、リリース後はグリーンが本番でブルーが待機中という役割が入れ替わります。
次のリリースサイクルではブルーに新バージョンをデプロイしてグリーンからブルーに切り替えるという形で、2つの環境が交互に本番と待機の役割を担うことになります。
従来のデプロイ手法との違い
ブルー/グリーンデプロイと従来のインプレースデプロイ(既存環境を直接更新する方法)を比較すると以下のとおりです。
| 項目 | 従来のインプレースデプロイ | ブルー/グリーンデプロイ |
|---|---|---|
| サービス停止 | デプロイ中は停止が必要な場合がある | 停止なしでリリースできる |
| ロールバック | 時間がかかる・難しい場合がある | トラフィックを戻すだけで即座に可能 |
| 必要なリソース | 本番環境1セット | 本番環境2セット(コストが増える) |
| テストの容易さ | 本番前テストが難しい | グリーン環境で本番同等のテストが可能 |
| リリースリスク | 高い(問題発生時の影響が大きい) | 低い(即座にロールバック可能) |
リリースの安全性と速度を両立できる点がブルー/グリーンデプロイの大きなアドバンテージです。
ブルー/グリーンデプロイの具体的な仕組みと手順
続いては、ブルー/グリーンデプロイが実際にどのような手順で行われるかを確認していきます。
デプロイの基本的なステップ
ブルー/グリーンデプロイの典型的な手順は以下のとおりです。
①ブルー環境が現在本番としてユーザーにサービスを提供している状態から開始する
②グリーン環境に新バージョンのアプリケーションをデプロイする
③グリーン環境でテスト・動作確認を十分に行う
④ロードバランサーやDNSを操作してトラフィックをブルーからグリーンに切り替える
⑤グリーン環境が本番として稼働を開始する
⑥問題がなければブルー環境を次のリリース用の待機環境として維持する
⑦問題が発生した場合はトラフィックをブルーに戻してロールバックする
トラフィックの切り替えはロードバランサーの設定変更・DNSのAレコード更新・リバースプロキシの設定変更などで実現します。
トラフィック切り替えの方法
ブルーからグリーンへのトラフィック切り替えには主に以下の方法が使われます。
ロードバランサーを使う方法では、ロードバランサーの振り分け先をブルーのサーバー群からグリーンのサーバー群に変更します。
DNSを使う方法では、ドメインのAレコードをブルー環境のIPアドレスからグリーン環境のIPアドレスに変更します。ただしDNSのTTLの関係で反映に時間がかかる場合があります。
ロードバランサーを使った切り替えはDNSより即時性が高く、ブルー/グリーンデプロイでは一般的に採用されます。
段階的なトラフィック切り替え(カナリアリリースとの組み合わせ)
ブルー/グリーンデプロイでは一般的にトラフィックを100%一度に切り替えますが、カナリアリリースと組み合わせることで段階的な切り替えも実現できます。
たとえば最初はトラフィックの10%だけグリーン環境に流し、問題がなければ50%・100%と段階的に増やしていくアプローチです。
段階的切り替えにより本番環境での影響範囲を限定しながらリリースの安全性をさらに高めることができます。
ブルー/グリーンデプロイのメリットとデメリット
続いては、ブルー/グリーンデプロイのメリットとデメリットを詳しく確認していきます。
主なメリット
ブルー/グリーンデプロイには以下のようなメリットがあります。
| メリット | 内容 |
|---|---|
| 無停止リリース | ユーザーへのサービス提供を止めずに新バージョンを展開できる |
| 即座のロールバック | 問題発生時にトラフィックを戻すだけで素早く切り戻せる |
| 本番同等テスト | グリーン環境でトラフィック切り替え前に本番同等の確認ができる |
| リリースリスクの低減 | 問題の影響範囲を最小化できる |
| リリース頻度の向上 | 安全なリリース手法により頻繁なデプロイが可能になる |
特に即座のロールバック能力はサービスの可用性に直結する非常に重要なメリットです。
主なデメリットと課題
一方でブルー/グリーンデプロイには以下のような課題もあります。
最大のデメリットは2つの本番同等環境を維持するためのコストが増加することです。
クラウド環境では必要な時だけリソースを確保することでコストを抑えられますが、オンプレミス環境では物理的なサーバーのコストが倍になる可能性があります。
またデータベースのスキーマ変更を伴うリリースでは、ブルーとグリーンの両環境が同じDBを共有する場合に互換性の管理が複雑になるという課題があります。
データベース移行との組み合わせ
ブルー/グリーンデプロイでデータベースのスキーマ変更が必要な場合は、後方互換性のある変更を段階的に行う「エクスパンド&コントラクト」パターンが推奨されます。
エクスパンド&コントラクトパターンの流れ:
①まず新旧両バージョンが動作できるようにスキーマを拡張する(エクスパンド)
②ブルー/グリーンデプロイで新バージョンにトラフィックを切り替える
③旧バージョンが不要になったら古いスキーマ部分を削除する(コントラクト)
この手順を踏むことでデータベース移行を伴うリリースも安全に実施できるでしょう。
ブルー/グリーンデプロイを実現するツールとサービス
続いては、ブルー/グリーンデプロイを実現するための主要なツールとサービスを確認していきます。
クラウドサービスでのブルー/グリーンデプロイ
主要なクラウドプロバイダはブルー/グリーンデプロイをサポートする機能を提供しています。
| サービス | ブルー/グリーンデプロイの仕組み |
|---|---|
| AWS CodeDeploy | ブルー/グリーンデプロイを標準機能としてサポート |
| AWS Elastic Beanstalk | 環境のスワップ機能でブルー/グリーンを実現 |
| Google Cloud Deploy | 承認ゲートとロールバック機能を備えたデプロイメント管理 |
| Azure DevOps | スロットスワップ機能でステージングと本番を切り替え |
| Kubernetes | Deploymentリソースのローリングアップデート・サービスの向き先変更で実現 |
特にKubernetesを使った環境では、サービスの向き先を新しいDeploymentに変更するだけでブルー/グリーンデプロイが実現できるため、コンテナ環境との相性が非常によい手法です。
CI/CDパイプラインとの統合
ブルー/グリーンデプロイはCI/CDパイプラインと組み合わせることで、コードのプッシュからデプロイまでを自動化できます。
GitHub Actions・GitLab CI・Jenkins・CircleCIなどのCI/CDツールにブルー/グリーンデプロイのステップを組み込むことで、テスト合格後に自動的にグリーン環境へのデプロイと切り替えが実行されます。
自動化されたブルー/グリーンデプロイはDevOpsの理想的な実践形態であり、高速で安全なリリースサイクルを実現します。
まとめ
この記事では、ブルー/グリーンデプロイの意味・仕組み・手順・メリットとデメリット・実現するツールについて解説しました。
ブルー/グリーンデプロイは2つの本番同等環境を用意してトラフィックを切り替えることで無停止リリースと即座のロールバックを実現するデプロイ手法であり、サービスの可用性とリリースの安全性を両立させる優れた手法です。
インフラコストの増加やデータベース移行の複雑さという課題はありますが、クラウドサービスやKubernetesとの組み合わせによって多くの問題を解決できます。
ブルー/グリーンデプロイを正しく理解して導入することが、信頼性の高いシステムリリースの実現につながります。
ぜひ本記事を参考に、デプロイ戦略の見直しに役立ててみてください。