オンコールの設計と持続可能な運用
夜中の呼び出しで疲弊するチームを卒業。ページング頻度の上限とMTTA目標、ローテーション、エスカレーションを数字で設計し、燃え尽きないオンコールを作れます。
- 1.オンコールは「24時間あたりのページ数」と「シフトあたりのページ数」に上限を設け、超えたら是正する運用上の制約として扱う。
- 2.MTTAを縮めるのは速い人ではなくエスカレーションの段数と通知経路。無応答タイムアウトと自動エスカレーションで取りこぼしを防ぐ。
- 3.ページ対象はSLOを脅かす事象だけに絞り、待機の頻度・人数・補償を数値化することでアラート疲れと心理的負荷を抑える。
オンコールを「制約付きの工学問題」として扱う
オンコールは「誰かが夜中も電話を持つ」当番制ではなく、測定可能な制約の集合 として設計する対象です。中心となる指標は次の3つです。
- ページング頻度(paging frequency):単位時間あたりに人を起こす通知の数
- MTTA(Mean Time To Acknowledge):ページが鳴ってから担当者が「受け取った」と応答するまでの平均時間
- MTTR(Mean Time To Restore):検知から復旧までの時間(MTTA を含む)
Google SRE が経験則として置く上限は明確です。1回のオンコールシフト中に対応すべきインシデントは平均2件まで、というのが目安です。理由は技術ではなく認知科学にあります。1件のインシデントを「正しく」処理する(根本原因の調査・対応・記録)には集中力と時間が要り、過密になると対応品質が落ち、再発を招くからです。「捌けるから増やす」のではなく「品質を保てる上限で止める」 のが原則です。
ページング頻度は発報されたアラート総数ではなく、実際に人を割り込ませた(睡眠・休息を中断させた)回数 で数えます。同一インシデントで5本のアラートが連鎖しても、人への割り込みは集約して1回に抑えるのが設計目標。これがアラートのグルーピング・抑制(dedup/suppression)が必須になる理由です。
ページング頻度の上限を「人数」から逆算する
持続可能性は、待機する人数と発生件数の比で決まります。たとえば1チームのページ発生が 1日あたり平均 P 件、ローテーションに参加できるエンジニアが E 人 いるとします。各人が均等に当番すると、1人が当番中に受ける夜間ページ期待値は P に比例し、E に反比例します。ここから設計上の不等式が立ちます。
1週間で誰かが常に当番 → 週の当番日数の合計は 7 日
E 人で均等に分担 → 1人が当番する日数 = 7 / E(週あたり)
1人あたりの週次ページ数 = P × (7 / E)
持続可能条件: P × (7 / E) が 上限しきい値 以下
E が小さい(人数が少ない)と1人あたりの負荷が跳ね上がるため、最低でも 6〜8 人 をローテーションに揃えるのが一般的な下限です。これより少ないと、当番が頻繁に回り、かつ「次に頼れる人がいない」状態になります。逆に件数 P が多すぎて上限を割る場合、人を増やすのではなく 発生件数 P を下げる(不要アラートの除去、自動復旧、根本対策)方向に投資すべきというのが SRE の立場です。これは エラーバジェットの数理とバーンレート の「予算を消費する事象だけ鳴らす」という考え方と直結します。
ページが多いからとローテーション人数だけ増やすと、1人あたりの頻度は下がっても 全員がオンコールの記憶を維持できなくなる(当番間隔が空きすぎ、システムの最新状態を把握できない)。頻度の高さは「自動化・修正で件数を減らせ」というシグナルであり、人数調整は補助手段です。
ローテーションと follow-the-sun
ローテーションは「誰が・いつ当番か」を定義する周期スケジュールです。代表的な構造を比較します。
| 方式 | 仕組み | 向くケース | 注意点 |
|---|---|---|---|
| 週次ローテーション | 1人(+副)が1週間連続で当番 | 単一タイムゾーンの中規模チーム | 夜間ページが当番期間に集中し負荷が偏る |
| follow-the-sun | 地域ごとに日中帯だけ当番を引き継ぐ | 複数拠点・グローバル運用 | 引き継ぎ(handoff)の情報欠落リスク |
| primary/secondary | 主担当と無応答時の代替を二段で配置 | MTTAを保証したいサービス | secondaryも休息設計が必要 |
follow-the-sun の本質は、夜勤を作らないことです。地球上の複数タイムゾーン(例:アジア・欧州・米州)にチームを置き、各地域は自分たちの日中帯だけ当番 を持つ。当番が地域の夜になる前に次の地域へ引き継ぐため、誰も深夜に起こされません。心理的負荷を構造的に下げる最も強力な手段ですが、成立には条件があります。
- 各地域に 独立してインシデントを完結できる人数とスキル が揃っていること
- 引き継ぎ(handoff) で進行中の事象・既知の不安定要素が確実に伝わること
- タイムゾーンが概ね 8時間間隔 で3拠点に分布していること(2拠点だと夜間の空白が残る)
引き継ぎの欠落は follow-the-sun 最大の弱点です。進行中インシデント、未解決のアラート、デプロイ予定を構造化して渡す「ハンドオフ手順」を インシデントとポストモーテム の記録と連動させると、情報の取りこぼしを抑えられます。
エスカレーションポリシーと MTTA
MTTA を縮める鍵は「速い人を当番にする」ことではなく、応答されなかった場合に自動で次へ渡す仕組み です。エスカレーションポリシーは、無応答タイムアウトを連ねた多段経路として定義します。
ページ発報
→ primary に通知(5分以内に ack されなければ次へ)
→ secondary に通知(5分以内に ack されなければ次へ)
→ チームリード / マネージャに通知
→ (重大度が高い場合)インシデント指揮官を招集
ここで重要なのは、各段に「無応答タイムアウト」を必ず置く ことです。タイムアウトが無いと、primary が寝過ごした瞬間にインシデントが放置されます。タイムアウトを T、段数を K とすると、最悪ケースの検知遅延は概ね T × (応答に失敗した段数) で増えるため、T を短くしすぎると誤起床が増え、長すぎると MTTA が悪化します。重大度(severity)に応じて T を変える(SEV1 は T を短く、低重大度は長く)のが実務的な設計です。
すべての通知を電話で叩き起こす必要はありません。SLO を急速に消費する事象(高バーンレート)は 即時ページ、ゆっくり消費する事象は チケット化 して翌営業日に回します。重大度の分岐は アラート設計の理論 のマルチウィンドウ・バーンレートの考え方と組み合わせると、しきい値から逆算できます。
アラート疲れと心理的負荷を抑える
オンコールが持続不能になる最大の原因は アラート疲れ(alert fatigue) です。意味のない通知が続くと、人は「狼少年効果」で本物の通知にも鈍感になり、MTTA が伸び、最終的には離職につながります。抑制の原則は次の通りです。
- アクション可能性(actionability):人を起こすページは「人間が今すぐ取るべき行動がある」ものだけ。行動が無いものはダッシュボード送りにする
- 症状ベースで鳴らす:「CPU が高い」(原因)ではなく「ユーザーのリクエストが SLO を割りそう」(症状)で鳴らす
- 集約と抑制:同一根本原因の連鎖アラートは1件にまとめる
- 定期的な棚卸し:発報されたが何もしなかったページ(noise)を毎週レビューし、ルールを削除・調整する
心理的負荷の側面では、補償と休息を制度として明文化 することが効きます。夜間対応の翌日は遅出・休養を保証する、当番手当を支給する、シフト後にページ頻度をレビューして異常があれば是正する、といった仕組みです。
「気合い」で回す無補償・人数不足のオンコールは、短期的には機能して見えても、アラート疲れと睡眠負債が蓄積して 必ず離職と対応品質の低下 を招きます。オンコールは労務であり、頻度の上限・補償・休息は技術的SLOと同格の運用要件として扱うべきです。
まとめ:頻度・段数・補償を数字で縛る
- ページング頻度は シフトあたり平均2件以下 を目安に上限を設け、超えたら 件数 P を下げる 投資に切り替える
- ローテーションは 最低6〜8人、グローバルなら follow-the-sun で夜勤そのものを無くし、引き継ぎを構造化する
- MTTA は速い人ではなく 無応答タイムアウト付き多段エスカレーション で保証し、タイムアウト T を重大度で調整する
- アクション可能・症状ベース・集約 でアラート疲れを抑え、補償と休息を制度化して心理的負荷を下げる
持続可能なオンコールとは、英雄が頑張る体制ではなく、「人を起こす回数」を上限付きの設計変数として扱い、超えたらシステム側を直す 規律です。SRE と SLO の文化と一体で運用してはじめて成立します。
DevOps/インフラ Article
オンコールの設計と持続可能な運用を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
SRE
比較で見る軸
難易度: advanced / カテゴリ: DevOps/インフラ / タグ数: 5
導入後に効く点
MTTAを縮めるのは速い人ではなくエスカレーションの段数と通知経路。無応答タイムアウトと自動エスカレーションで取りこぼしを防ぐ。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- DevOps/インフラ
- タグ数
- 5
判断チェックリスト
- 自社の用途が「SRE / オンコール」に近いか確認する。
- 強みである「オンコールは「24時間あたりのページ数」と「シフトあたりのページ数」に上限を設け、超えたら是正する運用上の制約として扱う。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。