天天看點

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>導讀:</b>阿裡巴巴DevOps轉型之後,運維平台是如何建設的?阿裡巴巴進階技術專家陳喻結合運維自身的了解,業務場景的分析和業界方法論的一些思考,得出來一些最佳實踐分享給大家。

<b>前言</b>

“我是這個應用的 Owner”是阿裡巴巴DevOps轉型的重要政策,運維有了這個政策以後,PE大量的日常工作就可以釋放出來,會有更多的時間去思考沉澱,去做編碼,去做以前不曾做的事情。

<b>運維的三個階段</b>

<b></b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>第一階段:</b>黑屏,三角形是代表整個運維給使用者的一些體感或者給研發的體感,人工運維,目前很多企業可能還是這樣。

<b>第二階段:</b>白屏,自動化運維,以前把腳本做成工具去弄,有什麼特征,人push機器去幹活,自助運維。

<b>第三階段:</b>使用者對運維體感很少,但是運維這個領域是不變的。最重要的是人機互動變少了,無屏雖說是不可能的,非常極端,但是個趨勢,少量的人機互動,它有自決策、自驅動。

<b>自動化運維基礎</b>

做自動化運維,我認為有四大基礎。

<b>第一:運維标準與規範</b>

我們的标準有什麼好處,讓研發 follow 這個标準,标準會在工具裡固化。

<b>第二:泛監控,運作時,靜态,資料化,可視化</b>

泛監控,不是說傳統的監控,是把線上想知道的一切都資料化,最終資料不是給人看的,是給機器去消費的,資料是我們的生産資料,不是可視化,那不是我們的目标。

<b>第三:CMDB</b>

1.CMDB 應該放什麼,一般放伺服器相關的、網絡相關的、應用相關的這三個次元的相關資訊。

2.經常有人會說 CMDB 不準,資料不準是因為沒有把資料生産和資料消費形成閉環,如果形成了閉環資料不準,那是因為你不用這個資料,是以不準。

<b>第四:高效的CI/CD/CD</b>

我們一定要具備快速的傳遞能力,主要展現這兩個方面:第一,新開發的能力能不能快速上線,第二,想擴容一台機器能不能快速擴出來。這兩個能力抽象出來是三塊。

持續內建(CI),很多人說持續內建工具不好用,效率低,其實持續內建的本質是要自動化測試。如果研發部不具備自動化測試的能力,持續內建怎麼做都是失敗的。

持續內建裡最重要的一點就是要推行單元測試、內建測試還有系統測試,單測是保證自己沒問題,內建測試是保證跟上下遊沒問題,系統測試是保證整個系統沒問題。

持續傳遞(CD),有很多人說持續傳遞本質是一個 Pipeline,CI的目标是什麼?快速正确打一個包出來。CD的目标是什麼?能夠快速把一個包在不同的環境驗證它是ok的,可以放到線上去,這就是持續傳遞要幹的事。持續傳遞裡很關鍵的一點我們要解決,就是它的環境一緻性、配置一緻性。環境一緻性可以用Docker解決,Docker 本身就是一種标準化的東西。是以說第一條用 Docker,肯定是标準化的,另外一個問題,配置是不是一緻性,是不是動靜分離。

持續部署(CD),是一種能力,這種能力非常重要,就是把一個包快速部署在你想要的地方。

<b>PS:持續部署的幾個痛點。</b>

1.對包的檔案的分發,阿裡有一個叫蜻蜓的産品,是做了 SP2P,在 P2P 的基礎上加了一個 Super。

2.應用啟動,很多應用啟動的時候要兩三分鐘,這是很有問題的。

3.部署起來以後這個業務是不是正确的,大家一定要做一個 HealthCheck,不是運維做,是PE做,一定要把這個要求說出來,執行 HealthCheck 這個腳本。

<b>運維系統的重要特性</b>

中間件研發首先關注穩定性,其次是效率,然後是易擴充。運維研發裡面的六個重要特征,每一個都非常重要,以下是我感觸比較深的幾個。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>1.高可用</b>

在做同城容災演練的時候,我把關一切,結果發現運維系統挂了,救命的東西沒有了怎麼辦?是以說運維系統一定要是高可用,不一定是高并發。

<b>2.幂等性</b>

幂等性是分布式系統設計中十分重要的概念,這個也非常重要。

<b>3.可復原</b>

這個是做運維最基本的一個 sense,你做的任何操作是不是可控的。如果真正做可復原,其實事情沒有這麼複雜。

<b>4.高效率</b>

如果你的企業發展非常快速,你的規模性效應已經來了,你的運維系統一定要具備很高效率,快速擴容、快速部署這個效率我們要追求極緻。

<b>研發定義運維,配置驅動變更</b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

2015年11月4日設想的架構圖

從最下面看,是我們的基礎設施,提供三種能力,包括集散、存儲、網絡。從右下角的位置看,畫的是一個泛監控,它會知道系統、應用等,在旁邊标了一個字,現狀,我要通過這個現狀把線上的系統全部資料化,然後放到決策中心。

左上角有 CMDB,現在很多變更系統,很多強調流程。我本人是做研發出身,非常抵觸流程,流程不是一個效率工具,它是阻礙效率的。

比如故障搞完以後就是一堆的流程,非常阻礙效率,是品質控制的一個工具。流程不是不要,是把流程做到系統裡面去,讓系統幫人做決策,而不是人在那裡點。

CMDB 定義了我剛才說的目标,現狀通過監控拿到了,目标也知道了,這個時候還覺得這個事情很複雜嗎?我認為這看你怎麼去做。想做成人工還是做成自動或者做成智能,都取決于這個地方。是以智能裡一定要有資料。

舉個例子,通過智能分析出目标狀态是使這個應用有100個VM,但是現在狀态隻有80個,一看這兩個不一樣,要擴容20台,如果系統做得更智能一點,通過圖上左邊的事件中心提示我20台負載較輕的放在哪,可以排程過去,然後去做執行變更。

基于這些東西得出來兩個結論,“研發定義運維”,“配置驅動變更”。

<b>為什麼是研發定義運維?</b>

研發定義運維(DDO),研發最貼近業務,最應該清楚這個業務應該具備什麼樣的能力,隻有研發才知道這個業務KPS是多少。

<b>為什麼是配置驅動變更?</b>

配置就是把目标改變一下,你跟我說一個運維場景,我可以在這個圖裡面 run 起來,配置隻需要改你的目标狀态,比如把你的狀态10VM 變成15個VM。

這就是“研發定義運維,配置驅動變更”前因後果的思考。

<b>運維工具與方法論</b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>精益發現價值</b>

價值來源于使用者的需求,而不是自己的YY,我們的價值來源于使用者。

精益對我最大的感觸就是要發現價值。精益思想,什麼東西是有價值的,能夠對使用者帶來物質上的或者身體上的愉悅的東西就是有價值的。

今天也有人問,DevOps 團隊是該拆還是該合,我想他應該首先弄清楚面對的是什麼樣的問題,問題的優先級是什麼?如果隻解決一個問題,也許并不是DevOps 團隊拆不拆的問題。

<b>靈活傳遞價值</b>

靈活也是對我影響很多的。很多人談靈活,我們團隊裡也搞靈活,靈活是要快速傳遞價值,它是一系列的方法論。但是在引入的時候千萬注意,别人行的東西你不一定行,你需要的東西并不一定是靈活,要因團隊而異,形成一個環,持續回報。

<b>OODA環</b>

OODA 環,就是形成閉環,讓價值快速流動。

<b>應用運維平台ATOM</b>

應用運維平台的基礎設施是一層,二層是運維中台,最上面一塊是要做的 PaaS 平台,這個平台分幾步。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>第一塊,預算、容量、資源、彈性</b>

這個是PaaS 平台上非常重要的一塊,目的就是讓資源快速流動起來,流向正确的方向來産生價值。資源如果常年不增不減,是有問題的。

<b>第二塊,應用管理</b>

這是日常要做的操作,規模化,要快速對一個單元建站、擴容、縮容。

<b>第三塊,資料化營運</b>

一定要講資料,資料不是可視化出來一些報表,是要給結論,告訴使用者這個資料完了以後應該是什麼,規則中心是什麼,是所有運維同學日常的運維經驗沉澱。

<b>批量騰挪工具</b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

這個工具不是所有人都需要,可以解決機房的搬遷,湊框遷移。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

單機閉環,這是騰挪工具的關鍵,如果企業有一定規模,這個是需要的。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>彈性伸縮工具</b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

彈性伸縮是我們的決策中心。它決定你的資源往哪個地方流,非常關鍵。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

最後,這裡是運維領域技術含量最深的一個地方,要搞機器學習、深度學習、強化學習、算法等。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

彈性伸縮架構,這個平台不一定很多企業都需要,這裡主要介紹在雙11的時候是怎麼用的。

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

建一個站點起來隻有5000的交易能力,可以通過10分鐘時間讓它具有30000萬的能力,快速決策,快速調動起來。彈性裡面是一個 OODA 環,拿它的資料和應用極限做比較,得出來一個政策中心。

彈性一般有水準伸縮、垂直伸縮,對線上做管理,當然我們有額度,這是比較精細化的管理。彈性有觀察者模式還有自動化執行,每次彈性完以後有一個控制台,雙11做全年壓測的時候一般情況下不看這個。

<b>實施效果</b>

實戰:阿裡巴巴 DevOps 轉型後的運維平台建設

<b>嘉賓介紹</b>

<b>陳喻(亞松),阿裡巴巴進階技術專家。</b>2014年入職阿裡負責持續內建持續傳遞平台研發團隊,2015年調入運維團隊,負責交易運維、無線運維2個團隊,帶領團隊保障日常運維及雙11大促運維。2016年開始負責Sigma彈性&amp;資源營運團隊,主要領域為叢集彈性,應用彈性,資源營運,規模化運維,支撐雙11,在2016,2017連續2年獲得雙11卓越貢獻獎。

PS:關注雲效(ali_yunxiao)微信号,對話框回複運維,擷取講師PDF材料。