你總是可以在技術領域找到熱門的職位:它們一般是10年前不存在的。雖然站點可靠性工程師(SRE)在十年前確實存在,但他們大多在谷歌和其他一些矽谷的創新的公司中。然而,如今,從優步(Uber)到高盛(Goldman Sachs),SRE無處不在,每家公司都在保持自己網站的線上和穩定。
雖然SRE是業界的熱點,但他們在微服務環境中的角色並不僅僅是天然的契合,就像花生醬和果凍一樣。相反,當SRE和微服務在全球軟體公司內部並行發展時,前者實際上使後者的演進更加困難。
這是因為SRE的生存和死亡都是由他們維護和最佳化的整個系統的全部堆疊檢視所決定的。該角色將開發人員的技能與管理員的技能結合起來,可以產生一個能夠在生產環境中除錯應用程式的員工。
谷歌的工程師們在本質上創造了這個角色,該公司對他們如何管理每天處理高達1000億個請求的系統提供了大量的見解。他們把可靠性歸結為一個基本要素,每一點都像速度和創新一樣令人嚮往。
“最初的情況是,認真對待可靠性和可管理性,這一點非常重要。與我交談過的人花了很多時間思考特性和速度,但他們沒有花時間考慮可靠性作為一個特性,“谷歌SRE總監Todd Underwood說。
Underwood補充說,在專案的每個層面都應該考慮可靠性和可用性。舉個例子,他取用了Gmail失敗的方式,回歸到純粹的HTML體驗,而不是全部停止。“我會帶著醜陋的HTML[版本],但我可以閱讀我的電子郵件。可用性是一個特性,也是最重要的特性。如果你的系統不可用,那麼就沒有使用者評估其他特徵。組織需要選擇優先考慮可靠性。”
Underwood規定,每個組織都是不同的,谷歌遇到的一些問題並不典型。但他確實提倡採取更全面的做法。
“對於分散式應用程式,我們執行的是某種Paxos一致性系統。我們有一整套的關於分散式的共識。這看起來像是一個電腦科學,有點書獃子氣,但是如果你擁有行程並且想知道哪些行程在哪裡執行,那麼沒有Paxos是不可能的,”Underwood說。
Paxos是分散式共識收集的演演算法,通常用於解決分散式系統中可能出現的不一致問題。
Underwood強調了SRE工作的另一個重要方面:可見性。當微服務不斷變化,基於雲的伺服器、容器和資料庫的生態系統中丟擲數十億的資料包時,找出哪裡出了問題,這對於解決任何型別的問題都至關重要。這就是SRE工作的全棧方面的地方。
“過去幾年裡,整個市場一直在非常刻意地轉向微服務。我們在Kubernetes和Istio看到這一點,並從資料中心轉移到雲端。在這一過程中存在一些挑戰。如果你有100個容器,想在一個龐然大物上做堆疊跟蹤,這樣的事情變得非常困難。因此,你需要一個分散式的跟蹤。”谷歌雲平臺產品經理Morgan McLean說。
“要瞭解整個應用程式的健康狀況,並瞭解事務如何流經所有這些不同的微服務,你必須有一個能夠幫助你導航的系統。你要從事務的角度來考慮問題,” AppDynamics的Matt Chotin說。
為瞭解決這個問題,谷歌最近釋出了Stackdriver Trace,Stackdriver Debugger和Stackdriver Profiler。這些工具聽起來像來自傳統企業供應商的舊式測試和運維工具,這是有原因的:它們執行開發人員和運維人員習慣的更傳統的故障排除任務,但重點關註微服務併在雲中執行這些任務。
Stackdriver Profiler處於測試階段,但允許在雲內部執行的應用程式上直接監測CPU利用率,而Stackdriver Debugger提供了一種方法,可以將斷點插入到基於雲的基於微服務的應用程式中,Stackdriver Trace提供了全堆疊跟蹤功能,McLean提到。
Stacktrace Profiler公司的McLean表示:“這對於提高和改善效能非常有用,並且可以降低成本。Snapchat試用了它,在收集資料的一天之內,他們意識到了一小段程式碼 – 我認為這是一個正則運算式 – 不應該在Profiler中顯示出來,實際上是消耗了相當大量的CPU。這可能發生在任何公司身上。它發生在谷歌身上,Snapchat的演示僅僅是對這種剖析技術的強大功能的真正展示。”
“沒有像這樣的工具,改善效能通常是不可能的。追蹤正在成為一種常見的行業實踐。分析和生產除錯在我們的產品中更獨特。”McLean說。
AppDynamics的技術傳播高階主管Matt Chotin分享了對新風格工具的關註。他表示,一旦從單體應用轉移到微服務,團隊需要重新思考他們決定整個應用程式的健康狀況的方式。
“你有很多的系統,微服務的樂趣在於你可以選擇適合特定產品的技術堆疊。每個事物都有自己的監控方式,自己的度量標準等。為了理解整個應用程式的健康狀況,並瞭解事務如何流經所有這些不同的微服務的,你必須有一個能夠幫助你導航跟蹤的系統。你需要的是在事務中考慮事情,”Chotin說。
Chotin說,工程師不應該考慮服務是否正常。“你的DevOps團隊關心的是如何檢視服務以瞭解整體可用性,但就否正確地為業務提供服務而言,你需要進行可貫穿整個生態系統的監控,包括從應用程式碼到基礎架構程式碼。”
谷歌的Underwood表示,公司內部SRE的總體標的是限制其增長,同時實現谷歌的增長。這意味著,正如Underwood所說的那樣:“對於我們來說,SRE在谷歌的基礎上成長是非常重要的。我們希望繼續提高效率。”
因此,他說,谷歌的SRE專註於他們的應用程式。“我們專註於深入瞭解我們所從事的具體服務。不論是從事Google檔案工作的團隊,還是負責廣告投放的團隊,每個團隊都專註於這些服務的高層次細節。與此同時,我們有SRE團隊可以為所有SRE團隊建立通用基礎架構。”
原文連結:https://thenewstack.io/the-role-of-site-reliability-engineering-in-microservices/
本次培訓內容包括:Docker基礎、容器技術、Docker映象、資料共享與持久化、Docker三駕馬車、Docker實踐、Kubernetes基礎、Pod基礎與進階、常用物件操作、服務發現、Helm、Kubernetes核心元件原理分析、Kubernetes服務質量保證、排程詳解與應用場景、網路、基於Kubernetes的CI/CD、基於Kubernetes的配置管理等,點選瞭解具體培訓內容。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。