推薦序:從系統管理到 SRE#
Google 的故事是一個關於規模化(scaling)的故事,也是計算工業中最具標誌性的成功案例之一。它代表 IT 文化從輔助角色轉為事業核心的轉折點。Google 是最早把「商業與 IT 對齊」具體實踐出來的公司之一,並進一步啟發了更廣泛的 DevOps 思潮。
當 Google 高速成長時,傳統系統管理員(system administrator)的角色正在被重新定義:
- 不再把既有慣例視為權威,而是從第一性原理重新思考
- 不等待整個產業共識成熟,自行用軟體與自動化形塑新角色
- 把這個重新塑形後的角色命名為「網站可靠性工程師(Site Reliability Engineer, SRE)」
推薦序作者馬克・伯吉斯(Mark Burgess)認為,這本書最珍貴的並非任何具體的程式碼或設計,而是 Google 公開了背後的「推理過程」——實作會過時,但推理永遠有價值。
SRE 與一般產業的差異#
- 整體一致的視角:本書由同一家公司的眾多 SRE 撰寫,雖然每章風格迥異,但服務於同一個目標
- 承認衝突與取捨:書中坦然呈現組織內部的競爭利益,以及為協調這些利益做出的取捨
- 可參考而不可照抄:Google 的做法並非通用解,但其推理脈絡足以啟發各種規模的組織
序言:什麼是 SRE?#
軟體工程(software engineering)與養育孩子有一點很相似:誕生前的孕育辛苦而困難,但誕生之後才是真正花費大量心力的階段。然而軟體工程作為一門學科,反而花更多時間談論「誕生前」的部分;事實上,一個系統的總成本有 40–90% 是在交付之後才產生的。
把已部署的軟體視為「已穩定、不再需要工程師關注」是一種錯誤的產業觀念。
因此必須有另一個學科,專注於軟體物件的完整生命週期:從構思、部署、運維、改良,到最終的退役。Google 把這個學科稱為「網站可靠性工程(Site Reliability Engineering, SRE)」。
SRE 的三個關鍵字#
- 工程師(Engineer):把電腦科學與工程的原則應用於大型分散式系統的設計與開發
- 可靠性(Reliability):可靠性是任何產品最基本的特性——沒人能用的系統毫無價值
- SRE 努力提升可靠性,但達到「夠可靠」之後,就把心力轉投到新功能或新產品上
- 服務(Service):SRE 負責的是建在分散式基礎建設之上的服務,從全球儲存到信件、搜尋等
SRE 與業界俗稱的 DevOps 確有重疊(都把基礎設施當作程式碼來管理),但 SRE 的首要焦點是可靠性,並且強烈傾向於「消除運維本身的必要性」。
第一位 SRE 是誰?#
本書編者認為,最早具備 SRE 特質的人,可能是 1960 年代 Apollo 計畫的瑪格麗特・漢密爾頓(Margaret Hamilton)。
她有以下幾項深具 SRE 精神的行動:
- 在模擬器中觀察到女兒誤觸 DSKY 按鍵導致任務崩潰,便預警在真實任務中若太空人誤選 P01 程式(會清除導航資料)將會發生災難
- 主動提出在飛行軟體中加入錯誤檢查碼的變更請求,但被 NASA 高層以「太空人不會犯錯」否決
- 退而求其次,把警告寫進任務規格文件——數天後 Apollo 8 任務中,太空人吉姆・洛弗爾(Jim Lovell)真的誤觸 P01,正是這份文件協助團隊在有限時間內恢復導航資料
漢密爾頓的故事體現了 SRE 的核心精神:徹底、用心、相信準備與文件的價值、對「可能出錯」有覺察,並具備強烈的預防意識。
本書的閱讀建議#
- 本書是 Google SRE 成員與校友的論文合集,較接近會議文集而非單一作者書籍
- 不必依序閱讀,但建議從第 2 章(Google 生產環境)與第 3 章(擁抱風險)入手
- 章節依主題分為三大區塊:
- 第二部「原則(Principles)」
- 第三部「實踐(Practices)」
- 第四部「管理(Management)」
- 每一部前都有導讀,標示該部分的重點與相關延伸閱讀