段階的デプロイ
定義
リリースを複数の段階に分割し、各段階で影響を確認しながら進めるデプロイ戦略。問題が検知されれば即座にロールバックできる。
コード変更
→ Stage 1: 1台(または1%トラフィック)
→ Stage 2: 10%
→ Stage 3: 50%
→ Stage 4: 100%
なぜ重要か
一括デプロイは:
- 問題が100%ユーザーに影響する
- 問題の特定が難しい(何が変わったかが広すぎる)
- ロールバックも全ユーザーに影響
段階的デプロイは:
- 影響範囲が限定される
- 問題の早期検知が可能(1%でエラー率が跳ね上がれば止められる)
- 各段階でロールバックが容易
適用場面
- 本番トラフィックで初めて試す変更
- データベーススキーマ変更(後方互換性に注意)
- 大規模なリファクタリング後の最初のリリース
設計の要点
段階数と比率
| ステップ | トラフィック比率 | 待機時間 |
|---|---|---|
| 1 | 1% | 15〜30分 |
| 2 | 10% | 1〜2時間 |
| 3 | 50% | 数時間 |
| 4 | 100% | — |
評価メトリクスの選定
- 比率を見る(Canary vs Control の差分)
- 絶対値より「対照グループとの比較」が重要
- ビジネスメトリクス(購入完了率、セッション数)も含める
自動中止の条件を事前定義
- エラー率がControlの2倍を超えたら自動停止
- P99レイテンシが閾値を超えたら停止
関連パターン
- Canary デプロイメント — 段階的デプロイの代表的実装
- 設定変更の安全なロールアウト — コード変更ではなく設定変更への応用
出典
Google SRE Workbook(Betsy Beyer他)第16章「Canarying Releases」