🐤
DevOps・運用 2026年4月4日

Canary デプロイメント

📁 パターン 👁 -- 閲覧

Canary デプロイメント

定義

新バージョン(Canary)を全トラフィックの一部(例:1%、5%)にだけ流し、既存バージョン(Control)と比較しながら段階的にロールアウトするパターン。

炭鉱のカナリアに由来:有毒ガス検知に使われたように、少数のユーザーで問題を先に検知する。

全トラフィック
  ├─ 1% → [Canary v2]  ← SLIを監視
  └─ 99% → [Control v1] ← ベースラインとして比較

なぜ重要か

  • 全ユーザーへの一括デプロイはリスクが高い
  • ステージング環境では本番と同じトラフィックパターンを再現できない
  • Canaryで問題を検知しても影響ユーザーは最小限

適用場面

  • データベーススキーマの変更を伴うデプロイ
  • パフォーマンスに影響する可能性のある変更
  • 新しいインフラコンポーネントへの移行

実装の要点

比較指標の選び方:

  • 絶対値より比率(Canary vs Control の差分)を見る
  • レイテンシ、エラー率、ビジネスメトリクス(購入完了率など)
  • 「統計的に有意な差」が出るまで待つ

自動中止条件:

  • Canaryのエラー率がControlの2倍を超えたら自動ロールバック
  • あらかじめしきい値を定義しておく

注意点:

  • Canaryと新バージョンを複数同時に展開しない(信号が汚染される)
  • 共有インフラ(DBなど)への変更はCanaryで分離できない

段階的ロールアウトのステップ例

  1. 1% → 問題なければ
  2. 5% → 問題なければ
  3. 20% → 問題なければ
  4. 50% → 問題なければ
  5. 100%(完全切り替え)

関連パターン

出典

Google SRE Workbook(Betsy Beyer他)第16章「Canarying Releases」