DevOps vs SRE:一個是介面,一個是實作

· tech

#sre#culture

📑 目錄

前一篇講完 SRE 是什麼,順手補一個超常被問、但其實是假問題的比較:「DevOps 和 SRE 有什麼不同?要選哪個?」之所以是假問題,是因為兩者根本不在同一層。Google 用一句很工程師的話破了題:class SRE implements interface DevOps

一個是介面,一個是實作

這句話翻成白話:DevOps 是一個「介面」——它定義了「該做什麼」的原則,但沒規定「怎麼做」;SRE 是 Google 對這個介面的一個「實作」——給出了具體、有主張的做法。

interface DevOps ← 哲學/文化:定義「該做什麼」 減少 silo · 接受失敗為常態 · 逐步變更 · 量測一切 · 自動化 implements(給出具體做法) class SRE implements DevOps ← 怎麼做 error budget · blameless postmortem · canary · SLI/SLO · 消除 toil DevOps 是方向與原則,SRE 是一個具體實作——不是二選一,是不同層次
DevOps 是一場文化運動,講的是原則(打破 Dev/Ops 的高牆、擁抱失敗、快速迭代);SRE 是 Google 把這些原則落地的一套具體方法。問「要選哪個」,就像問「要選物件導向還是 Java」——層次搞錯了

把原則翻成做法:一條條對照

SRE 真正的貢獻,是把 DevOps 那些正確、但抽象的原則,翻成一條條可以照做、可以量測的具體規則。這個系列前面講的每一招,幾乎都能對回一條 DevOps 原則:

DevOps 原則 SRE 的具體做法 減少 silo、共擔責任 Error Budget(同一把尺決策) 接受失敗為常態 Blameless postmortem 逐步、頻繁變更 Canary、滾動發布 量測一切 SLI / SLO、黃金訊號 減少人工、自動化 消除 Toil(上限 50%)
左邊每一條 DevOps 原則,SRE 都給了一個具體、可執行、可量測的答案。這也是為什麼這個系列讀起來像「DevOps 的實作手冊」——它把抽象的信念,變成一條條照著做就有效的規則

所以「vs」是假問題

看懂上面,就知道「DevOps vs SRE」問錯了:你可以「奉行 DevOps」而採用別的實作(SRE 只是 Google 給的、最成體系的一種);SRE 也不是要取代 DevOps,而是把它落地。名詞上的混亂多半來自兩件事:「SRE」常同時指一種方法論和一種職稱/團隊;「DevOps」則常被誤用成「一個會寫 CI/CD 的工程師」或某個工具鏈——但它的本質從來是文化,不是職缺。把層次分清,爭論就消失了。

反思

「A vs B」有時根本是層次搞錯

「DevOps vs SRE」讓我學到一個看待技術爭論的角度:很多「A vs B」的辯論,其實 A 和 B 不在同一維度——一個是哲學、一個是做法,一個是介面規範、一個是具體實作。問「要選哪個」就像問「要選物件導向還是 Java」。我現在遇到這種比較,會先退一步問:這兩個東西,是同一層的替代品,還是不同層的關係? 分清「原則 vs 做法」「目標 vs 手段」,一大半假對立會自己瓦解——這個習慣在技術選型、甚至在讀任何論戰時都很好用。

好方法論的價值,是把抽象原則翻成可執行的規則

DevOps 說「減少 silo」——很對,但怎麼做? SRE 說:給 dev 和 ops 同一個 error budget,逼他們用同一把尺決策。DevOps 說「接受失敗」——SRE 說:blameless postmortem。SRE 最讓我佩服的,不是它講了什麼新哲學(它沒有),而是它把 DevOps 那些正確但飄在空中的原則,一條條翻成了可以照做、可以量測、可以檢核的具體制度。抽象的信念人人會講,能落地成規則的才真正改變行為。 這也是我判斷一套方法論值不值得學的標準:它有沒有把「你應該…」變成「你可以這樣做,並這樣量它有沒有做到」。

別為名詞打架,看你有沒有拿到好處

我看過太多團隊糾結「我們算 DevOps 團隊還是 SRE 團隊」「這個職缺該叫哪個」——但這些都是名詞。真正該問的是那些實質的好處有沒有拿到:silo 有沒有變少?失敗能不能被安全地攤開來談(blameless)?變更是不是又快又可逆?量測(SLO)是不是真的在驅動決策?拿到這些,叫什麼名字都行;沒拿到,名片印得再漂亮也是空的。工具和方法論是為結果服務的,別把手段當成目的——這句話,套在 DevOps、SRE、甚至任何新潮的技術名詞上,都一樣成立。