運維負擔(operational load)」是維持系統正常運作所需的工作。對複雜系統而言,這負擔分三類:

  • Pages:生產告警,反應時間 SLO 以分鐘計
  • Tickets:客戶請求,SLO 以小時、天、週計
  • 持續性運維責任:發版、flag flip、即時諮詢——無嚴格 SLO 但會打斷人

怎麼分配#

  • Pages:通常由「primary on-call」一人處理——避免旁觀者效應、減少打擾範圍
  • Secondary on-call:當 fallthrough(漏接)後援;視團隊也可承擔 ticket 與其他中斷
  • Tickets 處理方式各異:可由 primary 兼、由 secondary 兼、或設專責人;隨機指派或自取
  • 持續性責任:由當值者承擔,或固定指派

衡量「怎麼處理中斷」的指標#

  • 中斷的 SLO 或預期反應時間
  • 通常積壓多少
  • 嚴重度
  • 頻率
  • 可處理者人數(部分團隊要求一定 ticket 經驗才能 On-Call)

這些指標都把目標放在「最低反應時間」——人類成本幾乎沒被計入。

不完美的機器:人#

人類是不完美的處理器:會無聊、UI 不易理解、效率不高。把人類視為「就是這樣(Working as Intended)」並圍繞它做設計,才有意義。

認知 Flow 狀態#

「在 zone 裡」可以大幅提升生產力與創意。要達到 flow 需要:

  • 清晰目標
  • 即時回饋
  • 控制感
  • 時間扭曲

中斷會把人踢出 flow,需數十分鐘才能再進入。最大化 flow 時間是團隊管理的核心目標。

Flow 的兩種:創造模式 vs. Angry Birds 模式#

  • 創造、投入:深入問題、忘了時間、忽略中斷
  • Angry Birds 模式:當你 On-Call 或專心處理中斷時,中斷本身變成目標——關 bug、停 page,feedback 清楚——也是 flow

最壞的是「半 On-Call 半專案」——人處於持續可被打斷的狀態,永遠進不了任何一種 flow。

解法:極化時間(polarize)——某段時間全做專案、某段時間全處理中斷,不要混

做好一件事#

「分心因子」太多#

Fred 週一早上想專心——但任何一刻可能:

  • 自動分派的 ticket 今天到期
  • 同事 page 找他諮詢某元件
  • 上週的 ticket 被使用者提升優先級
  • 為期 3 週的 rollout 出錯
  • 使用者 IM 問問題

結果:即使行事曆全空,Fred 仍處於高度分心。

部分自己可控(關 email、關 IM);部分由團隊政策造成——後者才是團隊該解決的。

極化時間#

對 context switch 賦予成本:一次 20 分鐘的中斷可能損失「兩個小時」的真正生產力。

把工作型態極化——理想是整週、最差也是整天甚至半天——讓每人每天「進公司就知道今天是哪一種」。

具體建議#

通則#

中斷量太大則加人——對 tickets 顯然;對 pages,可下放 secondary 或降級為 ticket。

On-Call#

Primary on-call 只做 On-Call

  • On-Call 那週的專案工作直接寫掉
  • 若有不能延的專案 → 別 On-Call,請別人代
  • 絕不期望同時 On-Call 又推進專案

Secondary 的職責決定他能不能做專案:

  • 純 fallthrough → 可做專案
  • 要協助 primary 解決多 page → 也要全職中斷

永遠都有清掃工作可做——文件、設定、自動化。今天清的下次 On-Call 就會感謝你。

Tickets#

隨機指派 ticket 給「倒霉鬼」是極度不尊重時間——刻意打破「不可被打斷」的原則。

把 tickets 當成全職角色(時間長度可管理)。若量超過 1 人,就兩人並行——不要把負擔灑滿全隊

持續性責任#

盡量設計成可由任何人接手的角色(如 push manager)。離開 On-Call / 中斷週時正式交接,不要讓一個人從頭到尾跟一場數週的 rollout。

「要嘛做中斷,要嘛不做」#

  • 沒輪到中斷時不要「順手」做 ticket——表面上看似在幫忙,實際上:
    • 自己沒在做 flow 工作
    • 拉低觀測數據,讓 ticket 量看起來可控但其實爆炸

減少中斷本身#

如果你的團隊得「同時太多人處理中斷」才能維持運作,那中斷量本身就有問題。

真的去分析 tickets#

很多 ticket / On-Call rotation 像「跑火線」(gauntlet)——每人喘口氣丟給下一人。

對策:

  • 設計ticket / page handoff 流程,傳遞狀態
  • 定期 scrub:以類別找根因
  • 若根因可在合理時間內修,先靜音這類告警——同時給「修根因」設了硬期限

尊重自己也尊重客戶#

對使用者中斷,政策可以是強力工具:

  • 把部分工作推回給請求者(請他們準備好 code change、配置變更)
  • 沒人重視的工具就退役、棄置、替換
  • 不要「過度服務」——這對誰都沒好處

通用原則:請求應該有意義、合理,並提供所需資訊與動作;你的回應應該有用、及時。雙向都需被尊重。