
ブルーグリーンデプロイメント(Blue-Green Deployment)は、システムの新しいバージョンを安全に切り替えるための手法です。
「稼働中の環境(Blue)」と「新しい環境(Green)」の2つを用意して、切り替えによってダウンタイムやリスクを最小化します。
基本の流れ
- Blue環境(現行環境)
ユーザーが現在アクセスしている安定した稼働中の環境。 - Green環境(新環境)
新しいアプリケーションや設定をデプロイしてテストする環境。
ここでは実際のユーザートラフィックはまだ流れない。 - 切り替え
Green環境が正常に動くと確認できたら、ロードバランサーやDNS設定を切り替えて、ユーザーのアクセスをBlueからGreenへ移す。 - ロールバックが簡単
万が一トラブルが起きたら、再びBlue環境に戻すだけで元に戻せる。
例で理解する
たとえば「オンラインショップ」のシステムを更新するケースを考えます。
- Blue環境: 現在稼働している「バージョン1」のショップサイト。お客様は普通に買い物している。
- Green環境: 開発チームが新しく作った「バージョン2」のサイトをデプロイし、動作確認している。
- 切り替え: 問題ないと確認できたタイミングで、ロードバランサーを切り替えてGreen環境に本番トラフィックを流す。
- トラブル時: もしバージョン2で決済エラーが発生しても、切り替えをBlueに戻せばすぐに「バージョン1」で稼働できる。
メリット
- ダウンタイムをほぼゼロにできる
- 問題があっても即座に元に戻せる
- 新しい環境で事前にテストできる
イメージ図(シンプルな概念図)
[利用者]
│
┌────┴────┐
│ロードバランサ│
└────┬────┘
│
┌───────┴────────┐
│ │
[Blue環境] [Green環境]
(現行Ver1) (新Ver2)
ロードバランサーが、普段はBlue環境に流しているリクエストを、タイミングを見てGreen環境に切り替えるイメージです。
また、リリース手法として、カナリアリリースというものもあります。
カナリアリリース
- 仕組み: 新しいバージョンを少数のユーザーだけに段階的に公開し、問題がなければ範囲を広げていく。
- イメージ: 「炭鉱のカナリア」から来ていて、危険(バグ)を最初に見つけるために少人数で試す方法。
- 例:
- まず新しいバージョンを社内の10人だけに使わせる
- 問題がなければ全体の10%ユーザーに展開
- 最終的に100%へ展開
- メリット:
- 問題があっても影響範囲を小さくできる
- 本番ユーザーを使った「実地テスト」が可能
- デメリット:
- 段階的に展開するためリリース完了まで時間がかかる
- Blue-Greenのように一瞬でロールバックできないケースもある
ブルーグリーンデプロイメント
- 仕組み: 2つの環境(Blue=現行、Green=新環境)を用意し、トラフィックを丸ごと切り替える。
- イメージ: 「一気に道路を切り替える」ような感じ。旧道路(Blue)を閉じて、新しい道路(Green)に全ての車を流す。
- メリット:
- 切り替えが速い(即座に全ユーザーが新環境へ)
- 問題があればすぐ元に戻せる
- デメリット:
- 2つの環境を常に用意するコストがかかる
- 問題があった場合、すべてのユーザーに影響する
🚀 例で比べる
- ブルーグリーン:
ネットショップを「旧デザイン」から「新デザイン」に切り替えるとき、一斉に全顧客が新デザインに移る。問題があれば一瞬で戻せる。 - カナリアリリース:
まず社内テストユーザーや特定の地域の顧客だけ新デザインにして、問題がなければ徐々に全体に広げる。
まとめ
- ブルーグリーン → 「一気に切り替え」「戻すのも一瞬」
- カナリア → 「少しずつ展開」「影響範囲をコントロール」