即使 Google 一律要求 SRE「50% 專案 / 50% 運維」的平衡,現實中可能因 ticket 量激增而連續數月失衡——團隊或 burnout,或專案陷入停滯。

對策:暫時嵌入一位 SRE 到過載團隊——任務不是幫他們清 queue,而是改善他們的實踐。

嵌入只派一人——兩人會讓被嵌團隊產生防衛反應。

第一階段:學服務、取得脈絡#

嵌入者的職責是闡明「為什麼某些流程與習慣影響可擴展性」——不是幫團隊擋告警,是讓服務真的能 work。

Ops 模式 vs. 非線性擴展#

  • Ops 模式:服務變大就加管理員管 VM
  • SRE 模式:寫軟體或消除擴展性問題,讓人數隨負載線性成長

許多滑入 ops 模式的團隊會說「我的服務很小,規模沒關係」——shadow 他們的 On-Call 評估是否屬實。

  • 服務真的小但對業務重要 → 把焦點放在「目前做法如何阻礙可靠性改善」
  • 服務剛起步 → 為「爆炸性成長」做準備(100 QPS 可能一年變 10k QPS)

找出最大的壓力源#

團隊往往因「不堪壓力」滑入 ops 模式——但壓力可能是真的也可能是想像的。先按「對團隊壓力的影響」排序故障,注意有些小問題可能因團隊歷史而帶來巨大壓力。

找出將要燃燒的火種#

可能的隱患:

  • 知識斷層:大團隊裡過度專業化讓人沒整體理解
  • 被 SRE 維護但慢慢變大的服務:因為「自家人罩」反而沒得到該有的審查
  • 過度仰賴「下個大版本」:把問題延宕數月相信未來能解決
  • 無人診斷的常見告警:被視為短暫但實際分心
  • 被客戶抱怨但無正式 SLI/SLO/SLA 的服務
  • 容量規劃只說「加機器」:未來性不足
  • 事後檢討 action items 只是「rollback」:沒挖根因(如「為什麼某些情境會花 60 秒抓首 MB?」而非「把 timeout 改回 60 秒」)
  • 「dev 才知道」的關鍵元件:SRE 至少要知道「壞了會怎樣、多急要修」

第二階段:分享脈絡#

為團隊寫一份好事後檢討#

別翻舊事後檢討留言改進——會引發防衛。

改採:嵌入期間必有 outage,親自主導下一份事後檢討,示範無究責、深挖根因、有持久修復的版本。

對「為什麼是我?」的反應:

「複雜系統的多重微妙互動下,錯誤無可避免。你當班,我相信你以當時的資訊做出了對的決定。請寫下你每個時刻的想法,讓我們找出系統哪裡誤導你、認知負擔太重的地方。」

破除「壞蘋果理論」——拿掉壞人系統就會好的迷思已被多領域(航空安全等)駁倒。

把火源分類#

兩類:

  • 本來不該存在的火:toil
  • 本來就是工作一部分的火:但需要工具把燃燒控制好

整理清單後攤給團隊看,清楚說明每個火源屬於哪一類、為什麼。

第三階段:推動改變#

團隊健康是「過程」而非「英雄式一次性投入」。

人類擅長 homeostasis——把初始條件設對、教會少數核心原則,他們就會自我調節。

從基礎開始#

第一個目標:寫出 SLO(若尚未存在)。

SLO 是「把團隊從 reactive ops 拉回健康 SRE focus 的最強槓桿」。沒有 SLO,本章其他建議都用不上。

找隊員一起清火種#

別自己動手修——這會加深「改變是別人的事」的錯覺。

改採:

  1. 找一件單人可完成的有用工作
  2. 清楚解釋此工作如何永久解決事後檢討的問題
  3. 你當該變更的 reviewer
  4. 對 2–3 個議題重複此程序

其餘識別到的問題,寫成 bug 或 doc 留給團隊——既散播資訊,也鼓勵團隊重視文件。

解釋你的推理#

不論有沒有人問,主動解釋你每個決定的推理——讓團隊建立心智模型,你離開後他們才能預測「你會怎麼評」。

好範例#

  • 「我不是因為測試不夠擋這次發佈,而是因為這個 quarter 的錯誤預算用光了。」
  • 「Release 需 rollback-safe 因為我們 SLO 很嚴——MTTR 必須很小,不能容許先做深度根因分析再 rollback。」

壞範例#

  • 「不應該讓每個 server 自己產 routing config,因為我們看不到。」
    • → 改:「…不安全因為該段程式的 bug 會跨服務同時失效,而且額外程式碼是 bug 源頭,可能拖慢 rollback。」
  • 「自動化遇到衝突部署時應該放棄。」
    • → 改:「…因為我們做了『所有變更走自動化』的簡化假設,現在顯然被破壞了。若常發生,要找出並消除未受管的變更源頭。」

問引導式問題#

別問載彈式問題(loaded),問引導式問題(leading)讓人回到第一原理。

✅ 「TaskFailures 告警頻繁但 On-Call 多半沒動作。這會對 SLO 有什麼影響?」

❌ 「這些舊的卡死 release 是怎麼回事?」

✅ 「這個 turnup 流程很複雜——你知道為什麼新增實例要改這麼多設定檔嗎?」

❌ 「Frobnitzer 為什麼做這麼多事?」

結語#

嵌入結束後,給團隊:

  • 為何要改變的技術(可能量化)視角
  • 改變看起來的具體例子
  • 對「SRE 民間智慧」的邏輯解釋
  • 處理新情況的核心原則

最後寫一份「postvitam」報告(事生報告,與事後檢討相對)——解釋通往成功的每個關鍵決策。

嵌入結束後續仍持續:design / code review、觀察容量規劃、緊急應變、rollout 流程是否慢慢進步。