金絲雀分析與指標選擇(Canary Analysis)

★★★★Draft

FromSRE WorkbookSRE

📚 From the Books

金絲雀分析與指標選擇(Canary Analysis)Deployment & Delivery

跑金絲雀不難,難的是判讀:這一小撮流量的指標到底是「新版壞了」還是「基礎設施本來就有雜訊」?金絲雀本質是一場 A/B 測試——選錯指標、忽略共享故障域、或用錯比較基準,就會得到會騙人的綠燈。

🧠 Intuition

TIP

金絲雀把爆炸半徑縮小,反而讓訊號更難看見:5% 群體吃 20% 錯誤率,整體監控只看到 1% 錯誤,淹沒在其他雜訊裡。所以必須按版本(canary vs control)分解指標,才看得出差異。

⚖️ Tradeoffs

Before/After 比較 — 看似直覺,卻被「時間」汙染
  • 把舊系統整個換成新系統,再比較變更前後行為——問題是時間本身是指標變化的最大來源之一
  • 例:週一發布會把「工作日行為」拿去跟「週末行為」比,引入大量雜訊,難以判斷降級是不是金絲雀造成的。
  • 正解:金絲雀與 control 同時並存、同期比較,把時間變因消掉;並確保指標聚合間隔 ≤ 金絲雀持續時間(用「每小時錯誤數」評估只跑 30 分鐘的金絲雀,會夾進部署前的無關事件)。
共享故障域與隔離 — 金絲雀不一定是罪魁禍首
  • 金絲雀與 control 常共享後端、網路、資料儲存;甚至同一 client 的連續請求會分別命中兩邊。
  • 後果:金絲雀流程喊停時,壞的不一定是金絲雀;金絲雀的不良行為也可能反過來拖累 control,讓 A/B 兩邊同時變差。
  • 指標要隔離:整體 CPU 飆高可能是別的程序造成,**「服務請求所花的 CPU 時間」**才是更好的訊號。
  • 一次只跑一個金絲雀:多個並行會增加心智負擔與訊號汙染。用漸進式多階段(先小群體看最清楚的崩潰/失敗指標,再放大增加信心)兼顧安全與代表性。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading