大揭秘:Google的系統(tǒng)工程師如何工作
本文根據(jù)系統(tǒng)管理領(lǐng)域知名博客 Thomas A. Limoncelli 的 What is system administration like at Google 整理而成,添加了部分筆者觀點(diǎn)。
Google的系統(tǒng)工程師(System Administrator)如何工作
由于Google的服務(wù)已經(jīng)集群化,系統(tǒng)工程師并不大量接觸硬件比如做安裝服務(wù)器等事情。另外大部分工作也已經(jīng)自動化了,比如架設(shè)LDAP, 負(fù)載均衡等。對照而言,國內(nèi)目前大部分互聯(lián)網(wǎng)公司SA仍然要做大量重復(fù)的底層工作,比如拿一個業(yè)務(wù)的數(shù)據(jù)庫過大需要拆分為例,從系統(tǒng)管理員的角度,需要做以下事情
- 同技術(shù)人員溝通目前業(yè)務(wù)特點(diǎn),制定拆分方案并評估程序風(fēng)險
- 搭建測試環(huán)境,技術(shù)人員測試程序兼容性
- 制定實(shí)施方案,保證業(yè)務(wù)的不停機(jī)平穩(wěn)過渡
- 深夜上線
- 觀察1-2天運(yùn)行情況
我們需要思考上面工作是否是系統(tǒng)管理員以及技術(shù)人員有價值的工作。像Cassandra這樣解決了分布式存儲自動化擴(kuò)展的問題是業(yè)內(nèi)一種發(fā)展方向,盡管Cassandra的穩(wěn)定性還需要改進(jìn))。
Google的系統(tǒng)工程師怎么做?
他們會通常1周值班,響應(yīng)各種問題,比如完成上述場景中的擴(kuò)容業(yè)務(wù)。然后有大約5周左右脫離一線工作來自由思考將這1周內(nèi)碰到的工作進(jìn)行自動化改進(jìn),將那些會反復(fù)碰到的問題通過腳本及監(jiān)控程序完成,或者進(jìn)一步反饋給技術(shù)人員改進(jìn)應(yīng)用程序來實(shí)現(xiàn)自動化。1:5只是個大約比例,時段可以靈活安排。比如也可以按天來安排,1天值班/7天改進(jìn)。當(dāng)改進(jìn)完成之后,下次遇到相同的場景,自動化程序會完成大部分工作。如果在其他公司,SA通常忙碌在一線機(jī)械重復(fù)上述工作,但是在Google, 給系統(tǒng)工程師預(yù)留了相當(dāng)多的時間讓大家思考改進(jìn)。
這就是Google的System Administrator自稱SRE(Site Reliability Engineers)的原因。SRE會不斷在優(yōu)化所負(fù)責(zé)的系統(tǒng),一些人關(guān)注運(yùn)維層面,另外一些可能關(guān)注自動化工具。所有的SA都需要具備一定程序或腳本開發(fā)能力。
因此,當(dāng)遇到Google的數(shù)據(jù)規(guī)模,自動化不是是否需要,而是如何更好實(shí)現(xiàn)的問題。
在Google其他一些令人興奮的工作還包括
- 與開發(fā)技術(shù)人員是協(xié)同的關(guān)系。
- 只需關(guān)心技術(shù),在技術(shù)領(lǐng)域也有職業(yè)生涯上升通道,不必轉(zhuǎn)向技術(shù)管理崗位或其他。
- 同事都非常聰明,通常會覺得自己是最遜的那一個。
- 很多挑戰(zhàn),保守的估計領(lǐng)先行業(yè)2-10年,在這里工作就象給了你一個魔法水晶球,通過你的工作可以預(yù)見這個行業(yè)的未來。
受Google方式的啟發(fā),以下想到的一些可以研究的自動化方向
1. 程序部署
◆C/C++/Java/PHP/Python/Ruby/C# 等語言如何不停機(jī)自動發(fā)布
◆自動發(fā)布如何簡潔的解決模塊依賴性,比如1天需要同時更新10個有相互依賴的模塊,并且不能停止服務(wù)
◆Web容器虛擬化,同一Web容器上可以部署多個業(yè)務(wù),業(yè)務(wù)之間互相隔離,互不影響。
◆將新開發(fā)的服務(wù)程序運(yùn)維自動化。一般的服務(wù)程序從數(shù)量上來說,10是一個分水嶺,10臺以下的服務(wù)通過人工重復(fù)操作方式來管理也問題不大,但是10臺以上就需要自動化管理的方法。很多優(yōu)秀的開源程序(比如Tokyo Cabinet, Redis等)在單機(jī)上表現(xiàn)優(yōu)秀,但是大規(guī)模部署不能。大公司中很多技術(shù)人員經(jīng)常提到很多開源軟件不適合他們就有這方面原因。
2. 資源部署
◆MySQL
◆分布式文件存儲
◆Cache,拿cache自動化管理舉例
◆端口資源管理,不同業(yè)務(wù)使用不同端口,同一應(yīng)用內(nèi)不同的數(shù)據(jù)使用不同的端口,相關(guān)原因可以參看以前cache相關(guān)博文。
◆容量管理,不同的數(shù)據(jù)需要不同的容量
◆動態(tài)擴(kuò)容,應(yīng)用業(yè)務(wù)規(guī)模增長,比如從10G擴(kuò)容到100G
◆Proxy功能,比如虛擬化端口映射,程序訪問的是固定虛擬端口,這樣不需要重啟服務(wù)也可以隨時擴(kuò)充,應(yīng)用也不需要一致性hash, proxy幫你做了。
3. 系統(tǒng)部署
◆OS
◆反向代理與負(fù)載均衡
◆本地分區(qū)容量,批量管理
◆程序發(fā)布與停止,比如一個程序一個點(diǎn)擊部署到100臺服務(wù)器
◆虛擬化,比物理服務(wù)器更容易部署,資源利用率更高,部署更可控
大部分國內(nèi)互聯(lián)網(wǎng)公司基礎(chǔ)技術(shù)還是比較原始的,這跟行業(yè)過分強(qiáng)調(diào)“好產(chǎn)品是運(yùn)營出來的”也有關(guān)系,基礎(chǔ)研發(fā)通常不受重視,長此以往,只能在門檻低的領(lǐng)域打拼,與Google的技術(shù)差異就不止10年了。
51CTO編輯推薦:回頭看看國內(nèi)的系統(tǒng)工程師是如何工作的:
- 漫談運(yùn)維:半神半仙亦民工(國內(nèi)IDC)
- 門戶網(wǎng)站運(yùn)維經(jīng)驗(yàn)談(國內(nèi)大型門戶網(wǎng)站)
想要全面的了解系統(tǒng)運(yùn)維的工作到底是什么樣么?推薦您看看這個專題:SA,神仙與裝機(jī)男:運(yùn)維的工作到底啥樣兒?
另外,51CTO策劃電子雜志《Linux運(yùn)維趨勢》測試刊已經(jīng)發(fā)布,測試刊的主題正是運(yùn)維自動化,感興趣的讀者們可以去下載閱讀。