為何 RCA 是可靠性的核心#

不找到根本原因,問題永遠不會被根除。重複出現的問題會持續消耗 SRE 精力、降低系統表現。

延續上一節的醫療軟體:SRE 已用自動化短期繞過資料同步問題,但這只是反應式的補救。

從繞過到根治:資料同步問題#

監控與維運階段#

  • SRE 自動化補資料是暫時方案
  • 與 DBA 合作正式 RCA 並產出文件
  • 雙方共同把所有資料同步補齊
  • 應用層團隊建一支自動同步服務,主動偵測 delta 並同步
  • 服務端加上等待機制:若資料庫尚未同步,呼叫端會等資料就緒後再回傳

資料層 + 服務層雙重修補,問題從此不再復發。

第二個案例:付款服務間歇失敗#

  • 第一次告警觸發:自我修復重啟,使用者短暫無法付款
  • 兩天後另一次告警:購買收據未寫入資料庫,SRE 重啟服務後恢復
  • SRE 啟動 RCA,將缺陷以高優先級丟給開發
  • 開發追到根因;SRE 同時把服務回退到上一個穩定版本
  • RCA 完成後開發修補、QA 測試、上線
  • 此後付款服務未再失敗

Figure 6.2: RCA process in SRE approach

RCA 流程的所有權#

  • SRE 與開發共同擁有
  • 流程約莫是:事件升級到 SRE → SRE 繞過 → 工單轉到開發找根因 → 雙方領導審查 → 修補 → 上線
  • 老式 SDLC 沒有這個閉環,現代框架把它變成標配

不是每個事件都需做完整 RCA,但每個重複出現或高衝擊的事件都該有。把 RCA 結果寫進 runbook,再下一次這類事件就會少很多。