推薦:Site Reliability Engineering (SRE, 網站可靠性工程)

文章推薦指數: 80 %
投票人數:10人

SRE 全名是Site Reliability Engineering 網站可靠性工程,是Google 提倡的系統管理實踐之道、指導思想,這個名詞同時也是軟體工程師(Software ... Togglenavigation CompleteThink Categories AWS83 About24 Blog5 Coding4 ComputerScience6 Container8 DevOps43 DistributedSystems15 GCP8 Linux9 Misc3 OSX4 Redmine6 Reference5 SRE24 SoftwareEngineering8 經營管理51 軟體測試11 AWS DevOps 軟體工程 經營管理 字典工具 About 關於這裡 關於作者 GTCafeStudio 喝咖啡聊音樂(v2021) 推薦:SiteReliabilityEngineering(SRE,網站可靠性工程) SRE全名是SiteReliabilityEngineering網站可靠性工程,是Google提倡的系統管理實踐之道、指導思想,這個名詞同時也是軟體工程師(SoftwareEngineer)的角色,可以類比於傳統的維運工程師或系統工程師,但是SRE是用計算機科學和軟體工程手段,實踐大型系統維運、分散式系統的設計與開發。

推薦閱讀這本書我個人分成以下幾個部分,讀者可以依據個人身份、角色、經驗,選擇有興趣的部分: 一、指導原則:這段是描述SRE時會提到的關鍵原則 二、事件管理:該如何面對異常事件、管理、從失敗中學習 三、工程實踐:用軟體工程來看待系統維運 四、管理與訓練:管理者如何在團隊中實踐SRE的精神。

五、箴言:書本有很多讓人省思的箴言,值得深思 一、指導原則這本書Part2談SRE的指導原則,也是大部分在描述SRE的文章、或者職缺描述(JobDescription,JD)時,一定會有的原則,這些原則包含了: 擁抱風險、錯誤預算(ErrorBudget):重點在於激勵團隊共同承擔責任,從錯誤中學習,這點跟DevOps精神是一致的。

服務水準目標:討論SLIs,SLOs,SLAs等概念 減少瑣事:用50%的時間,開發自動化維運工作 監控分散式系統 自動化、簡單化:自動化可能的問題以及其必要性 發行工程(ReleaseEngineering):可以說是對應到持續交付(ContinuousDelivery)的概念 軟體工程實踐維運工作:這也是SRE跟一般維運工程師、系統工程師不一樣,重點在於OpsasCode的概念 這段是認識SRE想法的入門心法,要如何讓團隊理解SRE,這些章節提供了很多指導原則。

二、事件管理書本Part3具體實踐針對事件管理有很多著墨,我以時間點來看整理事件的前、中、後,團隊應該做什麼?下圖是我整理的想法,也是SRE書中提到的概念: 詳細參閱:演講:從緊急事件談SRE應變能力的培養:我在DevOpsDaysTaipei2018分享的心得 書本章節先後次序剛好是時間軸次序,整理如下: CH11BeingOn-Call:從事件發生之前,如何平衡On-call的工作 CH12EffectiveTroubleshooting:討論事件當下,如何有效地故障排除技巧 CH13EmergencyResponse:整理了緊急事件處理的案例,以及面對的方法 CH14ManagingIncidents:討論事件管理的方法,事件當下的角色、協作、作業、程序、溝通…等 CH15PostmortemCulture:LearningfromFailure:如何從錯誤中學習的文化、不究責 CH28AcceleratingSREstoOn-CallandBeyond:如何培養SRE加入On-Call CH33LessonsLearnedfromOtherIndustries:從不同專業背景學習 異常事件處理非常仰賴紮實的軟體工程、團隊協作能力、應變管理,在各種領域都有類似的案例。

特別用了其他領域的經驗,整理了類似的想法給大家參考: 緊急應變(EmergencyResponse):這篇整理幾個例子,其中電影『薩利機長』是我最喜歡引用的例子。

跨領域的緊急應變-SRV斷弦事件:音樂舞台表演看異常事件的處理 如果你的時間有限、如果你不是技術背景,那麼推薦閱讀這些章節!會讓你有醍醐灌頂的感覺! 三、工程實踐SRE很強調用計算機科學、軟體工程實踐維運工作。

書裡Part3具體實踐有一半的章節都在談論這些屬於硬技能的工程實踐,特別是分散式系統(DistributedSystems),包含了以下: 前端伺服器的負載平衡、資料中心內部的附載平衡 處理系統超載(QPS,RateLimit)、處理連鎖反應 分散式系統:分散式一致化提高可靠性、分散式排程任務、資料處理管線、資料讀寫一致性(CAPtheorem)、分散式共識 可靠的進行大規模發行(LaunchCoordinationEngineers,LCE) 其中對於負載平衡(LoadBalancer)有很多技術、原理的著墨,特別是在分散式架構盛行的年代,很多人不會注意到分散式系統謬論、RateLimitandThrottling、分散式共識、MessageBus…等核心問題。

想要深入了解大型分散式系統是如何運作、背後的原理,想要成為架構師、規劃出能面對大流量的系統,這些章節是必讀的! Updated2019/05/17:由小弟翻譯的書分散式系統設計在2019/05/20上市。

四、管理與訓練如何把SRE的概念放入既有的團隊是不容易的,如果你是團隊的Leader、技術管理階層、企業經營者、產品經理,這些章節是可以好好研究的: 可靠的進行大規模發行 迅速培養SRE加入on-call SRE與其他團隊的溝通與協作 SRE參與模型的演進歷程 其他行業的實踐經驗 DevOps的精神強調團隊的垂直整合,而身為管理者的你,如何讓這樣的新觀念、想法落實到現場,落地到組織,讓團隊能夠自主學習,這些章節有詳細的說明。

五、箴言(Slogan)這本書很多章節開頭有一些意義深遠的**箴言(Slogan)**,完整請參考『SloganinSRE』的整理。

如果想要快速、簡單的了解這本書的精神與想法,快速讀過這些句子,你大概知道這本書的想法。

底下整理我個人很喜歡的句子: Hopeisnotastrategy.(不能將運氣當作策略) Bewarnedthatbeinganexpertismorethanunderstandinghowasystemissupposedtowork.Expertiseisgainedbyinvestigatingwhyasystemdoesn’twork.(值得警惕的是,理解一個系統如何工作,並不能使人成為專家。

只有靠調查系統為何不能正常工作才行。

) Thingsbreak;that’slife.(東西早晚要壞的,這就是生活。

) Ifyouhaven’ttriedit,assumeit’sbroken.(如果你還沒開始親自測試過某件東西,那麼就假設他是壞的。

) Thecostoffailureiseducation.(學習是避免失敗的最好辦法。

) 這些只是其中一小部分,而我個人最喜歡的句子: Thingsbreak;that’slife. 這句話在AWSWhitepaper也經常提到類似的概念,像是Designforfailure:不管是什麼東西,都會壞掉,設計架構時,就要思考壞了怎麼辦?同樣的,ChaosEngineering也是同樣的概念。

另外一段話也是我很喜歡的: 值得警惕的是,理解一個系統如何工作,並不能使人成為專家。

只有靠調查系統為何不能正常工作才行。

這段話呼應到我平常鼓勵同事的話: 沒什麼大神,雷踩多了,還活著的,就是大神。

這是一種推坑的概念,但是延伸想法平常的開發流程,就是要多做系統性的測試。

FAQQ1:DevOps和SRE有啥不一樣? Google說SRE是DevOps的實踐,用程式碼表示就是:classSREimplementsDevOps。

我個人的看法:DevOps是理念原則,SRE則是實踐方法。

DevOps現在的我是用整個企業經營的角度來看(高大上),也就是Development其實是產品開發週期,包含從需求、寫程式、測試、部署等段落,各式各樣的開發流程,不管是敏捷開發、還是我整理的SoftwareDevelopmentLifecycle都是在討論這段;而Operation則是企業整體的營運。

從業務把客戶引入之後,開始使用產品,形成營收(Incoming)、系統維運成本、企業經營成本、最後算出的淨利、毛利…等。

Operation我看的是COO(營運長)的概念,Development我看的是CPO(產品長)的概念。

Q2:SRE要會啥技能? SRE也是軟體工程師,他除了需要具備傳統系統工程師(SystemEngineer)的技能之外,同時要具備軟體開發的能力、分散式系統知識。

至少會一種script、一種compilinglanguage是基本的,了解基礎的計算機科學知識,像是OS、Algorithm、DataStructure、ComputerArchitecture、Networking…都是必要的基礎專業。

Q3:SRE跟傳統的MIS、機房OP有什麼差異? SRE的主軸任務是維持系統的穩定服務,必須用程式自動化完成這些任務。

自動化代表著,要瞭解如何軟體工程達到目的,而不只是為了自動化而自動化。

Q4:SRE這本書翻譯的好嗎? SRE簡、繁中文版譯者孫宇聰,中國人,2007-2014在GoogleSRETeam。

因為他本身就在GoogleSRE待過很長的時間,所以語意上不是問題,簡繁中文版我都有看過,閱讀上是可以接受與理解的。

Q5:有哪些領域和SRE有關係? 這個問題有點意思,用這張圖來回答比較生動:原文點這裡,歡迎來喇低賽XD Q6:SRE的概念會不會跟敏捷開發有衝突? 這些想法不會衝突。

SRE是強調用軟體工程、機算機科學做維運任務。

敏捷開發團隊具備高度的學習、彈性、自組織的特性,在這樣的條件之下,SRE可以協助團隊更快速面對真實的世界、給予團隊建議。

團隊可以因此更的快地適應,更快地面對市場的挑戰! 對我個人來講,不管是敏捷、SRE、DevOps,目的都是GettingThingsDone,當這樣想的時候,做事的過程,自然而然就會有更宏觀的視野來面對。

相關文章: 談談敏捷開發的看法 協同合作系統建制與導入 學習法則 Q7:SRE這本書適合什麼人看? 如同章節的介紹,這本書很適合開發團隊各種角色一起閱讀討論。

非工程背景、管理職適合閱讀Part1、CH12-16事件管理部分、以及最後的管理與教育訓練。

工程背景則建議完整閱讀整本書。

Q8:哪裡有SRE相關資源以及討論? Facebook社群DevOpsTaiwan、SiteReliabilityEngineeringTaiwan有很多讀書會的資料:SRE讀書會筆記 結語知道SRE這個又新又潮的詞,是在2016年的媒體報導文章開始,那時候我已經負責系統維運工作一段時間,每天面臨各式各樣系統管理、與維運的任務,處理各式各樣系統異常、寫了n篇異常報告,要監控、值班、要管理團隊、要學習Cloud相關知識,在這些日常維運的過程,同時因為DevOps一詞在社群鋪天蓋地的湧現,各種研討會、新技術如荒洪般的衝向我。

這樣的衝擊、經歷,讓我不斷的在思考底下這些問題: 維運的精神? 什麼是維運?維護甚麼?運轉什麼? 什麼是監控?量測與觀測的差異? DevOps字義上是有開發、維運,那測試呢? 那段人生的歲月就在這些思考中起起伏伏、跌跌撞撞中度過,而SRE的出現讓我有了新的方向,特別是書本前言這段讓人非常有感的話: 軟體工程有的時候和育兒類似:雖然生育過程痛苦、艱辛,但是養育成人的過程才是真正耗費心力之處。

傳統的軟體工程花費很多精力討論軟體開發的過程,而不是其後的維護過程。

統計顯示,一套軟體系統的40%~90%成本,其實是花費在建置之後,不斷維護的過程。

業界流行的一個說法:一套系統如果已經開發完成,部署在正式環境上,那麼他就是『穩定的』,不需要那麼多工程師花費精力去最佳化、維護。

我們認為這樣的說法是錯的,從這個角度來看,如果軟體工程主要專注於設計和建構軟體系統,那麼應該有另一個種職業專注於整個軟體系統的生命週期管理:從其設計一直到部署,經歷不斷改進,最後順利除役。

這樣的職業必須具備非常廣泛的技能,並且和其他職業的專注點不同,Google把這個職位稱為網站可靠性工程師(SRE,SiteReliabilityEngineering)。

因為個人Dev、QA、Ops三段完整的經歷,有一些深刻的體悟與心得,加上書本開場這段話,讓我更深刻的體悟到Dev&Ops從來就不只是口號,而是具體且深刻的實踐,是動詞!SRE告訴大家Google如何做,站在巨人肩膀,讓大家有機會走得更穩、更強壯! 本文授權DevOpsDaysTaipei2018及天瓏網路書店全文轉載 最難的事 相關文章(站內)SRE相關 演講:從緊急事件談SRE應變能力的培養 SREOpeningandChapter1 ConclusionSRE SloganinSRE 跨領域的緊急應變-SRV斷弦事件 緊急應變(EmergencyResponse) 分散式一致性問題與共識演算法 測試與自動化相關 淺談軟體測試的階段與策略 輕鬆聊:系統測試(SVT)的三兩事 自動化帶來的問題 WhatisAutomation? 自動化XXX的陷阱 軟體自動化測試常見的問題 維運、運維 系統維運的精神 WhatisOps? 再談啥是維運? 演講:OpsasCodeusingServerless GoLive WhatisMonitoring? 演講:淺談系統監控與CloudWatch的應用 AWSCertifiedSysOpsAdministrator-Associate準備心得 延伸閱讀(站外) 孙宇聪:来自Google的DevOps理念及实践 Google儲存SRE團隊負責人第一手經驗大公開-iTHome DevOpsEngineer、SRE徵才求職雜談-凍仁的筆記 SRE讀書會筆記 Google官方資料 What’stheDifferenceBetweenDevOpsandSRE? SREvs.DevOps:competingstandardsorclosefriends? SREfundamentals:SLIs,SLAsandSLOs Whatis‘SiteReliabilityEngineering’? 相關資料、書 Atlassian’sIncidentManagementHandbook-FreeDownload DatabaseReliabilityEngineering:DesigningandOperatingResilientDatabaseSystems SeekSRE TheSiteReliabilityWorkbook-Online 相關FB社群 DevOpsTaiwan SiteReliabilityEngineeringTaiwan Prev Archive Next Comments 2018/08/0312:43:00 TableofContent 推薦閱讀一、指導原則二、事件管理三、工程實踐四、管理與訓練五、箴言(Slogan)FAQ結語最難的事相關文章(站內)SRE相關測試與自動化相關維運、運維延伸閱讀(站外)Google官方資料相關資料、書相關FB社群 Categories DevOps43SRE24 Tags Lifecycle28SRE31DistributedSystems13ChaosEngineering10DistributedConsensus6DevOpsDays2 About 全站索引 關於這裏 關於作者 學習法則 經營之道 一些領悟 分類哲學 Facebook CompleteThink AWSCertifications ▲



請為這篇文章評分?