失敗的代價就是教育。 — Devin Carraway

在 SRE 規模下,事件是必然。沒有從事件中學習的正式流程,事件會無限重演——複雜度疊加、衝擊放大,最終淹沒系統與運維者。

事後檢討(postmortem)即是這個學習機制的文件化呈現:記下事件、衝擊、緩解、根因與防止再發的後續行動。

Google 的事後檢討哲學#

何時要寫#

在事件發生之前就把觸發條件定義清楚。常見觸發:

  • 使用者可見的宕機或退化超過門檻
  • 任何形式的資料遺失
  • On-Call 工程師手動介入(如回滾、流量切換)
  • 解決時間超過門檻
  • 監控失效(通常意味著靠人發現故障)

任何利害關係人也可主動要求寫事後檢討。

無究責(Blameless)是核心信條#

真正的無究責事後檢討聚焦於找出造成事件的系統性因素,不指控任何個人或團隊。

假設:所有人在當下都基於手上的資訊做出了善意的選擇。

來源:醫療與航空業——「錯誤可能致命」的領域,把每個錯誤視為強化系統的機會。

  • 你不能「修正人」,但可以修正系統與流程,幫助人在複雜系統中做出對的決定
  • 一旦充滿究責與羞辱,人們會為了避免懲罰而把問題藏起來——更危險

對照範例#

❌ 究責式:「我們得把那個複雜後端重寫!過去三季每週都壞,再被 page
   一次我自己重寫…」

✅ 無究責:「把後端重寫的行動項目可能可以根除這類煩人 page;目前的
   維護手冊很長、難以充分培訓——未來的 On-Caller 會感謝我們。」

不究責不代表「不檢討」。要明確指出哪裡可以改進、哪些系統需要強化——只是焦點是事件而非個人

協作與分享知識#

事後檢討文件的工具選擇要點:

  • 即時協作:快速蒐集資料與想法
  • 開放式留言 / 註解:眾人補完
  • email 通知:拉相關人進來

工作流程通常分兩步:

  1. 內部初審:請資深工程師檢視
    • 關鍵事件資料是否完整保存?
    • 衝擊評估是否完整?
    • 根因是否挖得夠深?
    • 行動計畫是否合宜?bug 修復優先級對嗎?
    • 是否與相關利害關係人分享了結果?
  2. 廣泛分享:通常給整個工程團隊或內部 mailing list

未經審查的事後檢討形同沒寫過——團隊應定期辦事後檢討審查會,確保草稿被關閉、想法被捕捉、狀態被定稿。

完成後加入團隊或組織的事件資料庫,便於日後檢索與學習。

導入事後檢討文化#

文化需要持續培育與強化。管理層的積極參與是強力訊號,但理想上文化最終由工程師自發推動。

具體活動:

  • 本月最佳事後檢討:月報精選分享
  • Google+ 事後檢討小組:分享內外部事後檢討、討論最佳實踐
  • 事後檢討讀書會:定期挑一份有趣或有影響力的事後檢討,搭配茶點開放討論——通常是幾個月甚至幾年前的事件
  • Wheel of Misfortune:新進 SRE 重演舊事件,由當時的 IC 出席讓體驗逼真

導入時的挑戰與對策:

  • 質疑 ROI:先做試行,幾份成功案例做佐證
  • 沒人想寫:把「寫好事後檢討」當成被獎勵的行為(社群表彰 + 績效)
  • 取得高層支持:Larry Page 本人都會在公司全員大會強調事後檢討的價值

為「做對的事」公開表揚#

一個 SRE 推上線後幾分鐘察覺異狀立刻 rollback,把可能更長的事件壓縮為 4 分鐘——他在事件後立刻拿到兩筆 peer bonus,並在全員大會上獲得創辦人與數千同事的掌聲。

公開表揚這類行為,比任何文件都能傳達「我們真心重視這個」。

收集對事後檢討流程本身的回饋#

Google 定期問團隊:

  • 文化是否在支援你的工作?
  • 寫事後檢討是否成了過量的瑣事?
  • 你的團隊有什麼值得分享給其他團隊的最佳實踐?
  • 你希望有什麼工具?

這讓事後檢討流程本身也能持續改進。

結語與持續改進#

投資事後檢討文化的回報:故障變少、使用者體驗變好

Google 的「Postmortems at Google」工作小組跨產品(YouTube、Fiber、Gmail、Cloud、AdWords、Maps)整合:

  • 模板統一
  • 從事件工具自動產生事後檢討
  • 從事後檢討自動抽取資料以做趨勢分析

未來方向:以機器學習預測弱點、輔助即時事件調查、減少重複事件。