CI/CD パイプライン構築コース

デプロイ方式の選び方 — ローリング、Blue/Green、カナリア

「安全に出す」は一つの方法ではありません。切替速度、ロールバック、運用コスト、観測できる利用者数を基準に、方式を選べるようにします。

TL;DR

  1. まずはローリングアップデートを基準にする。
  2. 即時切戻しと本番相当の検証が必要ならBlue/Greenを検討する。
  3. 十分なトラフィックと監視があるときだけカナリアが効く。

01三つの方式は「誰を、いつ、新版へ流すか」の違い

利用者への流し方を変えると、リスクと運用負荷も変わる。

三つの方式は「誰を、いつ、新版へ流すか」の違い
利用者への流し方を変えると、リスクと運用負荷も変わる。

ローリングは新旧タスクを少しずつ入れ替える。Blue/Greenは二組を用意して経路を一気に切り替える。カナリアは一部の利用者から段階的に広げる。

方式切替戻し方向く条件
ローリングタスクを順次置換新タスク定義へ戻すまず検討する標準解
Blue/Green経路を一括切替旧環境へ経路を戻す失敗コストが高い
カナリア一部利用者から拡大配信比率を0へ戻す十分な利用量と監視がある

方式は流行で選ばず、切替・戻し方・観測可能な利用量の3点で選ぶ。

02Blue/Greenは「戻せる状態」を先に作る

新環境を検証してからトラフィックを切り替える。

Blue/Greenは「戻せる状態」を先に作る
新環境を検証してからトラフィックを切り替える。

新旧環境を同時に維持するため、問題時はルーティングを旧環境へ戻す判断が明快になる。代わりに二系統を用意・監視するコストを負う。

確認項目切替前障害時
新環境本番相当の検証を完了Greenを切り離す
ルーティングGreenへ切替可能にするBlueへ即時に戻す
運用コスト二系統を監視する旧環境の保持期限を決める

Blue/Greenの価値は「新環境を作ること」ではなく、戻す経路を残したまま切り替えられること。

03カナリアは観測できる規模で初めて有効

少量配信は「安全」そのものではなく、早く異常を観測するための方法。

カナリアは観測できる規模で初めて有効
少量配信は「安全」そのものではなく、早く異常を観測するための方法。

利用者が少なすぎると小さな配信比率では実利用が発生せず、検証にならない。割合を上げる基準と、止める基準をメトリクスで先に決める。

判断具体化
開始割合利用量に合わせて小さく開始
拡大条件エラー率・遅延・重要業務の成功率
停止条件基準逸脱時に配信停止して旧版へ戻す

カナリアは、観測と停止の条件を事前に決めて初めて安全弁になる。

結論

  1. 多くのケースはローリングで十分。
  2. 重大な失敗を即座に戻したいならBlue/Green。
  3. カナリアには利用量と監視・停止基準が必要。