DevOps和SRE還沒搞清楚,平臺工程又出現了,它會取代DevOps嗎?
DevOps、SRE和平臺工程的概念在不同時期出現,并由不同的個人和組織開發。
- DevOps作為一個概念是由Patrick Debois和Andrew Shafer在2009年的敏捷會議上提出的。他們試圖通過促進協作文化和在整個軟件開發生命周期中共享責任來彌合軟件開發和操作之間的差距。
- SRE,即站點可靠性工程,是谷歌在21世紀初首創的,用于解決管理大型復雜系統的操作挑戰。谷歌開發了SRE實踐和工具,如Borg集群管理系統和Monarch監控系統,以提高其服務的可靠性和效率。
- 平臺工程是一個較新的概念,建立在SRE工程的基礎上。平臺工程的確切起源不太清楚,但它通常被理解為DevOps和SRE實踐的擴展,重點是為支持整個業務視角的產品開發交付一個全面的平臺。
值得注意的是,雖然這些概念出現在不同的時期。它們都與軟件開發和操作中改進協作、自動化和效率的更廣泛趨勢有關。
在過去的十年中,工程和技術組織已經將構建和部署云原生應用程序的最佳實踐集合在一起。這些最佳實踐包括持續交付、容器化和構建可觀察系統。
與此同時,云原生組織已經從根本上改變了他們的組織方式,從大型部門(開發、QA、運營、發布)轉移到較小的獨立開發團隊。這些應用程序開發團隊得到兩個新功能的支持:站點可靠性工程和平臺工程。SRE和平臺工程是傳統運維團隊的精神繼承者,將軟件工程的學科帶入運維的不同方面。
站點可靠性工程和平臺工程
- 平臺工程團隊應用軟件工程原則來加速軟件交付。平臺工程師確保應用程序開發團隊在軟件交付生命周期的所有方面都是高效的。
- 站點可靠性工程團隊應用軟件工程原則來提高可靠性。站點可靠性工程師將影響云應用整體可靠性的故障頻率和影響降到最低。
這兩個團隊經常混淆,這兩個術語有時可以互換使用。事實上,一些組織將SRE和平臺工程合并到相同的功能中。之所以會出現這種情況,是因為這兩個角色都適用一套共同的原則。
- 平臺即產品。這些團隊應該花時間了解他們的內部客戶,制定路線圖,制定發布節奏計劃,編寫文檔,以及完成軟件產品中的所有事情。
- 自助服務平臺。這些團隊構建自己的平臺供內部使用。在這些平臺中,對最佳實踐進行了編碼,因此這些平臺的用戶無需擔心——他們只需按下按鈕即可。在Puppet Labs的《2020年DevOps現狀報告》中,Puppet Labs發現,高功能DevOps組織比低功能DevOps組織擁有更多的自助服務基礎設施。
- 對消除辛勞的持續關注。正如谷歌SRE書中定義的那樣,辛勞是手動的、重復的、自動化的、戰術的工作。最好的SRE和平臺團隊能夠識別并消除辛勞。
平臺工程
平臺工程師不斷地檢查從源代碼到生產的整個軟件開發生命周期。通過這個內省的過程,他們構建了一個工作流,使應用程序開發人員能夠快速編寫和發布軟件。基本的工作流通常包括與持續集成系統相連接的源代碼控制系統,以及將工件部署到生產環境中的方法。
隨著使用工作流的應用程序開發人員數量的增長,平臺的需求也在變化。不同的應用程序開發團隊需要類似但不同的工作流,因此自助服務基礎設施變得很重要。自助服務的常見平臺工程目標包括CI/CD、警報和部署工作流。
除了自助服務,教育和協作也成為挑戰。平臺工程師發現,他們花越來越多的時間培訓應用程序開發人員,讓他們了解最佳實踐和如何最好地使用平臺。應用程序開發人員還發現他們依賴于其他應用程序開發人員團隊,并期望平臺工程團隊為他們提供與不同團隊高效協作的工具。
站點可靠性工程
站點可靠性工程師創建和改進系統,以自動可靠地運行應用程序。站點可靠性工程的概念起源于谷歌,詳細記錄在谷歌SRE手冊中。谷歌公司負責技術運維的高級副總裁Ben Treynor Sloss將SRE描述為“當你要求軟件工程師設計運維團隊時發生的事情”。
SRE定義服務水平目標,并構建系統來幫助服務實現這些目標。這些系統發展成為一個平臺和工作流程,包括監控、事件管理、消除單點故障、故障緩解等。
SRE文化的一個關鍵部分是將每一個故障視為可靠性系統中的一個故障。嚴格的事后分析對于識別故障的根本原因至關重要,并將糾正措施引入自動化系統以繼續提高可靠性。
New Relic的SRE和平臺工程
我們中的一個人(Bjorn Freeman-Benson)一直管理著New Relic的工程組織,直到2015年,它從少數客戶發展到成千上萬的客戶,所有客戶每秒都向云端發送數百萬個請求。New Relic有獨立的SRE和平臺工程團隊,他們遵循上述一般原則。
這些團隊被分開建立的原因之一是,在這些角色中取得成功的人是不同的。雖然sre和平臺工程師除了需要經典的編程技能外,還需要強大的系統工程技能,但這些角色決定了非常不同的性格類型。sre傾向于享受危機管理,并在排除故障時獲得腎上腺素飆升。SRE經理能在巨大的壓力下茁壯成長,擅長招募和管理想法相似的人。另一方面,平臺工程師是更典型的軟件工程師,他們更喜歡不間斷地工作在大而復雜的問題上。平臺工程經理更喜歡按照一致的節奏進行操作。
DevOps和GitOps
在過去的十年中,DevOps已經成為描述這些實踐的一個流行術語。最近,GitOps也成為了一個流行術語。DevOps和GitOps與平臺和SRE團隊有什么關系?
DevOps和GitOps都是一套關于如何管理基礎設施不同方面的松散編碼原則。這兩種哲學的核心原則——自動化、基礎設施作為代碼、軟件工程的應用——非常相似。
DevOps是一場廣泛的運動,它專注于消除開發和運維之間的傳統豎井。隨著時間的推移,基礎設施自動化和考慮運維的工程應用等策略已經被廣泛接受,成為更好地構建高可靠性應用程序的方法。
GitOps是一種應用程序交付方法。在GitOps中,聲明性配置用于在任何時刻編碼應用程序的所需狀態。這個配置在版本化的源代碼控制系統中作為唯一的真實數據源進行管理。這確保了可審計性、可再現性和配置的一致性。
簡而言之:DevOps是SRE的一套指導原則,而GitOps是平臺工程的一套指導原則。
解鎖應用程序開發效率
站點可靠性工程和平臺工程是優化構建云原生應用的工程組織的兩個關鍵功能。SRE團隊致力于為高可靠的應用程序交付基礎架構,而平臺工程團隊致力于為快速的應用程序開發交付基礎架構。這兩個團隊共同提高了應用程序開發團隊的生產力。
參考:
- EP 52: DevOps vs. SRE vs. Platform Engineering
- Platform Engineering: what is it and why do you need it?


浙公網安備 33010602011771號