CI/CD レッスン3
デプロイ戦略
ブルーグリーン・カナリアリリースなど、リスクを抑えて本番環境へデプロイする戦略を学ぶ
なぜデプロイ戦略が必要なのか
テストをどれだけ充実させても、本番環境特有の問題(想定外のトラフィック、設定差異等)は リリースして初めて分かることがあります。デプロイ戦略は、問題が起きたときの影響範囲を最小化し、素早く元に戻せるようにするための工夫です。
ブルーグリーンデプロイ
稼働中の環境(Blue)とは別に、新バージョンをまるごと展開した環境(Green)を用意し、 準備が整ったらロードバランサーの向き先を一気に切り替える手法です。
Blue(現行)
現在ユーザーに向けて公開中の旧バージョン
Green(新環境)
新バージョンを事前に展開し、検証を済ませた環境
問題が起きた場合、ロードバランサーの向き先をBlueへ戻すだけで即座にロールバックできるのが最大の利点です。 一方で、2環境分のインフラコストがかかる点がトレードオフになります。
カナリアリリース
炭鉱で有毒ガスを検知するためにカナリアを連れて行った故事にちなんだ名前です。 新バージョンをまず一部のユーザー(例: 5%)にだけ公開し、 エラー率や指標に問題がなければ徐々に展開範囲を広げていきます。
# ① カナリアリリースの進め方(概念的な流れ)
1. 新バージョンをデプロイし、トラフィックの5%だけ流す
2. エラー率・レイテンシなどの指標を監視する
3. 問題がなければ 25% → 50% → 100% と段階的に拡大する
4. 異常を検知したら即座にトラフィックを0%へ戻す(ロールバック)ブルーグリーンが「一気に切り替える」のに対し、カナリアは段階的に切り替える点が特徴で、 問題発生時の影響ユーザー数を最小限に抑えられます。
ローリングデプロイとの比較
ローリングデプロイは、稼働中のサーバー群を1台ずつ順番に新バージョンへ入れ替えていく手法です。 追加インフラが不要な分コストは抑えられますが、切り替え中は新旧バージョンが混在するため、 後方互換性のない変更には注意が必要です。
| 戦略 | 切り替え方 | 特徴 |
|---|---|---|
| ブルーグリーン | 一気に切り替え | 即時ロールバック可能・コスト高め |
| カナリア | 段階的に拡大 | 影響範囲を最小化・監視が前提 |
| ローリング | 1台ずつ順番に | 追加インフラ不要・新旧混在に注意 |
ポイント
- • デプロイ戦略の目的は問題発生時の影響範囲を抑え、素早く戻せるようにすること
- • ブルーグリーンは一気に切り替え、即時ロールバックできる
- • カナリアは段階的に展開し、影響ユーザー数を最小化する
- • ローリングは追加インフラ不要だが新旧バージョンの混在に注意する
確認クイズ
1 / 3ブルーグリーンデプロイの特徴として適切なものはどれか?