歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

Google的系統工程師(SA)如何工作

Google的系統工程師(System Administrator)如何工作

由於Google的服務已經集群化,系統工程師並不大量接觸硬件比如做安裝服務器等事情。另外大部分工作也已經自動化了,比如架設LDAP, 負載均衡等。對照而言,國內目前大部分互聯網公司SA仍然要做大量重復的底層工作,比如拿一個業務的數據庫過大需要拆分為例,從系統管理員的角度,需要做 以下事情

  1. 同技術人員溝通目前業務特點,制定拆分方案並評估程序風險
  2. 搭建測試環境,技術人員測試程序兼容性
  3. 制定實施方案,保證業務的不停機平穩過渡
  4. 深夜上線
  5. 觀察1-2天運行情況

我們需要思考上面工作是否是系統管理員以及技術人員有價值的工作。像Cassandra這樣解決了分布式存儲自動化擴展的問題是業內一種發展方向,盡管Cassandra的穩定性還需要改進)。
 

Google的系統工程師怎麼做?
他們會通常1周值班,響應各種問題,比如完成上述場景中的擴容業務。然後有大約5周左右脫離一線工作來自由思考將這1周內碰到的工作進行自動化改進,將那 些會反復碰到的問題通過腳本及監控程序完成,或者進一步反饋給技術人員改進應用程序來實現自動化。1:5只是個大約比例,時段可以靈活安排。比如也可以按 天來安排,1天值班/7天改進。當改進完成之後,下次遇到相同的場景,自動化程序會完成大部分工作。如果在其他公司,SA通常忙碌在一線機械重復上述工 作,但是在Google, 給系統工程師預留了相當多的時間讓大家思考改進。
 

這就是Google的System Administrator自稱SRE(Site Reliability Engineers)的原因。SRE會不斷在優化所負責的系統,一些人關注運維層面,另外一些可能關注自動化工具。所有的SA都需要具備一定程序或腳本開 發能力。
 

因此,當遇到Google的數據規模,自動化不是是否需要,而是如何更好實現的問題。

 

在Google其他一些令人興奮的工作還包括

  • 與開發技術人員是協同的關系。
  • 只需關心技術,在技術領域也有職業生涯上升通道,不必轉向技術管理崗位或其他。
  • 同事都非常聰明,通常會覺得自己是最遜的那一個。
  • 很多挑戰,保守的估計領先行業2-10年,在這裡工作就象給了你一個魔法水晶球,通過你的工作可以預見這個行業的未來。

受Google方式的啟發,以下想到的一些可以研究的自動化方向
 

1. 程序部署

C/C++/Java/PHP/Python/Ruby/C# 等語言如何不停機自動發布
自動發布如何簡潔的解決模塊依賴性,比如1天需要同時更新10個有相互依賴的模塊,並且不能停止服務
Web容器虛擬化,同一Web容器上可以部署多個業務,業務之間互相隔離,互不影響。
將新開發的服務程序運維自動化。一般的服務程序從數量上來說,10是一個分水嶺,10台以下的服務通過人工重復操作方式來管理也問題不大,但是10台以上 就需要自動化管理的方法。很多優秀的開源程序(比如Tokyo Cabinet, Redis等)在單機上表現優秀,但是大規模部署不能。大公司中很多技術人員經常提到很多開源軟件不適合他們就有這方面原因。
 

2. 資源部署

MySQL
分布式文件存儲
Cache,拿cache自動化管理舉例
端口資源管理,不同業務使用不同端口,同一應用內不同的數據使用不同的端口,相關原因可以參看以前cache相關博文。
容量管理,不同的數據需要不同的容量
動態擴容,應用業務規模增長,比如從10G擴容到100G
Proxy功能,比如虛擬化端口映射,程序訪問的是固定虛擬端口,這樣不需要重啟服務也可以隨時擴充,應用也不需要一致性hash, proxy幫你做了。
 

3. 系統部署

OS
反向代理與負載均衡
本地分區容量,批量管理
程序發布與停止,比如一個程序一個點擊部署到100台服務器
虛擬化,比物理服務器更容易部署,資源利用率更高,部署更可控

大部分國內互聯網公司基礎技術還是比較原始的,這跟行業過分強調“好產品是運營出來的”也有關系,基礎研發通常不受重視,長此以往,只能在門檻低的領域打拼,與Google的技術差異就不止10年了。

(圖:大型機GEORGE的紙帶編程年代)

Copyright © Linux教程網 All Rights Reserved