自動化是力量的放大器,不是萬靈丹——放大力量不會自動讓力量用對地方,草率的自動化製造的問題不輸它解決的。真正的終點不是「把手動流程自動化」,而是根本不需要人介入的自主系統(autonomous system)。
🧠 Intuition
TIP
自動化有五個層級:① 全手動 → ② 外部的系統專屬腳本 → ③ 外部的通用自動化 → ④ 系統內建的專屬自動化 → ⑤ 不需自動化的自主系統。SRE 的目標是把系統往第 5 階推。
- 自動化的價值:一致性(人做重複工作必有出入)、平台性(bug 修一次就終結、可導出指標)、更快修復與動作(failover 決策遠超人類反應)、節省時間。
- 最強的槓桿是把「執行者」與「執行」解耦——包進自動化後,任何人都能執行,不再綁在某個專家身上。
- 案例「MySQL on Borg」:master failover 手動要 30–90 分鐘、只能保 99%,達不到目標;做出 failover daemon 後 95% 能在 30 秒內完成——心態從「避免 failover」轉為「擁抱它是必然、用自動化快速恢復」。
- 最好用的工具通常由使用者本人寫出來;把自動化外包給專責團隊,會讓它逐漸失去「相關性」。
⚖️ Tradeoffs
事後加自動化 — 快,但債會滾大
- 早期用 SSH 串接腳本派發,初期見效快,但迅速累積成「技術債的膽固醇」。
- 依賴隱含的安全訊號很危險:曾有自動化以「第一顆碟未用 = 無儲存」為前提,把整個叢集資料抹除;「Diskerase」事件則把空集合當成「全部」,幾分鐘內抹掉所有 CDN 機器的碟。
- 自動化覆蓋越廣,人越少直接接觸——一旦它失效,人已無能力接手。
朝『自主』設計 — 最高槓桿在設計階段
- 與其事後補自動化,不如在設計時就解耦子系統、引入清晰 API、最小化副作用,朝自主而非「automated」設計。
- Borg 把叢集當作受管的資源海:以 API 對中央協調者下指令、不再有機器擁有權、跨機搬遷 task 成為系統內建特性,OS 升級與損壞修復對 SRE 幾乎是 no-op。
- 代價:大型系統很難事後改造成自主;但把問題當軟體問題、用工程基本功,長期回報最高。
🔑 Takeaways
- 自動化是放大器不是萬靈丹;五個層級的終點是「不需自動化」的自主系統。
- 最強槓桿是解耦執行者與執行——並擁抱 failover 等必然事件、用自動化快速恢復而非避免。
- 事後加自動化會滾債、且依賴隱含訊號很危險;最高槓桿在設計階段——解耦、清晰 API、最小副作用。
No notes yet — jot your takeaways or Q&A here.