簡介: 隨着阿里巴巴多元化業務 20 多年的高速發展,技術體系經歷了 web 時代、移動化時代、數據智能時代、雲計算時代等多個重大變革。在這些變革中,開發者面對的技術體系、工具體系、知識體系也在不斷進化。研發工具在其中起到了技術規模化和降本提效的關鍵做用。前端
隨着阿里巴巴多元化業務 20 多年的高速發展,技術體系經歷了 web 時代、移動化時代、數據智能時代、雲計算時代等多個重大變革。在這些變革中,開發者面對的技術體系、工具體系、知識體系也在不斷進化。研發工具在其中起到了技術規模化和降本提效的關鍵做用。web
一般企業中技術人員會按照技術工種分爲前端、移動端、服務端、數據、算法、測試、運維等多個角色,這也表明着當前軟件工程領域的幾大技術分工。每種技術棧都有本身獨有的技術發展路徑和配套工具集,在阿里巴巴除了這種縱向的技術維度切分之外,還存在按照用戶感知路徑從前日後的橫向切分。好比偏向業務側的 no-code/low-code 編程,偏向通用側的 pro-code 編程等。算法
研發工具體系發展大致分爲:技術棧標準化、工具流程平臺一體化、細分場景技術多樣化三個主要階段。編程
在一種特定技術領域發展初期或者公司剛成立之時,會出現技術框架百家爭鳴,多種研發流程並行的狀況,一般主流技術棧收斂是提高研發效率的第一選擇。好比阿里開發中 Java 技術棧人員佔比超過 50%,基於 Java 技術棧演進出的中間件、編程框架、配套工具,以及研發流程會高度耦合,造成統一研發解決方案。安全
解決方案的產品化會誕生一體化的工具流程平臺,而此平臺對企業的核心收益在於將固有流程標準化和自動化,擡升了全部技術員工的技能底線,從而提高平均人效。另外一方面工具平臺能夠幫助企業積累可用資產,並將過程數據進行彙總分析,爲管理者提供決策依據。架構
研發工具發展的第三階段是與企業業務深度耦合和定製後的場景化,實現特定領域的效能突破。好比 OA 領域的無代碼編程、前端智能化 P2C、服務端函數編程等。app
咱們一般所說的 DevOps 是計劃、代碼、開發、測試、發佈、運維、監控的全流程,分爲三大階段:需求分析階段、代碼開發階段、交付運維階段,分別對應以需求爲中心、以代碼爲中心、及以應用爲中心的三個工具平臺。框架
平臺首先須要解決的是如何管理企業研發類資產的問題,一般分爲知識類資產(需求、文檔、設計圖等)、代碼類資產(程序、配置、數據等)、應用與資源類資產(實現對外服務的邏輯單元以及背後的物理資產)。其次須要記錄研發過程所產生的數據,用於分析尋找提高效率的路徑。less
工具平臺會將資產數據和過程數據沉澱到統一的數據中臺之上。而串聯數據的正是 DevOps 從計劃到監控的標準化流程。在阿里咱們稱之爲價值流,表明着一個業務價值從定義到實現的全過程,而這種價值交付的速度正是研發效能。運維
當前企業上雲幾乎成爲必選,創建 DevOps 體系的時候必需要考慮「用好雲」的問題。從阿里巴巴的經驗來看,「用好雲」的關鍵是給開發和運維兩種角色分別創建用雲的工具切面。
運維或者 SRE 這個角色是基礎設施的建立和維護者,他所關注的是大量零散的 IT 資產,如何管理這些資產,控制其生產和運維流程是最重要的。咱們會選擇一個基於 ITIL 或者 ITSM 的「雲資源管理平臺」來幫助運維人員提高管理效率,所以稱之爲面向「資源」的管雲界面。
開發和測試所關注的是如何快速安全的將業務需求轉變爲線上能夠被使用的服務。一個或多個服務的組合咱們稱之爲「應用」,而應用能夠運行在一系列雲資源之上,所以它會變成一系列資源的邏輯歸組。咱們會創建應用的開發、測試、運維流程,並將這些流程配置到一個「應用管理平臺」之上,這就是面向「應用」的用雲界面。
在阿里巴巴,咱們經過「雲資源管理平臺」和「應用管理平臺」實現了產研人員與雲的有效鏈接,並經過平臺的流程抽象,實現了對雲技術細節的屏蔽,提高了各角色用雲的效率,並將企業「資源」與「應用」兩種最重要的資產沉澱下來。
隨着 kubernetes、容器化、Serverless、Service Mesh 等徹底基於雲的技術體系逐步成爲業界事實標準,雲原生化成爲了衆多企業技術升級的目標。DevOps 工具體系須要進行升級以適應雲原生的發展趨勢。
Kubernetes 是雲原生的表明技術,首先它從容器編排能力開始不斷演化,不但實現了對底層物理資源的有效屏蔽,還發展出很是強的可編程的擴展能力。基於此能力發展出了一些列中間件、運維工具,甚至是編程框架;其次它具備面向終態的特性,這種聲明式的資源運維模式與傳統面向過程的運維模式有着本質區別,有機會完全擺脫人的控制,實現無人值守的變動。所以雲原生的 DevOps 工具不但須要適配雲原生的技術和產品,並且要可以繼承面向終態的思想,來進一步提高研發運維效率。
阿里巴巴將 GitOps/IaC 理念與雲原生技術相結合,並融合傳統應用管理經驗產生了新一代雲原生研發運維平臺。相比傳統模式,新平臺具有如下幾個特色。
開發人員能夠經過代碼去描述應用的交付過程和運行時狀態,系統根據變動內容自主決定執行策略,將應用狀態逐步逼近終態。在此過程當中系統能夠接收用戶指令或者監控數據的變化,來自主改變變動路徑,確保系統安全可靠。
架構師、SRE、測試工程師、安全工程師均可以對應用的描述代碼進行模塊化定義,在代碼上實現 import功能,引入各個角色的預約義內容和管控規則。應用負責人能夠在規則容許的範圍內對應用進行細節定義。這樣的分層設計一方面能夠減小應用定義的複雜度,另外一方面能夠知足企業分層管控的要求。
將包括交付流程、規則配置、配置項、資源配置等方方面面的內容,經過代碼這個惟一形式來定義,能夠實現運維定義的收斂,大幅下降開發理解各類雲產品的複雜度。並且能夠造成統一操做界面,防止不一樣系統不一樣權限策略帶來的不一致風險。
任何配置的變動都簡化爲代碼變動後,能夠經過統一的 CICD 流程安全可靠地推動到生產環境。這種流程一致性能夠最大程度上保障質量和控制風險,甚至能夠爲運維變動準備自動化測試用例。
阿里巴巴的業務仍在高速發展,雲的技術尤爲是雲原生領域也在快速成熟,不論是軟件開發方法仍是工具體系都須要及時應對挑戰,不斷地下降技術門檻,不斷地提高效率,不斷地下降風險。同時雲原生帶來的標準化和開放性,也讓阿里云云研發團隊有機會不斷地將內部的實踐產品化,經過「雲效平臺」對外輸出,服務於廣大雲上開發者。期待咱們的這些工具和實踐可讓你們「用好雲」,並與咱們一塊兒分享雲所帶來的效能紅利。
原文連接
本文爲阿里雲原創內容,未經容許不得轉載。