阿里巴巴 DevOps 工具体系
簡介:?隨著阿里巴巴多元化業(yè)務(wù) 20 多年的高速發(fā)展,技術(shù)體系經(jīng)歷了 web 時(shí)代、移動(dòng)化時(shí)代、數(shù)據(jù)智能時(shí)代、云計(jì)算時(shí)代等多個(gè)重大變革。在這些變革中,開發(fā)者面對的技術(shù)體系、工具體系、知識(shí)體系也在不斷進(jìn)化。研發(fā)工具在其中起到了技術(shù)規(guī)?;徒当咎嵝У年P(guān)鍵作用。
隨著阿里巴巴多元化業(yè)務(wù) 20 多年的高速發(fā)展,技術(shù)體系經(jīng)歷了 web 時(shí)代、移動(dòng)化時(shí)代、數(shù)據(jù)智能時(shí)代、云計(jì)算時(shí)代等多個(gè)重大變革。在這些變革中,開發(fā)者面對的技術(shù)體系、工具體系、知識(shí)體系也在不斷進(jìn)化。研發(fā)工具在其中起到了技術(shù)規(guī)?;徒当咎嵝У年P(guān)鍵作用。
工具體系總覽
通常企業(yè)中技術(shù)人員會(huì)按照技術(shù)工種分為前端、移動(dòng)端、服務(wù)端、數(shù)據(jù)、算法、測試、運(yùn)維等多個(gè)角色,這也代表著當(dāng)前軟件工程領(lǐng)域的幾大技術(shù)分工。每種技術(shù)棧都有自己獨(dú)有的技術(shù)發(fā)展路徑和配套工具集,在阿里巴巴除了這種縱向的技術(shù)維度切分以外,還存在按照用戶感知路徑從前往后的橫向切分。比如偏向業(yè)務(wù)側(cè)的 no-code/low-code 編程,偏向通用側(cè)的 pro-code 編程等。
研發(fā)工具體系發(fā)展大體分為:技術(shù)棧標(biāo)準(zhǔn)化、工具流程平臺(tái)一體化、細(xì)分場景技術(shù)多樣化三個(gè)主要階段。
在一種特定技術(shù)領(lǐng)域發(fā)展初期或者公司剛成立之時(shí),會(huì)出現(xiàn)技術(shù)框架百家爭鳴,多種研發(fā)流程并行的情況,通常主流技術(shù)棧收斂是提升研發(fā)效率的第一選擇。比如阿里開發(fā)中 Java 技術(shù)棧人員占比超過 50%,基于 Java 技術(shù)棧演進(jìn)出的中間件、編程框架、配套工具,以及研發(fā)流程會(huì)高度耦合,形成統(tǒng)一研發(fā)解決方案。
解決方案的產(chǎn)品化會(huì)誕生一體化的工具流程平臺(tái),而此平臺(tái)對企業(yè)的核心收益在于將固有流程標(biāo)準(zhǔn)化和自動(dòng)化,抬升了所有技術(shù)員工的技能底線,從而提升平均人效。另一方面工具平臺(tái)可以幫助企業(yè)積累可用資產(chǎn),并將過程數(shù)據(jù)進(jìn)行匯總分析,為管理者提供決策依據(jù)。
研發(fā)工具發(fā)展的第三階段是與企業(yè)業(yè)務(wù)深度耦合和定制后的場景化,實(shí)現(xiàn)特定領(lǐng)域的效能突破。比如 OA 領(lǐng)域的無代碼編程、前端智能化 P2C、服務(wù)端函數(shù)編程等。
阿里巴巴 DevOps 平臺(tái)
我們通常所說的 DevOps 是計(jì)劃、代碼、開發(fā)、測試、發(fā)布、運(yùn)維、監(jiān)控的全流程,分為三大階段:需求分析階段、代碼開發(fā)階段、交付運(yùn)維階段,分別對應(yīng)以需求為中心、以代碼為中心、及以應(yīng)用為中心的三個(gè)工具平臺(tái)。
平臺(tái)首先需要解決的是如何管理企業(yè)研發(fā)類資產(chǎn)的問題,通常分為知識(shí)類資產(chǎn)(需求、文檔、設(shè)計(jì)圖等)、代碼類資產(chǎn)(程序、配置、數(shù)據(jù)等)、應(yīng)用與資源類資產(chǎn)(實(shí)現(xiàn)對外服務(wù)的邏輯單元以及背后的物理資產(chǎn))。其次需要記錄研發(fā)過程所產(chǎn)生的數(shù)據(jù),用于分析尋找提升效率的路徑。
工具平臺(tái)會(huì)將資產(chǎn)數(shù)據(jù)和過程數(shù)據(jù)沉淀到統(tǒng)一的數(shù)據(jù)中臺(tái)之上。而串聯(lián)數(shù)據(jù)的正是 DevOps 從計(jì)劃到監(jiān)控的標(biāo)準(zhǔn)化流程。在阿里我們稱之為價(jià)值流,代表著一個(gè)業(yè)務(wù)價(jià)值從定義到實(shí)現(xiàn)的全過程,而這種價(jià)值交付的速度正是研發(fā)效能。
基于“云”的 DevOps 體系
當(dāng)前企業(yè)上云幾乎成為必選,建立 DevOps 體系的時(shí)候必須要考慮“用好云”的問題。從阿里巴巴的經(jīng)驗(yàn)來看,“用好云”的關(guān)鍵是給開發(fā)和運(yùn)維兩種角色分別建立用云的工具切面。
運(yùn)維或者 SRE 這個(gè)角色是基礎(chǔ)設(shè)施的創(chuàng)建和維護(hù)者,他所關(guān)注的是大量零散的 IT 資產(chǎn),如何管理這些資產(chǎn),控制其生產(chǎn)和運(yùn)維流程是最重要的。我們會(huì)選擇一個(gè)基于 ITIL 或者 ITSM 的“云資源管理平臺(tái)”來幫助運(yùn)維人員提升管理效率,因此稱之為面向“資源”的管云界面。
開發(fā)和測試所關(guān)注的是如何快速安全的將業(yè)務(wù)需求轉(zhuǎn)變?yōu)榫€上可以被使用的服務(wù)。一個(gè)或多個(gè)服務(wù)的組合我們稱之為“應(yīng)用”,而應(yīng)用可以運(yùn)行在一系列云資源之上,因此它會(huì)變成一系列資源的邏輯歸組。我們會(huì)建立應(yīng)用的開發(fā)、測試、運(yùn)維流程,并將這些流程配置到一個(gè)“應(yīng)用管理平臺(tái)”之上,這就是面向“應(yīng)用”的用云界面。
在阿里巴巴,我們通過“云資源管理平臺(tái)”和“應(yīng)用管理平臺(tái)”實(shí)現(xiàn)了產(chǎn)研人員與云的有效連接,并通過平臺(tái)的流程抽象,實(shí)現(xiàn)了對云技術(shù)細(xì)節(jié)的屏蔽,提升了各角色用云的效率,并將企業(yè)“資源”與“應(yīng)用”兩種最重要的資產(chǎn)沉淀下來。
DevOps 工具的云原生趨勢
隨著 kubernetes、容器化、Serverless、Service Mesh 等完全基于云的技術(shù)體系逐步成為業(yè)界事實(shí)標(biāo)準(zhǔn),云原生化成為了眾多企業(yè)技術(shù)升級的目標(biāo)。DevOps 工具體系需要進(jìn)行升級以適應(yīng)云原生的發(fā)展趨勢。
Kubernetes 是云原生的代表技術(shù),首先它從容器編排能力開始不斷演化,不但實(shí)現(xiàn)了對底層物理資源的有效屏蔽,還發(fā)展出非常強(qiáng)的可編程的擴(kuò)展能力。基于此能力發(fā)展出了一些列中間件、運(yùn)維工具,甚至是編程框架;其次它具有面向終態(tài)的特性,這種聲明式的資源運(yùn)維模式與傳統(tǒng)面向過程的運(yùn)維模式有著本質(zhì)區(qū)別,有機(jī)會(huì)徹底擺脫人的控制,實(shí)現(xiàn)無人值守的變更。因此云原生的 DevOps 工具不但需要適配云原生的技術(shù)和產(chǎn)品,而且要能夠繼承面向終態(tài)的思想,來進(jìn)一步提升研發(fā)運(yùn)維效率。
阿里巴巴將 GitOps/IaC 理念與云原生技術(shù)相結(jié)合,并融合傳統(tǒng)應(yīng)用管理經(jīng)驗(yàn)產(chǎn)生了新一代云原生研發(fā)運(yùn)維平臺(tái)。相比傳統(tǒng)模式,新平臺(tái)具備以下幾個(gè)特點(diǎn)。
應(yīng)用終態(tài)運(yùn)維
開發(fā)人員可以通過代碼去描述應(yīng)用的交付過程和運(yùn)行時(shí)狀態(tài),系統(tǒng)根據(jù)變更內(nèi)容自主決定執(zhí)行策略,將應(yīng)用狀態(tài)逐步逼近終態(tài)。在此過程中系統(tǒng)可以接收用戶指令或者監(jiān)控?cái)?shù)據(jù)的變化,來自主改變變更路徑,確保系統(tǒng)安全可靠。
分層定義和管控
架構(gòu)師、SRE、測試工程師、安全工程師都可以對應(yīng)用的描述代碼進(jìn)行模塊化定義,在代碼上實(shí)現(xiàn) import功能,引入各個(gè)角色的預(yù)定義內(nèi)容和管控規(guī)則。應(yīng)用負(fù)責(zé)人可以在規(guī)則允許的范圍內(nèi)對應(yīng)用進(jìn)行細(xì)節(jié)定義。這樣的分層設(shè)計(jì)一方面可以減少應(yīng)用定義的復(fù)雜度,另一方面可以滿足企業(yè)分層管控的要求。
配置收斂統(tǒng)一
將包括交付流程、規(guī)則配置、配置項(xiàng)、資源配置等方方面面的內(nèi)容,通過代碼這個(gè)唯一形式來定義,可以實(shí)現(xiàn)運(yùn)維定義的收斂,大幅降低開發(fā)理解各種云產(chǎn)品的復(fù)雜度。而且可以形成統(tǒng)一操作界面,防止不同系統(tǒng)不同權(quán)限策略帶來的不一致風(fēng)險(xiǎn)。
變更流程一致性
任何配置的變更都簡化為代碼變更后,可以通過統(tǒng)一的 CICD 流程安全可靠地推進(jìn)到生產(chǎn)環(huán)境。這種流程一致性可以最大程度上保障質(zhì)量和控制風(fēng)險(xiǎn),甚至可以為運(yùn)維變更準(zhǔn)備自動(dòng)化測試用例。
總結(jié)
阿里巴巴的業(yè)務(wù)仍在高速發(fā)展,云的技術(shù)尤其是云原生領(lǐng)域也在快速成熟,不管是軟件開發(fā)方法還是工具體系都需要及時(shí)應(yīng)對挑戰(zhàn),不斷地降低技術(shù)門檻,不斷地提升效率,不斷地降低風(fēng)險(xiǎn)。同時(shí)云原生帶來的標(biāo)準(zhǔn)化和開放性,也讓阿里云云研發(fā)團(tuán)隊(duì)有機(jī)會(huì)不斷地將內(nèi)部的實(shí)踐產(chǎn)品化,通過“云效平臺(tái)”對外輸出,服務(wù)于廣大云上開發(fā)者。期待我們的這些工具和實(shí)踐可以讓大家“用好云”,并與我們一起分享云所帶來的效能紅利。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的阿里巴巴 DevOps 工具体系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SaaS服务的私有化部署,这样做最高效|
- 下一篇: mPaas 运维流程介绍