1. 程式人生 > 其它 >阿里巴巴 DevOps 工具體系

阿里巴巴 DevOps 工具體系

簡介:隨著阿里巴巴多元化業務 20 多年的高速發展,技術體系經歷了 web 時代、移動化時代、資料智慧時代、雲端計算時代等多個重大變革。在這些變革中,開發者面對的技術體系、工具體系、知識體系也在不斷進化。研發工具在其中起到了技術規模化和降本提效的關鍵作用。

隨著阿里巴巴多元化業務 20 多年的高速發展,技術體系經歷了 web 時代、移動化時代、資料智慧時代、雲端計算時代等多個重大變革。在這些變革中,開發者面對的技術體系、工具體系、知識體系也在不斷進化。研發工具在其中起到了技術規模化和降本提效的關鍵作用。

工具體系總覽

通常企業中技術人員會按照技術工種分為前端、移動端、服務端、資料、演算法、測試、運維等多個角色,這也代表著當前軟體工程領域的幾大技術分工。每種技術棧都有自己獨有的技術發展路徑和配套工具集,在阿里巴巴除了這種縱向的技術維度切分以外,還存在按照使用者感知路徑從前往後的橫向切分。比如偏向業務側的 no-code/low-code 程式設計,偏向通用側的 pro-code 程式設計等。

研發工具體系發展大體分為:技術棧標準化、工具流程平臺一體化、細分場景技術多樣化三個主要階段。

在一種特定技術領域發展初期或者公司剛成立之時,會出現技術框架百家爭鳴,多種研發流程並行的情況,通常主流技術棧收斂是提升研發效率的第一選擇。比如阿里開發中 Java 技術棧人員佔比超過 50%,基於 Java 技術棧演進出的中介軟體、程式設計框架、配套工具,以及研發流程會高度耦合,形成統一研發解決方案。

解決方案的產品化會誕生一體化的工具流程平臺,而此平臺對企業的核心收益在於將固有流程標準化和自動化,抬升了所有技術員工的技能底線,從而提升平均人效。另一方面工具平臺可以幫助企業積累可用資產,並將過程資料進行彙總分析,為管理者提供決策依據。

研發工具發展的第三階段是與企業業務深度耦合和定製後的場景化,實現特定領域的效能突破。比如 OA 領域的無程式碼程式設計、前端智慧化 P2C、服務端函式程式設計等。

阿里巴巴 DevOps 平臺

我們通常所說的 DevOps 是計劃、程式碼、開發、測試、釋出、運維、監控的全流程,分為三大階段:需求分析階段、程式碼開發階段、交付運維階段,分別對應以需求為中心、以程式碼為中心、及以應用為中心的三個工具平臺。

平臺首先需要解決的是如何管理企業研發類資產的問題,通常分為知識類資產(需求、文件、設計圖等)、程式碼類資產(程式、配置、資料等)、應用與資源類資產(實現對外服務的邏輯單元以及背後的物理資產)。其次需要記錄研發過程所產生的資料,用於分析尋找提升效率的路徑。

工具平臺會將資產資料和過程資料沉澱到統一的資料中臺之上。而串聯資料的正是 DevOps 從計劃到監控的標準化流程。在阿里我們稱之為價值流,代表著一個業務價值從定義到實現的全過程,而這種價值交付的速度正是研發效能。

基於“雲”的 DevOps 體系

當前企業上雲幾乎成為必選,建立 DevOps 體系的時候必須要考慮“用好雲”的問題。從阿里巴巴的經驗來看,“用好雲”的關鍵是給開發和運維兩種角色分別建立用雲的工具切面。

運維或者 SRE 這個角色是基礎設施的建立和維護者,他所關注的是大量零散的 IT 資產,如何管理這些資產,控制其生產和運維流程是最重要的。我們會選擇一個基於 ITIL 或者 ITSM 的“雲資源管理平臺”來幫助運維人員提升管理效率,因此稱之為面向“資源”的管雲介面。

開發和測試所關注的是如何快速安全的將業務需求轉變為線上可以被使用的服務。一個或多個服務的組合我們稱之為“應用”,而應用可以執行在一系列雲資源之上,因此它會變成一系列資源的邏輯歸組。我們會建立應用的開發、測試、運維流程,並將這些流程配置到一個“應用管理平臺”之上,這就是面向“應用”的用雲介面。

在阿里巴巴,我們通過“雲資源管理平臺”和“應用管理平臺”實現了產研人員與雲的有效連線,並通過平臺的流程抽象,實現了對雲技術細節的遮蔽,提升了各角色用雲的效率,並將企業“資源”與“應用”兩種最重要的資產沉澱下來。

DevOps 工具的雲原生趨勢

隨著 kubernetes、容器化、Serverless、Service Mesh 等完全基於雲的技術體系逐步成為業界事實標準,雲原生化成為了眾多企業技術升級的目標。DevOps 工具體系需要進行升級以適應雲原生的發展趨勢。

Kubernetes 是雲原生的代表技術,首先它從容器編排能力開始不斷演化,不但實現了對底層物理資源的有效遮蔽,還發展出非常強的可程式設計的擴充套件能力。基於此能力發展出了一些列中介軟體、運維工具,甚至是程式設計框架;其次它具有面向終態的特性,這種宣告式的資源運維模式與傳統面向過程的運維模式有著本質區別,有機會徹底擺脫人的控制,實現無人值守的變更。因此雲原生的 DevOps 工具不但需要適配雲原生的技術和產品,而且要能夠繼承面向終態的思想,來進一步提升研發運維效率。

阿里巴巴將 GitOps/IaC 理念與雲原生技術相結合,並融合傳統應用管理經驗產生了新一代雲原生研發運維平臺。相比傳統模式,新平臺具備以下幾個特點。

應用終態運維

開發人員可以通過程式碼去描述應用的交付過程和執行時狀態,系統根據變更內容自主決定執行策略,將應用狀態逐步逼近終態。在此過程中系統可以接收使用者指令或者監控資料的變化,來自主改變變更路徑,確保系統安全可靠。

分層定義和管控

架構師、SRE、測試工程師、安全工程師都可以對應用的描述程式碼進行模組化定義,在程式碼上實現 import功能,引入各個角色的預定義內容和管控規則。應用負責人可以在規則允許的範圍內對應用進行細節定義。這樣的分層設計一方面可以減少應用定義的複雜度,另一方面可以滿足企業分層管控的要求。

配置收斂統一

將包括交付流程、規則配置、配置項、資源配置等方方面面的內容,通過程式碼這個唯一形式來定義,可以實現運維定義的收斂,大幅降低開發理解各種雲產品的複雜度。而且可以形成統一操作介面,防止不同系統不同許可權策略帶來的不一致風險。

變更流程一致性

任何配置的變更都簡化為程式碼變更後,可以通過統一的 CICD 流程安全可靠地推進到生產環境。這種流程一致性可以最大程度上保障質量和控制風險,甚至可以為運維變更準備自動化測試用例。

總結

阿里巴巴的業務仍在高速發展,雲的技術尤其是雲原生領域也在快速成熟,不管是軟體開發方法還是工具體系都需要及時應對挑戰,不斷地降低技術門檻,不斷地提升效率,不斷地降低風險。同時雲原生帶來的標準化和開放性,也讓阿里云云研發團隊有機會不斷地將內部的實踐產品化,通過“雲效平臺”對外輸出,服務於廣大雲上開發者。期待我們的這些工具和實踐可以讓大家“用好雲”,並與我們一起分享雲所帶來的效能紅利。

原文連結
本文為阿里雲原創內容,未經允許不得轉載。