有一系列關於網站可靠性工程與 DevOps 關聯性的常見問題,其中幾個問題是:「SRE 和 DevOps 有哪些相似之處? 兩者有何不同? 可以在組織中同時設立 SRE 和 DevOps 嗎?」 本文將分享 SRE 和 DevOps 社群所提供的一些解答,讓我們更深入瞭解它們的關聯性。
兩者有什麼相似的地方?
SRE 和 DevOps 都是為因應挑戰而建立及開發的新式作業實務,這些挑戰包括:
- 實際執行環境和開發流程的複雜性與日俱增
- 對於那些環境持續運作而持續增加的商業相依性
- 無法根據這些環境的大小來線性擴縮工作力
- 需要更快的效能,但同時維持作業穩定性
這兩個作業實務都著重於將焦點放在,對於成功因應挑戰來說至關重要的主題,例如監視/可檢視性、自動化、文件和共同作業軟體開發工具。
SRE 與 DevOps 兩者的工具和工作區域有相當大的重疊。 網站可靠性活頁簿提及:「SRE believes in the same things as DevOps but for slightly different reasons.」(SRE 和 DevOps 擁有相同的概念,但是各自開發的目的稍有不同。)
比較兩種作業實務的三種不同方式
SRE 與 DevOps 之間的相似性很清楚。 真正有趣的是它們差異或分歧的地方。 為了賦予這個問題一些新意﹐我們在這裡提供三種方式來幫助您思考兩者的關聯性。 您可能不同意這些答案,但每個答案都很適合用來展開討論。
「class SRE implements interface DevOps」(SRE 類別實作 DevOps 介面)
網站可靠性活頁簿 (請見資源書單) 的第一章便討論 SRE 和 DevOps。 該章節使用「class SRE implements interface DevOps」(SRE 類別實作 DevOps 介面) 這個句子作為副標題。 這是為了點出 (使用以開發人員為對象的句子) SRE 可能會被視為 DevOps 原理的特定實作型態。 該章節指出:「"DevOps is relatively silent on how to run operations at a detailed level」(相對來說,DevOps 關於如何詳細執行作業的要求較少),而 SRE 在實務上則更具規範性。 因此,兩者有何關聯性的其中一個可能答案是可以將 SRE 視為 DevOps 的許多可能實作型態之一。
SRE 的可靠性,有如 DevOps 的傳遞性
由於 SRE 和 DevOps 具有多個定義,因此這項對比並不是很精準,但是對於區分兩者差異仍可能有所幫助。 您可以先思考這個問題:「如果您必須為每個作業實務找出一或兩個代表字,以反映其核心目的,您會選哪個/哪幾個字?」
如果我們參考網站可靠性工程中樞裡 SRE 的定義:
網站可靠性工程是一項工程準則,其致力於協助組織持續達成適當的系統、服務和產品可靠性等級。
那麼就很容易理解,SRE 的代表字是「可靠性」。 SRE 中間的 R 就是 Reliability (可靠性) 的縮寫,因此這就是將「可靠性」選為代表字的最好原因。
如果參考 Azure DevOps 資源中心裡的 DevOps 定義:
DevOps 是人員、程序與產品的結合,可為終端使用者提供價值的持續傳遞。
那麼 DevOps 的類似代表字可能是「傳遞」。
因此,「SRE 的可靠性,有如 DevOps 的傳遞。」
關注方向
此答案引用自 (或稍微改寫) Thomas Limoncelli 於書籍《Seeking SRE》(尋找 SRE) (請見資源書單) 中提供的內容。 他指出,DevOps 工程師主要著重於軟體開發生命週期程序,偶爾負責實際執行作業職責,而 SRE 著重於實際執行作業,偶爾負責 SDLC 程序職責。
更重要的是,他還繪製一個圖表,一端是軟體開發流程,另一端則是實際執行作業工作。 連接這兩者的是針對向開發人員取得程式碼而建立的慣用流程,這個流程可以引導程式碼完成期望的測試次數,並到達需要的階段,然後再將程式碼用於實際執行環境。
Limoncelli 指出,DevOps 工程師會從開發環境開始,並將投入實際執行環境的步驟自動化。 完成後,工程師會再回到開發環境將瓶頸最佳化。
另一方面,SRE 則著重於實際執行作業,並深入探討程序,以提升最終結果 (基本上,SRE 工程師與 DevOps 工程師著手的起點相反)。
SRE 和 DevOps 著手起點的差異,有助於區分它們。
共存於相同組織
我們想提出的最後一個問題是「是否可以在同一個組織中同時設立 SRE 和 DevOps?」
這個問題的答案為明確的「是」。
我們希望先前的答案提供您一些概念,說明兩個作業實務的重疊部分,以及兩者如何以著重領域互補不重疊的部分。 已經有可靠 DevOps 實務的組織不需建立 SRE 位置或 SRE 小組,但可以小規模地實驗 SRE 實務 (例如嘗試 SLI 和 SLO)。 這是 SRE 相當常見的採用模式。
下一步
您有興趣深入瞭解網站可靠性工程或 DevOps 嗎? 請查看我們的網站可靠性工程中樞和 Azure DevOps 資源中心。