站點可靠性工程SRE與平臺工程比較

banq發表於2022-02-25

在過去的十年中,工程和技術組織已經融合了一套通用的最佳實踐來構建和部署雲原生應用程式。這些最佳實踐包括持續交付、容器化和構建可觀察系統。
與此同時,雲原生組織已經從根本上改變了他們的組織方式,從大型部門(開發、質量保證、運營、釋出)轉移到較小的獨立開發團隊。這些應用程式開發團隊由兩個新功能支援:站點可靠性工程和平臺工程。SRE和平臺工程是傳統運維團隊的精神繼承者,將軟體工程的學科帶入運維的各個方面。
 

站點可靠性工程與平臺工程
平臺工程團隊將軟體工程原理應用於加速軟體交付. 平臺工程師確保應用程式開發團隊在軟體交付生命週期的各個方面保持高效。
站點可靠性工程團隊應用軟體工程原理來提高可靠性。站點可靠性工程師將可能影響雲應用程式整體可靠性的故障的頻率和影響降至最低。
這兩個團隊經常混淆,這些術語有時可以互換使用。事實上,一些組織將 SRE 和平臺工程整合到同一個功能中。發生這種情況是因為兩個角色都應用了一組共同​​的原則:

  • 平臺即產品。這些團隊應該花時間瞭解他們的內部客戶、構建路線圖、制定計劃的釋出節奏、編寫文件以及完成軟體產品中的所有工作。
  • 自助服務平臺。這些團隊構建他們的平臺供內部使用。在這些平臺中,對最佳實踐進行了編碼,因此這些平臺的使用者無需擔心——他們只需按下按鈕。在Puppet Labs 2020 年 DevOps 狀態報告中,Puppet Labs 發現高功能 DevOps 組織比低 DevOps 進化組織擁有更多的自助服務基礎設施。
  • 持續關注消除勞累。正如 Google SRE 書中定義的那樣,辛勤工作是手動的、重複的、可自動化的、戰術性的工作。最好的 SRE 和平臺團隊會發現工作量,並努力消除它。

 

平臺工程
平臺工程師不斷檢查從源頭到生產的整個軟體開發生命週期。從這個自省的過程中,他們建立了一個工作流程,使應用程式開發人員能夠快速編碼和運送軟體。一個基本的工作流程通常包括一個與持續整合系統相連的原始碼控制系統,以及一個將工件部署到生產中的方法。
隨著使用工作流程的應用開發者數量的增加,平臺的需求也在不斷變化。不同的應用開發者團隊需要類似但不同的工作流程,所以自助服務基礎設施變得很重要。自助服務的常見平臺工程目標包括CI/CD、警報和部署工作流程。
除了自助服務外,教育和協作也成為挑戰。平臺工程師發現他們越來越多地花費時間來教育應用開發者最佳實踐和如何最好地使用平臺。應用開發者也發現他們依賴於其他的應用開發者團隊,並期待平臺工程團隊給他們提供與不同團隊進行有效協作的工具。
 

網站可靠性工程
網站可靠性工程師建立和發展系統,以自動、可靠地執行應用程式。網站可靠性工程的概念起源於谷歌,並在谷歌SRE書中有詳細記載。谷歌負責技術運營的高階副總裁Ben Treynor Sloss將SRE描述為 "當你要求一個軟體工程師來設計一個運營團隊時會發生什麼"。
SRE定義服務水平目標並建立系統以幫助服務實現這些目標。這些系統演變成一個平臺和工作流程,包括監控、事件管理、消除單點故障、故障緩解等等。
SRE文化的一個關鍵部分是把每一個故障當作可靠性系統的故障。嚴格的事後檢驗對於確定故障的根本原因至關重要,並將糾正措施引入自動系統以繼續提高可靠性。
 

New Relic公司的SRE和平臺工程
我們中的一個人(Bjorn Freeman-Benson)在2015年之前一直管理著New Relic的工程組織,因為它從少數幾個客戶發展到數萬個客戶,都在向雲端傳送每秒數百萬的請求。New Relic有獨立的SRE和平臺工程團隊,遵循上述的一般原則。
這些團隊被分開建立的原因之一是,在這些角色中茁壯成長的人是不同的。雖然SRE和平臺工程師除了經典的程式設計技能外,還需要強大的系統工程技能,但這些角色決定了他們的性格型別非常不同。SRE傾向於享受危機管理,並從排除故障中獲得腎上腺素的刺激。SRE經理在強大的壓力下茁壯成長,並善於招募和管理有類似想法的人。另一方面,平臺工程師是更典型的軟體工程師,他們更喜歡不受干擾地工作在大的、複雜的問題上。
平臺工程經理喜歡在一個穩定的節奏下工作。
 

DevOps和GitOps
在過去的十年中,DevOps已經成為一個流行的術語,用來描述許多這些實踐。最近,GitOps也作為一個流行術語出現。DevOps和GitOps與平臺和SRE團隊有什麼關係?
DevOps和GitOps都是一套鬆散的原則,即如何管理基礎設施的不同方面。這兩種理念的核心原則--自動化、基礎設施即程式碼、軟體工程的應用--都非常相似。
DevOps是一個廣泛的運動,開始時專注於消除開發和運營之間的傳統孤島。隨著時間的推移,諸如基礎設施自動化和以運營為中心的工程應用等策略已被廣泛接受,成為更好地建立高可靠性應用的方法。
GitOps是一種應用交付的方法。在GitOps中,宣告性的配置被用來編纂應用程式在任何時候的理想狀態。這種配置在一個版本化的原始碼控制系統中被管理,作為唯一的真理來源。這確保了配置的可審計性、可複製性和一致性。
 

釋放應用開發的生產力
網站可靠性工程和平臺工程是最佳化工程組織以構建雲原生應用程式的兩個功能,是至關重要的。SRE團隊致力於為高度可靠的應用提供基礎設施,而平臺工程團隊則致力於為快速應用開發提供基礎設施。這兩個團隊一起釋放了應用開發團隊的生產力。
 

相關文章