簡而言之,SRE 經營「服務(services)」——由一組互相關聯、為使用者運行的系統,最終對服務的健康負責。經營一個服務涵蓋大量活動:建立監控系統、容量規劃、應變事件、確保根因被處理等等。本部分探討 SRE 的日常工作:建構與運維大型分散式系統的理論與實踐。

服務可靠性的層級結構#

如同馬斯洛把人類需求分層,我們也可以將服務的健康從最基本到最高階分為幾個層級。下面依序介紹各層及對應章節。

監控(Monitoring)#

沒有監控,等同盲飛。

  • 第 10 章「實用告警」:以時序資料為基礎的告警工具與哲學

事件應變(Incident Response)#

SRE 並非為了 On-Call 而 On-Call;如果有辦法不揹 pager,我們會這麼做。

  • 第 11 章「On-Call 輪值」:如何平衡 On-Call 與其他職責
  • 第 12 章「有效的疑難排解」:結構化的故障診斷方法
  • 第 13 章「緊急應變」:避免在事件期間衝動行事
  • 第 14 章「事件管理」:有效的事件管理能降低衝擊與焦慮

事後檢討與根因分析(Postmortem and Root-Cause Analysis)#

SRE 哲學的核心差異之一是:只應對新而有趣的問題,舊問題該被一勞永逸地修掉。

  • 第 15 章「事後檢討文化」:建立無究責(blameless)的事後檢討文化
  • 第 16 章「故障追蹤」:介紹內部工具 Outage Tracker,集中追蹤近期事件與其後續行動

測試(Testing)#

了解錯誤模式後,下一步是預防它。

  • 第 17 章「可靠性測試」:如何運用測試套件減少特定錯誤類別

容量規劃(Capacity Planning)#

  • 第 18 章「SRE 中的軟體工程」:透過容量規劃工具 Auxon 的案例展示 SRE 的軟體工程實作
  • 第 19 章「前端負載平衡」:請求如何被導向資料中心
  • 第 20 章「資料中心負載平衡」:資料中心內的請求分發
  • 第 21 章「處理過載」:當需求超過容量時的應對
  • 第 22 章「應對連鎖故障」:在系統設計與發生時的應對策略

開發(Development)#

Google SRE 的關鍵之一是:在組織內部進行大規模系統設計與軟體工程工作。

  • 第 23 章「管理關鍵狀態」:分散式共識(如 Paxos)的可靠性應用
  • 第 24 章「分散式定時排程」:規模化的 Cron 系統設計
  • 第 25 章「資料處理管線」:從週期性 MapReduce 到接近即時系統的多種架構
  • 第 26 章「資料完整性」:「讀到的就是寫進去的」

產品(Product)#

爬到可靠性金字塔頂端後,最終要面對的是產品本身。

  • 第 27 章「可靠的產品上線」:如何從第 0 天起就給使用者最好的體驗

延伸閱讀#

  • 〈Weathering the Unexpected〉[Kri12]:Google 全公司規模的韌性測試
  • 〈Capacity Planning〉[Hix15a]:容量規劃不一定需要水晶球
  • 〈BeyondCorp〉[War14]:以裝置與使用者憑證取代特權內網的新典範