近年來,隨著企業的業務形態從線下走到線上,企業的傳統業務逐漸向互聯網方向轉型,對IT系統提出了新的要求,企業級客戶紛紛采用云計算作為新一代的IT架構。互聯網公司的飛速發展,已經印證了云計算可以對互聯網業務提供有力支撐。因此,企業級客戶借鑒互聯網公司的經驗,逐步建立新一代云計算IT架構,以更好地支撐互聯網相關新業務。
Google作為IT行業的標桿,是云計算領域公認的領頭羊之一。Google打造了一套高效的云計算IT架構體系,有力地支撐了Google的互聯網業務,使得其搜索、廣告、視頻、郵箱等業務都極具競爭力。
在Google的云計算IT架構體系中,PaaS平臺最為強大,Google的PaaS平臺管理了內部數十億應用程序,并運行在上百萬臺服務器上。具體來說,Google的PaaS平臺相關的IT架構體系包含兩個部分:一部分是工具層,即數據中心操作系統,包括應用調度、日志檢索、監控報警、測試打包、應用發布、鏡像倉庫等等。Google數據中心操作系統的核心是調度器Borg,Google內部所有的業務應用程序都被Borg統一調度統一運行在Google所有的數據中心里,并實現應用的全生命周期管理。另一部分是管理運維層,即Site Reliability Engineering (SRE)體系,SRE體系強調開發和運維的有機結合,是Google對DevOps的一種實踐。SRE體系最大的特點是對IT人員(包括開發和運維)的管理,諸如各種制度、規范等,最終都落實到了工具的層面,而不只是紙面,切實加強了對IT人員的規約,保證了業務應用的快速交付和穩定運維。
Google SRE體系的本質是提升IT效率
IT行業雖然發展多年,各種高新技術層出不窮,但是IT行業自身的效率仍然不高。從面向對象編程、UML、SOA、瀑布式開發到近些年流行的DevOps、微服務、敏捷開發等等,這些軟件工程方法都是為了提升IT行業軟件開發的效率。跟制造業的工業化程度相比,IT行業的工業化程度還非常弱。但是IT行業的軟件開發、交付、運維,無不需要大量的人力工作,因此,IT公司的技術水平嚴重依賴軟件工程師的水平。
SRE體系跟制造業的工業化程度有異曲同工之處,它們的目的都在于提升效率。一般來說,工業化程度有四層:工業化1.0是機械化和動力化;工業化2.0是自動化和流程化(過程中伴隨著標準化);工業化3.0是信息化;工業化4.0是智能化。由于IT行業特殊性,軟件開發需要腦力勞動,不存在機械化這一維度。Google的SRE體系分為三個層面,分別對應工業化2.0、3.0和4.0:
1、自動化、服務化、標準化,這個層面注重提升IT效率,尤其是業務應用的交付、運維效率,對應工業化2.0;
2、信息化,這個層面強調數據化的IT管理,對業務決策提供數據支持,對應工業化3.0;
3、智能化,這個層面是IT行業的革命性改變,對IT管理的方方面面都要智能化管理,對應工業化4.0。
下面以Google的SRE為例,著重介紹如何有序分步建立高效的PaaS平臺管理體系,從而有效提升IT效率,更好地支撐業務需求。
第一步,應用管理
SRE體系第一步是實現應用管理,把應用全生命周期涉及的各個環節都盡量做到自動化、服務化、標準化,進而提升開發效率、縮短交付周期、加速業務應用迭代,這一步跟工業化2.0相對應。應用的全生命周期包括開發、測試、發布以及線上運維管理等環節,SRE在應用管理方面分別有相應的方法和工具提升這幾個環節的效率。
首先,微服務是SRE采用的一種有利于分工協作的敏捷開發方式。微服務,可以類比工業化大生產提倡的分工協作,它提升了團隊協作效率。每個微服務由一個小團隊負責開發實現,小團隊的人數不多,降低了團隊內的溝通成本。微服務之間用開放的API進行互聯,通過API來封裝每個微服務的內部系統復雜性。更進一步,API采用RESTful風格,使得API的操作符合HTTP標準,更方便理解API操作的語義,便于團隊合作。
其次,容器是SRE采用的標準化應用封裝、分發的方式。容器,可以類比集裝箱,它提供了標準化的應用交付方式,有效降低了環境異構帶來的應用交付復雜度,極大地提升了應用交付的效率。Google采用的容器技術,雖然不是流行的Docker技術,但是理念完全類似。通過把應用程序和所依賴的各種library都打包在一起,形成一個二進制文件,使得該二進制文件在運行時對外部的依賴降到最低,僅依賴Linux內核。這樣一來,Google內部的所有二進制可執行文件(不管程序是用C++寫的還是用Java寫的)都能夠在任何一臺Google的數據中心服務器上運行,進而極大地方便了Google的數據中心操作系統來調度運行各種內部應用程序。當Google的數據中心操作系統調度運行內部應用時,從調度器Borg的角度看,所有的應用都是標準化的容器應用,容器應用需要的資源都是標準的CPU、內存、網絡、硬盤等資源。當應用都變成標準化的容器應用時,PaaS平臺管理的不再是形形色色的應用程序,也不再考慮應用程序對運行環境的各種不同依賴,只需要處理應用的標準化需求,這使得數據中心的管理復雜度大為降低。
DevOps是SRE采用的變更發布、運維管理的方式。DevOps,可以類比供應鏈管理,它提升了應用交付效率、縮短了更新迭代周期。Google內部采用數據中心操作系統來落地DevOps,把很多IT能力變得自動化或是自助服務化。在自動化方面,數據中心操作系統提供了自動化的構建、測試、運維能力。特別的在自動化運維方面,數據中心操作系統可以實現故障自愈、彈性伸縮、流量遷移等自動化運維功能,有效地降低運維復雜度,提升運維效率。在自助服務化方面,數據中心操作系統提供了應用一鍵部署、滾動更新、灰度發布能力,并提供自助的監控、報警、日志服務。有了這些自助服務能力,Google開發人員可以自行發布應用并管理運行中的應用,無須依賴運維,有效地提升了交付效率。
Google內部已經落地了應用全生命周期管理,并完全實現了IT管理自動化、標準化、服務化。
第二步,數據管理
SRE體系第二步是要實現數據管理,把業務應用在運行時產生的各種數據進行采集并提供大數據處理能力,用于后續對業務進行分析,這一步跟工業化3.0相對應。
Google的數據中心操作系統會采集各個IT環節的數據,不僅包括監控數據、報警數據、日志數據等應用運行時產生的數據,還包括開發測試階段的數據。Google利用各環節產生的數據進行各種分析:SRE部門利用監控數據分析應用的資源使用情況,Google的監控系統可以很方便地查詢線上應用系統過去一兩年的監控數據,很容易看出業務對資源消耗的需求,進而有效地進行資源規劃,防止資源浪費提升資源利用率;Google利用日志數據分析業務的運行情況,比如Google的廣告系統利用日志數據分析廣告點擊情況,進而提升廣告點擊率;SRE部門利用報警數據來評估業務系統的穩定性,Google的SRE部門對重要業務系統每個季度的報警次數有嚴格要求,不滿足穩定性要求的業務系統則不允許上線;Google利用測試數據來評估測試用例的質量,如果某個單元測試用例失敗次數過多,該測試用例會被標記為不穩定,并要求編寫該用例的工程師進行改進;Google會采集代碼提交、代碼審查數據,工程師在升職報告里可以附上自己的代碼提交和代碼審查數據,用于側面印證自己的工作量。
Google內部已經落地了數據管理,并基本實現了IT管理信息化。
第三步,智能管理
SRE體系第三步是要實現智能管理,利用上一步采集的各種數據進行分析,然后智能地管理各個IT環節,這一步跟工業化4.0相對應。Google已經實現了部分IT環節的智能管理。Google的數據中心操作系統在運行某些應用時,可以不用人為指定應用運行時需要的資源使用量,調度器Borg自動按需給應用分配資源。Google數據中心冷卻系統的功率會自動根據數據中心的負載情況進行調節,數據中心部門會依據歷史數據對數據中心的負載進行預測,當負載高峰時增大數據中心冷卻系統的功率,當負載低谷時減小數據中心冷卻系統的功率,從而節省數據中心電力開銷。Google的負載均衡系統會根據業務系統的負載變化,自動進行流量調節,防止業務系統過載,保證業務穩定性。
Google內部正逐步實現各IT環節的智能管理。
云計算已經成為下一代企業級IT的事實標準。現階段,IaaS平臺相對成熟,而PaaS平臺還相對早期,企業級客戶對如何搭建、使用、管理PaaS平臺尚有很多困惑。SRE是Google采用的一套行之有效的云計算IT管理體系,我們相信SRE的理念可以被企業級客戶借鑒并應用于PaaS平臺的管理,進而有力地支撐企業級客戶的互聯網新業務。
作者:數人云CEO 王璞