1. 程式人生 > >SRE之道:創造軟體系統來維護系統執行

SRE之道:創造軟體系統來維護系統執行

引言:本文作者Ben Treynor Sloss,Google 運維團隊的高階副總裁,SRE 名稱的發明者,在這裡提供了他對SRE 的定義。 
本文選自《SRE:Google運維解密》。

  大家都知道, 計算機軟體系統離開人通常是無法自主執行的。那麼,究竟應該如何去運維一個日趨複雜的大型分散式計算系統呢?僱傭系統管理員(sysadmin)運維複雜的計算機系統,是行業內一直以來的普遍做法。而Google 的解決之道是——SRE。 
  SRE 團隊通過僱傭軟體工程師,創造軟體系統來維護系統執行以替代傳統模型中的人工操作。 
  SRE 究竟是如何在Google 起源的呢? 其實我的答案非常簡單:SRE 就是讓軟體工程師來設計一個新型運維團隊的結果。當我在2003 年加入Google 的時候,我的任務就是領導一個由7 名軟體工程師組成的“生產環境維護組”。當時,我的整個職業生涯都專注於軟體工程,所以很自然,我按照自己最習慣的工作方式和管理方式來組建了這個團隊。 
  時過境遷,當年的7 人團隊已經成長為公司內部1000 餘人的SRE 團隊,但是SRE 團隊的指導理念和工作方式還是基本保持了我最初的想法。 
  SRE 方法論中的主要模組,就是SRE 團隊的構成。每個SRE 團隊裡基本上有兩類工程師。 
  第一類,團隊中 50%~60% 是標準的軟體工程師,具體來講,就是那些能夠正常通過Google 軟體工程師招聘流程的人。第二類,其他40%~50% 則是一些基本滿足Google軟體工程師標準(具備85%~99% 所要求的技能),但是同時具有一定程度的其他技術能力的工程師。 目前來看, UNIX 系統內部細節和1~3 層網路知識是Google 最看重的兩類額外的技術能力。 
  除此之外, 所有的SRE 團隊成員都必須非常願意、也非常相信用軟體工程方法可以解決複雜的運維問題。Google 一直密切關注這兩類候選人在招聘通過之後在SRE 團隊中的表現,但是到目前為止還沒有發現他們在工作上和成績上的顯著差異。事實上,由於兩類工程師技術背景互補,SRE 團隊經常能夠尋找到全新的、高效的解決問題的方法。 
按照這個標準來招聘和管理SRE 團隊,我們很快發現SRE 團隊成員具有如下特點: 
  (a) 對重複性、手工性的操作有天然的排斥感。 
  (b) 有足夠的技術能力快速開發出軟體系統以替代手工操作。 
  同時,SRE 團隊和產品研發部門在學術和工作背景上非常相似。因此,從本質上來說,SRE 就是在用軟體工程的思維和方法論完成以前由系統管理員團隊手動完成的任務。這些SRE 傾向於通過設計、構建自動化工具來取代人工操作。 
  SRE 模型成功的關鍵在於對工程的關注。如果沒有持續的、工程化的解決方案,運維的壓力就會不斷增加,團隊也就需要更多的人來完成工作。傳統的Ops 團隊的大小基本與所服務的產品負載呈線性同步增長。如果一個產品非常成功,使用者流量越來越大,就需要更多的團隊成員來重複進行同樣的事情。 
  為了避免這一點,負責運維這個服務的團隊必須有足夠的時間程式設計,否則他們就會被運維工作所淹沒。因此,Google 為整個SRE 團隊所做的所有傳統運維工作設立了一個50% 的上限值。傳統運維工作包括:工單處理、手工操作等。設立這樣一個上限值確保了SRE 團隊有足夠的時間改進所維護的服務,將其變得更穩定和更易於維護。這個上限值並不是目標值。隨著時間推移,SRE 團隊應該傾向於將基本的運維工作全部消除,全力投入在研發任務上。因為整個系統應該可以自主執行,可以自動修復問題。我們的終極目標是推動整個系統趨向於無人化執行,而不僅僅是自動化某些人工流程。當然,在實際執行中,服務規模的不斷擴張和新功能的上線已經讓SRE 夠忙了! 
  Google 的經驗法則是,SRE 團隊必須將50% 的精力花在真實的開發工作上。那麼我們是如何確保每個團隊都是這樣做的呢?首先,我們必須不斷地度量每個團隊的工作時間分配。依靠這個資料,SRE 管理層會對在開發工作上投入時間不夠的團隊進行調整。通常,管理層會要求該團隊將一些常見的運維工作交還給產品研發部門操作,或者從產品研發部門抽調人力參與團隊輪值值班工作。此外,還可以停止該SRE 團隊的一切新增運維工作。只有管理層主動維護每個SRE 團隊的工作平衡,我們才能保障他們有足夠的時間和精力去進行真正有創造性的、自主的研發工作,同時,這也保障了SRE 團隊有足夠的運維經驗,從而讓他們設計出切實解決問題的系統。 
  我們發現 Google SRE 模型在運維大規模複雜系統時有很多優勢。由於SRE 在調整Google 系統的過程中常常直接參與開發、修改程式碼,SRE 文化在公司內部基本代表了一種快速、創新、擁抱變化的文化。實踐證明,SRE 團隊執行、維護、改進一個複雜系統所需要的成員數量與系統部署規模呈非線性增長。而運維同樣的系統,用傳統的系統管理員模型維護則需要更多數量的人。最後,SRE 模型不僅消除了傳統模型中研發團隊和運維團隊的衝突焦點,反而促進了整個產品部門水平的整體提高。因為SRE 團隊和研發團隊之間的成員可以自由流動,整個產品部門的人員都有機會學習和參與大規模運維部署活動,從中獲得平時難以獲得的寶貴知識。普通的開發人員有多少機會能將自己的程式同時跑在100 萬個CPU 的分散式系統上呢? 
  雖然SRE 模型帶來了一些優勢,但也存在一些問題。Google 面對的一個永續性的難題就是如何招聘合適的SRE。首先SRE 要和產品研發部門招聘傳統的軟體開發工程師競爭。 
  其次,由於SRE 要求同時具備多項技能,市場上具有相關從業背景和經驗的人就更少了。由於SRE 模型也比較新,行業內關於如何建立和維護SRE 團隊的相關資訊並不多。最後,SRE 團隊建立之後,由於SRE 模型中為了提高可靠性需要採取一些與常規做法違背的做法,所以需要強有力的管理層支援才能推行下去。例如:由於一個季度內的錯誤預算耗盡而停止釋出新功能的決定,可能需要管理層的支援才能讓產品研發部門重視起來。 
  

本文選自《SRE:Google運維解密》,點此連結可在博文視點官網檢視此書。 
                      圖片描述

想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                       圖片描述

相關推薦

SRE創造軟體系統維護系統執行

引言:本文作者Ben Treynor Sloss,Google 運維團隊的高階副總裁,SRE 名稱的發明者,在這裡提供了他對SRE 的定義。 本文選自《SRE:Google運維解密》。   大家都知道, 計算機軟體系統離開人通常是無法自主執行的。那麼,究竟應該如何去運維一個日趨複雜的大型分散

VxWorks Fuzzing VxWorks 工控實時操作系統漏洞挖掘調試與利用揭秘

設備 coldfire 巴西 目標 自動重啟 ipv packet lec 被攻擊 轉載:freebuf 0×00 前言 關於VxWorks,這裏引用44CON議題《攻擊 VxWorks:從石器時代到星際》探究 一文章中的介紹: VxWorks 是世界上使用最廣泛的一種在嵌

蘋果亞馬遜成功平臺和生態系統

   導語:《福布斯》雜誌網路版本週刊文稱,蘋果和亞馬遜以非傳統的方式獲得了成功。這兩家公司違背了管理學的基本理論,同時取得了令人驚訝的發展。業內人士認為, 這是由於蘋果和亞馬遜打破了核心競爭力的理念,通過平臺和生態系統推動更多人進行創新。   以下為文章全文:   蘋果和

軟體質量SourceMonitor

有些事非做不可,並非為了幸福,而是緩解痛苦,因為不做,則更痛苦——這便是無奈。夏中義 《文心獨白》1 引子部落格又有一陣子沒更新了,最近認真思考了阿里上市的成功之處:選擇和堅持。其實人生並沒有絕對的對與錯,也沒有絕對的成功與失敗。正如“有些人活著,他已經死了”云云,我總是拿對

php學習php中is_file和file_exist的差別,and推斷文件夾is_dir

文件 -m post 文件的 style 文件夾 原因 -a 文件名 在PHP中,is_file和file_isexist是有非常小差別的 1) is_file: $path ="/path/to/file/text.txt"; if(file_exis

SecureCRT學習SecureCRT 經常使用技巧

left popu nal copy crt 通過 時間 ddl pop 快捷鍵: 1、 ctrl + a : 移動光標到行首 2、 ctrl + e :移動光標到行尾 3、 ctrl + d :刪除光標之後的一個字符 4、 ctrl + w : 刪除行首到

APP精細化運營基於數據的“用戶+推送”

APP APP精細化運營之道:基於數據的“用戶+推送” 市面上可供選擇的APP太多,喜新厭舊又是很多人的本性,你的APP想要從同類型產品中脫穎而出,俘獲用戶的芳心,似乎並不是一件容易的事情。為了讓你的目標用戶下載它、註冊它、使用它甚至忠於它,這裏有一個極佳的手段——以數據為驅動的精細化運營。

Oracle數據庫中心雙活ASM vs VPLEX (轉)

復用 讀寫 並且 壓力測試 發出 我們 config 影響 計算節點 雙活方案對比:ASM vs V-PLEX 作者:王文傑 Oracle公司 Principle system analyst Oracle高級服務部 Oracle數據庫中心的災備的演變,經歷了多年的

C11簡潔類型推導

實際應用 num emp 訪問表 eth 遍歷 2.0 volatile typedef 1、 概述   C++11裏面引入了auto和decltype關鍵字來實現類型推導,通過這兩個關鍵字不僅能方便的獲取復雜的類型,還能簡化書寫,提高編碼效率。 2、 auto 2.1

C11簡潔函數綁定

分享 bool 執行 通過 return 類型 n-1 ++ oid 1、 可調用對象   在C++中,有“可調用對象”這麽個概念,那麽什麽是調用對象呢?有哪些情況?我們來看看: 函數指針; 具有operator()成員函數的類對象(仿函數); 可以被轉換為函數指針的類

C11簡潔lambda表達式

編譯 per bool code 操作 定義函數 ica 自加運算 返回 1、 定義   lambda表達式是C++11非常重要也是很常用的特性之一,來源於函數式編程的概念,也是現代編程語言的一個特點。它有如下特點: 聲明式編程風格:就地匿名定義目標函數或者函數,不需要

程序員修煉從小工到專家

合作人 測試 AI 附錄 修煉之道 資源 color 例子 項目 下載地址:網盤下載 內容簡介 · · · · · ·《程序員修煉之道:從小工到專家》內容簡介:《程序員修煉之道》由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改

年薪500萬Python工程師進階Python就業詳細信息?

image 建議 假設 他會 有一個 北京 詳細信息 process 字符 信息 這是Python程序員或程序員總結the5fire,零門檻的方法進入初級,初級到中級,中級到高級。僅供參考 前言 在小組結束時,基於這個問題,我不喜歡最基本的問題,那就是比較大腦的無情來解決

深入淺出爬蟲 Python、Golang與GraphQuery的對比

本文將分別使用 Python ,Golang 以及 GraphQuery 來解析某網站的 素材詳情頁面 ,這個頁面的特色是具有清晰的資料結構,但是DOM結構不夠規範,無法通過單獨的選擇器定位頁面元素,對頁面的解析造成了一些曲折。通過這個頁面的解析過程,深入淺出的瞭解爬蟲的解析思想與這些語言之間的異同。

企業 IT 架構轉型阿里巴巴中臺戰略思想與架構實戰

內容簡介 本書從阿里巴巴啟動中臺戰略說起,詳細闡述共享服務體系如何給企業的業務發展提供了支援。介紹阿里巴巴在建設共享服務體系時如何進行技術框架選擇,構建了哪些重要的技術平臺等,此外,還介紹了組織架構和體制如何更好地支援共享服務體系的持續發展。 主要內容分為三大部分: 第一部分介紹阿里巴巴

前端專案實踐用對了方法,效率翻番

作者:個推Web前端首席前端架構師姜季廷 現在前端非常火熱,相關的技術更是層出不窮,前端人也在不停地學學學。那麼有沒有什麼“偷懶”的方式,幫助我們更加有效地完成編碼的KPI呢?本人從事前端開發工作多年,負責公司多個大型專案前端架構設計與落地實踐,本文就和大家聊一聊前端的“專案實踐之道”與“

架構整潔優秀設計或多餘,有效設計最可取

人們經常談論優秀設計和糟糕設計。你的設計屬於哪一種? 有很多軟體開發團隊的設計從來經不起思考。他們採用一種我稱之為“任務板挪卡” 的方法來代替設計。團隊有一個開發任務清單,比如 Scrum 產品待辦列表,其中的任務被張貼在“任務板”上,然後他們可以將一張便利貼從“任務板”上的“待辦

運維16 張圖片帶你 1 小時學會 Ansible

今天分享一個講解 Ansible 的 PPT,可以用做入門學習之用。內容非常全面,當然,能不能一小時學會還要看你認不認真咯~

我的日誌分析簡單的Web日誌分析指令碼

前言 長話短說,事情的起因是這樣的,由於工作原因需要分析網站日誌,伺服器是windows,iis日誌,在網上找了找,github找了找,居然沒找到,看來只有自己動手豐衣足食。 那麼分析方法我大致可分為三種: 1. 基於時間:將請求url按時間段分類,那麼我們根據每個時間

# 深入淺出爬蟲 Python、Golang與GraphQuery的對比

深入淺出爬蟲之道: Python、Golang與GraphQuery的對比 本文將分別使用 Python ,Golang 以及 GraphQuery 來解析某網站的 素材詳情頁面 ,這個頁面的特色是具有清晰的資料結構,但是DOM結構不夠規範,無法通過單獨的選擇器定位頁面元素,對頁面的解析造成了一些曲折。通過這