DevOps和SRE有什麼不同,每個意味着什麼

點擊上方“朱小廝的博客”,選擇“設爲星標”

後臺回覆"加羣",加入新技術

DevOps和SRE似乎是同一枚硬幣的兩個面。他們都旨在彌合開發團隊和運維團隊之間的鴻溝,都想要提高軟件部署的效率和軟件運行的可靠性。

在大多數公司中,我們可以看到開發團隊和運維團隊的職責和能力會有重疊。那麼DevOps和SRE有什麼不同,每個意味着什麼?讓我們來看看。

開發,運維和可靠性

在實施DevOps之前,開發和運維團隊是兩個獨立的團隊,每個團隊都有自己的目標。這些團隊之間的差異和溝通缺乏,通常會影響產品,從而最終影響用戶體驗和公司效益。

爲了更好地溝通和構建更好的產品,DevOps已成爲每個公司中最關鍵的職位之一。

DevOps的定義是“一種軟件工程文化和實踐,旨在統一開發和運維” 。這個術語最初是由Andrew Shafer和Patrick Debois於2008年創造的,雖然花了幾年時間才成爲一個通用概念,但如今,幾乎每個企業都在使用DevOps。

Site Reliability Engineer(SRE)的概念自2003年以來一直存在,比DevOps還要古老。它是由創建Google的本·特雷諾(Ben Treynor)創造的。根據Treynor所說,SRE是“軟件開發工程師開始承擔運維人員的任務”

像DevOps一樣,SRE也會整合開發團隊和運維團隊,幫助他們熟悉另一個團隊的工作和任務,同時使得整個應用程序生命週期具有可見性。

DevOps和SRE都倡導自動化和監視,其目標都是減少從開發到部署生產中的時間,同時又不影響代碼或產品的質量。

Google指出,SRE和DevOps彼此之間並沒有太大區別:“在軟件開發和運維方面,他們不是競爭關係,而是旨在打破組織障礙,使得更快地交付更好的軟件的親密朋友。”

DevOps和SRE之間的差異

如前所述,DevOps的概念就是將開發與運維結合起來,定義系統的行爲,並瞭解需要做些什麼來彌合開發團隊和運維團隊之間的“鴻溝”。DevOps的理論是關於使開發團隊和運維團隊合而爲一需要做些什麼。

根據Google的說法,這就是DevOps和SRE之間的主要區別所在。DevOps只是關心需要做什麼,但SRE卻談到了如何可以做到。SRE是通過使用正確的方法,工具等將理論部分擴展爲有效的工作流程。這還涉及在每個人之間分擔責任,並使每個人都具有相同的目標和願景。

爲了進一步說明兩者之間的區別,Google發佈了一系列視頻和帖子,介紹了DevOps和SRE的不同之處。其中兩位Google員工(Seth Vargo和Liz Fong-Jones)撰寫的一篇文章中,他們解釋了SRE

“體現了DevOps的理念,更加註重通過軟件工程師和運維人員的工作來衡量和實現可靠性。”

Seth Vargo和Liz Fong-Jones通過以下5個方面解釋了DevOps和SRE之間的異同:

1. 減少組織項目獨立

通常組織結構複雜的的大型企業,有許多團隊是獨立工作。每個團隊都將產品推向不同的方向,沒有與公司的其他成員進行交流,因此,他們無法從整體上了解產品全局。這可能會在部署中的引發問題。

DevOps的工作是減少孤島,並確保不同團隊最終目標一致。通過共同的願景將團隊組織起來。

SRE不再談論公司中有多少獨立項目,而是在談論如何讓所有人蔘與。這是通過使用整個公司相同的工具和技術來完成的,作爲回報,這有助於在每個人之間共享所有權。

2. 接受故障

儘管DevOps的概念是在故障出現之前進行預防,但是不幸的是,我們無法避免故障。DevOps通過將故障視爲必然發生的事情。

在SRE中,通過制定一個公式來統計故障。換句話說,SRE希望沒有太多錯誤或失敗。

該公式,用兩個關鍵標識符來衡量:服務水平指標( Service Level Indicators ,即SLIs)和服務水平目標( Service Level Objectives ,即SLOs)。

SLIs 通過計算請求延遲,每秒請求的吞吐量、失敗次數來衡量每個請求的失敗。SLOs 源表示SLI在一定時間內的成功。

3. 實施漸進式變革

越來越多的公司希望能夠頻繁發佈,不斷更新迭代自己的產品,並使團隊成員時刻關注新技術和相關技術。

DevOps的目標也是如此,但要以漸進和可處理的方式進行。DevOps和SRE都希望快速發展,SRE強調在這樣做的同時降低故障成本。

4. 工具化和自動化

如前所述,自動化是DevOps和SRE的主要重點之一。DevOps和SRE都鼓勵儘可能增加工具和實現自動化,通過消除人爲操作爲開發人員和運維降低出錯率。

5. 衡量一切

自動化工作流程需要不斷監控。DevOps和SRE團隊都需要確保他們朝着正確的方向發展,並通過衡量一切來做到這一點。

這裏的主要區別在於,SRE圍繞”運維是軟件問題( operations are a software problem)“的概念展開,從而使他們定義了一些可用性度量方法。

SRE還確保公司中的每個人知道如何衡量可靠性,以及在出現故障時該怎麼做。

可靠意味着什麼?

上面,我們討論了責任劃分,接受失敗以及衡量一切。現在,我們需要一種方法來確保一切都確實能夠正常運行並且可靠。換句話說,應該有一個統一的方法來測量每個級別的可靠性。

SRE通過 SLIs 和 SLOs 來衡量,DevOps團隊會衡量失敗率以及一段時間內的成功率,並且兩者通常都是使用不同的工具和方法來進行的。可靠性不僅與基礎架構有關,而且也與應用程序質量,性能、安全性息息相關。

問題可能在應用程序的不同方面發生,並且當發生故障時,我們需要擁有可靠的數據,來了解問題發生的原因。如果我們將數據細分,包括:

  • 堆棧信息

  • 變量狀態

  • JVM狀態:線程,環境變量

  • 相關日誌語句(包括生產中的DEBUG和TRACE)

  • 事件分析(頻率,失敗率,部署,應用程序)

由於這些數據是至關重要的信息,因此我們必須確保它是可靠且可操作的

總結

SRE,有明確的定義,並提出了一系列直接的期望。然而,DevOps更像是一種“自由精神”,其定義和觀點因組織而異。

但是,DevOps和SRE團隊並沒有太大區別。兩者都有助於整合開發人員和運維團隊,同時承擔相似的責任,並專注於實現自動化和可靠性。

最重要的是,一切都與數據有關。你需要數據信息來衡量成功和失敗,以及如何在整個應用程序中獲得持續的可靠性。

英文原文鏈接: https://dzone.com/articles/devops-or-sre-differences-similarities-and-which-r

想知道更多?描下面的二維碼關注我

後臺回覆”加羣“獲取公衆號專屬羣聊入口

噹噹618圖書優惠活動,每滿100-50,我這裏還有一批“實付滿200再減30”的優惠碼TEGNC6 ,囤書薅羊毛再走一波~~(使用時間:5月18~6月1日,使用渠道:噹噹小程序或噹噹APP)

朕已閱 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章