阿里DevOps轉(zhuǎn)型之后,運維平臺如何建設(shè)?
阿里巴巴 DevOps 轉(zhuǎn)型之后,運維平臺是如何建設(shè)的?阿里巴巴高級技術(shù)專家陳喻結(jié)合自身對運維的理解,業(yè)務(wù)場景的分析和業(yè)界方法論的一些思考,得出來一些***實踐分享給大家。
“我是這個應(yīng)用的 Owner”是阿里巴巴 DevOps 轉(zhuǎn)型的重要策略,運維有了這個策略以后,PE 大量的日常工作就可以釋放出來,會有更多的時間去思考沉淀,去做編碼,去做以前不曾做的事情。
運維的三個階段
運維的三個階段分別如下:
- 黑屏,人工運維,三角形是代表整個運維給用戶的一些體感或者給研發(fā)的體感,目前很多企業(yè)可能還是這樣。
 - 白屏,自動化運維,以前把腳本做成工具去弄,有什么特征,人 push 機(jī)器去干活,自助運維。
 - 無屏,智能化運維,用戶對運維體感很少,但是運維這個領(lǐng)域是不變的。最重要的是人機(jī)交互變少了,無屏雖說是不可能的,非常極端,但是個趨勢,少量的人機(jī)交互,它有自決策、自驅(qū)動。
 
自動化運維基礎(chǔ)
做自動化運維,我認(rèn)為有四大基礎(chǔ):
- 運維標(biāo)準(zhǔn)與規(guī)范。我們的標(biāo)準(zhǔn)有什么好處,讓研發(fā) follow 這個標(biāo)準(zhǔn),標(biāo)準(zhǔn)會在工具里固化。
 - 泛監(jiān)控,運行時,靜態(tài),數(shù)據(jù)化,可視化。泛監(jiān)控,不是說傳統(tǒng)的監(jiān)控,是把線上想知道的一切都數(shù)據(jù)化,最終數(shù)據(jù)不是給人看的,是給機(jī)器去消費的,數(shù)據(jù)是我們的生產(chǎn)資料,不是可視化,那不是我們的目標(biāo)。
 - CMDB。CMDB 應(yīng)該放什么,一般放服務(wù)器相關(guān)的、網(wǎng)絡(luò)相關(guān)的、應(yīng)用相關(guān)的這三個維度的相關(guān)信息。
 
經(jīng)常有人會說 CMDB 不準(zhǔn),數(shù)據(jù)不準(zhǔn)是因為沒有把數(shù)據(jù)生產(chǎn)和數(shù)據(jù)消費形成閉環(huán),如果形成了閉環(huán)數(shù)據(jù)不準(zhǔn),那是因為你不用這個數(shù)據(jù),所以不準(zhǔn)。
- 高效的 CI/CD/CD。我們一定要具備快速的交付能力,主要體現(xiàn)在兩個方面:***,新開發(fā)的能力能不能快速上線;第二,想擴(kuò)容一臺機(jī)器能不能快速擴(kuò)出來。
 
上面兩個能力抽象出來,有如下三塊:
- 持續(xù)集成(CI),很多人說持續(xù)集成工具不好用,效率低,其實持續(xù)集成的本質(zhì)是要自動化測試。如果研發(fā)部不具備自動化測試的能力,持續(xù)集成怎么做都是失敗的。
 
持續(xù)集成里最重要的一點就是要推行單元測試、集成測試還有系統(tǒng)測試。單測是保證自己沒問題,集成測試是保證跟上下游沒問題,系統(tǒng)測試是保證整個系統(tǒng)沒問題。
- 持續(xù)交付(CD),有很多人說持續(xù)交付本質(zhì)是一個 Pipeline,CI 的目標(biāo)是什么?快速正確打一個包出來。CD 的目標(biāo)是什么?能夠快速把一個包在不同的環(huán)境驗證它是 ok 的,可以放到線上去,這就是持續(xù)交付要干的事。
 
持續(xù)交付里很關(guān)鍵的一點我們要解決,就是它的環(huán)境一致性、配置一致性。環(huán)境一致性可以用 Docker 解決,Docker 本身就是一種標(biāo)準(zhǔn)化的東西。
所以說***條用 Docker,肯定是標(biāo)準(zhǔn)化的,另外一個問題,配置是不是一致,是不是動靜分離。
- 持續(xù)部署(CD),是一種能力,這種能力非常重要,就是把一個包快速部署在你想要的地方。
 
持續(xù)部署有如下三個痛點:
- 對包的文件的分發(fā),阿里有一個叫蜻蜓的產(chǎn)品,是做了 SP2P,在 P2P 的基礎(chǔ)上加了一個 Super。
 - 應(yīng)用啟動,很多應(yīng)用啟動的時候要兩三分鐘,這是很有問題的。
 - 部署起來以后這個業(yè)務(wù)是不是正確的,大家一定要做一個 HealthCheck,不是運維做,是 PE 做,一定要把這個要求說出來,執(zhí)行 HealthCheck 這個腳本。
 
運維系統(tǒng)的重要特性
中間件研發(fā)首先關(guān)注穩(wěn)定性,其次是效率,然后是易擴(kuò)展。運維研發(fā)里面的六個重要特征,每一個都非常重要,以下是我感觸比較深的幾個:
- 高可用,在做同城容災(zāi)演練的時候,我把關(guān)一切,結(jié)果發(fā)現(xiàn)運維系統(tǒng)掛了,救命的東西沒有了怎么辦?所以說運維系統(tǒng)一定要高可用,不一定是高并發(fā)。
 - 冪等性,冪等性是分布式系統(tǒng)設(shè)計中十分重要的概念,也非常重要。
 - 可回滾,這個是做運維最基本的一個 sense,你做的任何操作是不是可控的。如果真正做可回滾,事情沒有這么復(fù)雜。
 - 高效率,如果你的企業(yè)發(fā)展非??焖伲愕囊?guī)模性效應(yīng)已經(jīng)來了,你的運維系統(tǒng)一定要具備很高效率,快速擴(kuò)容、快速部署這個效率我們要追求***。
 
研發(fā)定義運維,配置驅(qū)動變更
2015 年 11 月 4 日設(shè)想的架構(gòu)圖
從最下面看,是我們的基礎(chǔ)設(shè)施,提供三種能力,包括集散、存儲、網(wǎng)絡(luò)。
從右下角的位置看,畫的是一個泛監(jiān)控,它會知道系統(tǒng)、應(yīng)用等,在旁邊標(biāo)了一個字,現(xiàn)狀,我要通過這個現(xiàn)狀把線上的系統(tǒng)全部數(shù)據(jù)化,然后放到?jīng)Q策中心。
左上角有 CMDB,現(xiàn)在很多變更系統(tǒng),很多強調(diào)流程。我本人是做研發(fā)出身,非常抵觸流程,流程不是一個效率工具,它是阻礙效率的。
比如故障搞完以后就是一堆的流程,非常阻礙效率,是質(zhì)量控制的一個工具。流程不是不要,是把流程做到系統(tǒng)里面去,讓系統(tǒng)幫人做決策,而不是人在那里點。
CMDB 定義了我剛才說的目標(biāo),現(xiàn)狀通過監(jiān)控拿到了,目標(biāo)也知道了,這個時候還覺得這個事情很復(fù)雜嗎?
我認(rèn)為這看你怎么去做。想做成人工還是做成自動或者做成智能,都取決于這個地方。所以智能里一定要有數(shù)據(jù)。
舉個例子,通過智能分析出目標(biāo)狀態(tài)是使這個應(yīng)用有 100 個 VM,但是現(xiàn)在狀態(tài)只有 80 個,一看這兩個不一樣,要擴(kuò)容 20 臺,如果系統(tǒng)做得更智能一點,通過圖上左邊的事件中心提示我 20 臺負(fù)載較輕的放在哪,可以調(diào)度過去,然后去做執(zhí)行變更。
基于這些東西得出來兩個結(jié)論,“研發(fā)定義運維”,“配置驅(qū)動變更”。
為什么是研發(fā)定義運維?
研發(fā)定義運維(DDO),研發(fā)最貼近業(yè)務(wù),最應(yīng)該清楚這個業(yè)務(wù)應(yīng)該具備什么樣的能力,只有研發(fā)才知道這個業(yè)務(wù) KPS 是多少。
為什么是配置驅(qū)動變更?
配置就是把目標(biāo)改變一下,你跟我說一個運維場景,我可以在這個圖里面 run 起來,配置只需要改你的目標(biāo)狀態(tài),比如把你的狀態(tài) 10VM 變成 15 個 VM。
這就是“研發(fā)定義運維,配置驅(qū)動變更”前因后果的思考。
運維工具與方法論
精益發(fā)現(xiàn)價值
價值來源于用戶的需求,而不是自己的 YY,我們的價值來源于用戶。
精益對我***的感觸就是要發(fā)現(xiàn)價值。精益思想,什么東西是有價值的,能夠?qū)τ脩魩砦镔|(zhì)上的或者身體上的愉悅的東西就是有價值的。
今天也有人問,DevOps 團(tuán)隊是該拆還是該合,我想他應(yīng)該首先弄清楚面對的是什么樣的問題,問題的優(yōu)先級是什么?如果只解決一個問題,也許并不是 DevOps 團(tuán)隊拆不拆的問題。
敏捷交付價值
敏捷也是對我影響很多的。很多人談敏捷,我們團(tuán)隊里也搞敏捷,敏捷是要快速交付價值,它是一系列的方法論。
但是在引入的時候千萬注意,別人行的東西你不一定行,你需要的東西并不一定是敏捷,要因團(tuán)隊而異,形成一個環(huán),持續(xù)反饋。
OODA 環(huán)
OODA 環(huán),就是形成閉環(huán),讓價值快速流動。
應(yīng)用運維平臺 ATOM
應(yīng)用運維平臺的基礎(chǔ)設(shè)施是一層,二層是運維中臺,最上面一塊是要做的 PaaS 平臺,這個平臺分為如下三步:
- 預(yù)算、容量、資源、彈性。這個是 PaaS 平臺上非常重要的一塊,目的就是讓資源快速流動起來,流向正確的方向來產(chǎn)生價值。資源如果常年不增不減,是有問題的。
 - 應(yīng)用管理。這是日常要做的操作,規(guī)?;焖賹σ粋€單元建站、擴(kuò)容、縮容。
 - 數(shù)據(jù)化運營。一定要講數(shù)據(jù),數(shù)據(jù)不是可視化出來一些報表,是要給結(jié)論,告訴用戶這個數(shù)據(jù)完了以后應(yīng)該是什么,規(guī)則中心是什么,是所有運維同學(xué)日常的運維經(jīng)驗沉淀。
 
批量騰挪工具
這個工具不是所有人都需要,可以解決機(jī)房的搬遷,湊框遷移。
單機(jī)閉環(huán),這是騰挪工具的關(guān)鍵,如果企業(yè)有一定規(guī)模,這個是需要的。
彈性伸縮工具
彈性伸縮是我們的決策中心。它決定你的資源往哪個地方流,非常關(guān)鍵。
***,這里是運維領(lǐng)域技術(shù)含量最深的一個地方,要搞機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、強化學(xué)習(xí)、算法等。
彈性伸縮架構(gòu),這個平臺不一定很多企業(yè)都需要,這里主要介紹在雙 11 的時候是怎么用的。
建一個站點起來只有 5000 的交易能力,可以通過 10 分鐘時間讓它具有 30000 萬的能力,快速決策,快速調(diào)動起來。
彈性里面是一個 OODA 環(huán),拿它的數(shù)據(jù)和應(yīng)用極限做比較,得出來一個策略中心。
彈性一般有水平伸縮、垂直伸縮,對線上做管理,當(dāng)然我們有額度,這是比較精細(xì)化的管理。
彈性有觀察者模式還有自動化執(zhí)行,每次彈性完以后有一個控制臺,雙 11 做全年壓測的時候一般情況下不看這個。
實施效果
我們的展望,PE 轉(zhuǎn)型以后,希望讓研發(fā)來使用我們的運維,降低他運維的復(fù)雜度,降低運維的門檻。
我們是通過系統(tǒng)化的方式來做,研發(fā)只需要把他的目標(biāo)寫出來,讓運維這個東西像山一樣沉下去,感知不到。
然后是資源的閉環(huán)。規(guī)模化,現(xiàn)在 PE 做兩大塊,***是規(guī)?;\維,然后是單應(yīng)用運維,很多人理解把線上系統(tǒng)發(fā)布到線上去,擴(kuò)容幾臺,這就是單應(yīng)用運維。其實我們應(yīng)用的藍(lán)海是規(guī)?;\維,這會涉及到方方面面的事情。
作者:陳喻(亞松)
簡介:阿里巴巴高級技術(shù)專家。2014 年入職阿里負(fù)責(zé)持續(xù)集成持續(xù)交付平臺研發(fā)團(tuán)隊,2015 年調(diào)入運維團(tuán)隊,負(fù)責(zé)交易運維、無線運維 2 個團(tuán)隊,帶領(lǐng)團(tuán)隊保障日常運維及雙 11 大促運維。2016 年開始負(fù)責(zé) Sigma 彈性&資源運營團(tuán)隊,主要領(lǐng)域為集群彈性,應(yīng)用彈性,資源運營,規(guī)?;\維,支撐雙 11,在 2016,2017 連續(xù) 2 年獲得雙 11 卓越貢獻(xiàn)獎。





























 
 
 









 
 
 
 