設定変更の安全なロールアウト
定義
設定ファイル・環境変数・フィーチャーフラグなどの設定変更を、コードデプロイと同等の慎重さで本番環境へ適用するパターン。
設定変更はコード変更より軽視されがちだが、設定起因の障害はコード起因と同じくらい深刻。
なぜ重要か
設定変更の特有のリスク:
- テスト環境で再現しにくい(本番固有の値が多い)
- 「設定を変えただけ」という油断が慎重さを欠かせる
- ロールバック手順が整備されていないことが多い
適用場面
- 本番環境のフィーチャーフラグを切り替えるとき
- キャッシュTTLやタイムアウト値などのパラメータ調整
- サードパーティのAPIキーや設定の更新
- インフラ構成(オートスケーリング閾値など)の変更
安全なロールアウトの原則
1. 段階的適用
コードデプロイと同様に段階的に展開する:
- まず1インスタンスや1リージョンに適用
- メトリクスを確認してから次の段階へ
2. 迅速なロールバック可能性
- ロールバック手順を変更前に確認・文書化
- ロールバック自体も段階的に行える設計
- ロールバック完了の確認基準を決めておく
3. 自動停止機構(Circuit Breaker)
- 設定変更後にエラー率が閾値を超えたら自動的に変更前の値に戻す
- 「オペレータが気付かなかった」状況での自動安全網
4. 変更ログの維持
- 誰が・いつ・何を・なぜ変更したかを記録
- インシデント時の「直近の変更」確認を迅速化
設定設計の原則
- 最小限の必須設定(ユーザーに聞かなくてよいことは聞かない)
- デフォルトは動的決定(環境を検出して自動設定)
- 設定とデータフォーマットを分離(インターフェースは変えずに設定を更新できる)
関連パターン
- 段階的デプロイ — 同じ段階的アプローチのコード版
- Canary デプロイメント — トラフィックベースの段階展開
出典
Google SRE Workbook(Betsy Beyer他)第14〜15章「Configuration Design / Configuration Specifics」