📟
オンコール設計
エンジニアが持続可能な形でオンコール当番を担えるようにするための設計原則。過負荷を防ぎ、心理的安全性を確保する
定義
オンコール(On-Call)とは、本番サービスの異常に24時間365日対応するための当番制度。持続可能であるためには、ただの「当番」ではなく、システムとして設計する必要がある。
なぜ重要か
設計なしのオンコールは:
- 夜中の頻繁なページングで睡眠を奪う
- 同じエンジニアへの集中(バスファクター1)
- 燃え尽き・離職の原因
適切に設計されたオンコールは:
- 対応できる人材の分散
- インシデントを通じたサービス理解の深化
- サービスの信頼性改善への動機付け
適切なオンコール負荷の基準(Googleの目安)
- 1シフト(12時間)あたりのインシデント:2件以下
- 週のオンコール比率:25%以下(週4日中1日相当)
- 2人ペア制:プライマリ + バックアップで単一障害を防ぐ
適用場面
- 新しいサービスのオンコール体制を設計するとき
- 「オンコールが辛くて続けられない」と言うメンバーが出たとき
- インシデント対応に熟練していないメンバーをオンボードするとき
ベストプラクティス
シフト設計
- 12時間シフト(24時間連続は避ける)
- タイムゾーンをまたぐグローバルチームでは「Follow the Sun」方式
- 週次でローテーション(特定の曜日に偏らせない)
ハンドオフ
- シフト交代時に「現在進行中の問題・未解決アラート・直近の変更」を引き継ぐ
- ランブック(操作手順書)をインシデントチケットにリンク
オンコール中のプロジェクト時間
- 反応的対応だけで時間を使い切らないよう、50%はプロジェクト作業に充てる
- 過負荷なら即座にエスカレーション
心理的安全性
- 「対応が遅かった」「判断が間違っていた」を責めない
- ポストモーテムで学習に変える
出典
Google SRE Workbook(Betsy Beyer他)第8章「On-Call」
- 1. 🔌メタデータ中心ロギング(Metadata-Centric Logging)
- 2. 📐ログにはメタデータを記録し、コンテンツを含めない
- 3. 🔭オブザーバビリティ(Observability)
- 4. 🎯SLO / SLI / SLA
- 5. ⚖️エラーバジェットで優先度を決める
- 6. 📟オンコール設計
- 7. 💰エラーバジェット
- 8. ⏱️オンコール当番中も戦略的作業時間を確保する