On-Call 是維持服務可靠性的必要工作,但組織不當會反過來摧毀團隊。本章說明 Google SRE 多年累積的 On-Call 原則:用工程方法解決運維問題、控制數量也控制品質、保留心理安全感。
On-Call 工程師的日常#
SRE 與純運維團隊的關鍵差別在於:用工程手段解決運維問題。Google 對 SRE 設下「最少 50% 時間做工程」的硬約束。
當值工程師職責:
- 即時應變影響團隊的故障
- 執行或審查生產變更
- 收到 page 後在約定時間內回應:使用者前台 / 高時效服務約 5 分鐘;其他系統 30 分鐘
- 工作時間內也處理非緊急的工單與發佈審查
為什麼是這個反應時間?#
反應時間直接受可用度目標約束:
99.99% 季度可用度 → 季度可宕約 13 分鐘 → 工程師必須分鐘級到位。
主/副輪值#
- 多數團隊有主、副兩條輪值
- 工作分配變化多樣:副值可當主值漏接的 fallback,或主值只接 page、副值處理其他
- 若不需專屬副值,常見做法是兩個相關團隊互當副值
平衡的 On-Call#
SRE 對 On-Call 有兩條約束:數量(工程師多少時間花在 On-Call)與品質(每輪事件數)。
數量平衡#
- 至少 50% 工程時間 → 至多 25% On-Call → 剩下 25% 處理其他運維
- 用「25% 規則」推導最少團隊規模:
- 假設始終有主/副 2 人 On-Call、每週為單位
- 單地點團隊最少 8 人:每人每月當值 1 週
- 雙地點團隊各最少 6 人:兼顧 25% 規則與最小臨界量
服務工作量足以擴張團隊時,優先做多地點「follow the sun」:
- 避免夜班(夜班有害健康)
- 限制單地點輪值人數,避免每人對生產系統失聯
代價是跨地點的溝通與協調成本。
品質平衡#
一次事件(root cause、修復、事後檢討)平均耗 6 小時 → 一輪 12 小時的 On-Call 最多 2 件事件。
為了不超過此上限,page 頻率的分佈應該很平——中位數最好是 0。某元件天天 page 表示遲早會疊加其他事件而爆掉。
超過上限時的對策:本季暫停部分工作、調來外援、改善告警。
補償#
合理的補償很重要。Google 提供補休或加薪,但設有上限:
- 限制單一個人的 On-Call 工作量
- 鼓勵分散負擔
- 防止過度 On-Call 引發 burnout 或排擠專案時間
心理安全感#
SRE 揹的是公司最關鍵的營收與基建系統,壓力極大。研究顯示人類面對挑戰時有兩種思維:
- 直覺、自動、快速
- 理性、聚焦、刻意
壓力荷爾蒙會把人推向第一種模式——快速、習慣性、不思考——容易陷入確認偏誤。
例:同一告警本週發生第 4 次,前 3 次都是上游系統,直覺會自動把第 4 次歸給同一原因——但這次可能是不同的問題。
三項關鍵資源讓 On-Call 不再可怕#
- 清晰的升級路徑:開發團隊也參與 24/7 輪值,必要時可升級
- 正式的事件管理流程(見第 14 章):標準步驟讓 incident 不會失控
- 無究責的事後檢討文化:聚焦在「事件」而非「人」,從系統性分析中萃取價值
事件管理工具自動化角色交接、狀態紀錄等繁瑣動作,讓事件指揮官能專注在處理事件本身,而非格式化郵件或更新數個通訊管道。
避免不當的運維負載#
運維過載(Operational Overload)#
當運維工作超過 50%,SRE 與主管應在季度規劃中設定可量化目標把它拉回(如「每日工單 < 5」「每輪 page < 2」)。
常見原因:監控誤配。
- 所有 page 必須對應 SLO 威脅且可採取行動
- 一個事件不該觸發多個 page → 由監控系統做聚合,調到 1:1
- 重複或無資訊的告警在事件期間應靜音
- 必要時:把 pager「還給」開發團隊,由他們獨自 On-Call 直到系統達到 SRE 要求
「歸還 pager」很少發生,但這個選項的存在維持了 SRE 與開發團隊的權力平衡——也是「可靠性 vs. 速度」這個健康張力的具體體現。
運維過載的反面:運維負載不足#
太安靜也不好。長期不接觸生產 → 自信心問題(過度自信或不足)、知識斷層只在事件發生時才被發現。
對策:
- 團隊規模應確保每人每季至少當值 1–2 次
- 「Wheel of Misfortune」演練(第 28 章)磨練排障能力
- 全公司年度災難演練 DiRT(Disaster Recovery Training)
結語#
Google 的 On-Call 模式讓我們能用「工程」作為規模化生產責任的手段,在系統數量與複雜度增加的同時保持高可用度。即便不能照搬到所有情境,這套模式仍是組織可參考的穩固模板。