移動研發 DevOps 落地實踐

做者:姚蘭天(十鏡),螞蟻金服技術專家。小程序

概要:傳統的研發模式已經沒法適應企業在數字化轉型中快速迭代以及研發協同的要求,建設符合業務場景特性和有效支撐高併發、持續迭代集成需求的研發效能實踐迫在眉睫。 本文將圍繞支付寶如何隨着移動市場的高速發展,逐步沉澱優化出適用業務發展需求的研發效能實踐。安全

現場視頻):t.cn/Ai9HuCNT網絡

你們好,我是來自支付寶終端工程技術團隊的十境。本文將帶領你們瞭解支付寶移動端如何隨着移動市場的告訴發展,逐步沉澱優化出適用業務發展需求的研發效能實踐。架構

0. 背景

  • 如何解決百萬級代碼的極速構建?
  • 如何讓上百開發者在同一個 App 上高效研發協同?
  • 如何保障代碼頻繁變動下的交付質量?

顯然,傳統的研發模式已經沒法適應企業在數字化轉型中快速迭代以及研發協同的要求,建設符合業務場景特性和有效支撐高併發、持續迭代集成需求的研發效能實踐迫在眉睫。併發

1. 研發協做平臺現狀

關於支付寶在移動端研發平臺構建的歷程,首先咱們先展開看看目前平臺的現狀,並講述如何參考 DevOps 「三步工做法」 來正向建模咱們的交付價值流,以及這些活動中比較核心的分支模型,構建,持續集成等。模塊化

研發協做平臺大概從 2014 年開始建設,現在支持的 iOS 和 Android 客戶端代碼量都已經超過 300w 行,拆分的 Bundle 數量也都在 300 個以上。咱們每週的構建次數在 1.4W,安裝包平均天天會灰度 2~3 次,開發測試同窗達到近千人的規模。高併發

咱們支撐了螞蟻集團支付寶、網商銀行、財富、口碑等產品的交付,支持的技術棧從最開始的 Android 和 iOS,演進到廠商 SDK、小程序、IoT 及桌面應用等。在這些能力輸出的下層是咱們沉澱的一套研發協做流程,從需求到開發、測試、交付、及發佈後的反饋閉環。工具

支付寶業務的飛速發展,從工具到超級 App,代碼量猛增到 300W+。技術架構上,採用了模塊化動態加載的技術,這就給咱們提了一個問題,如何將 300+ 個 Bundle,在不一樣的團隊裏開發,集成,變成一個高質量的 App 推送到用戶手機上。post

2. DevOps 三步工做法

DevOps 三步工做法,第一步,咱們正向價值流建模,把研發劃分爲 5 個階段(需求階段、開發階段、測試階段、集成階段以及發佈階段),定義每一個階段的准入準出標準。好比需求分析的結果須要拆分到 User Story 級別,經過你們需求評審,達成一致。接着,每一個階段咱們提煉出最重要的活動,好比開發階段,開發同窗天天最多的就是寫代碼,代碼 Review,以及代碼 MR/Push 後觸發的自動化流水線,如編譯、掃描、自動化測試等。這些階段和每一個階段的活動以及人員之間的協做,就構成了咱們交付大圖的脈絡,即咱們常說的價值流學習

經過正向價值流的建模,結合團隊的開發實踐,即可以獲得研發協做平臺產品的一個信息架構圖。

如上圖所示,隨時間演進,咱們沉澱出了一套產品信息圖:從最開始僅僅是安裝包構建的一個在線工具,到產物管理,版本管理,架構拆分後的模塊信息、模塊構建管理,根據構建的產物及場景的不一樣,抽象出了構建配置、渠道配置、持續集成的配置,固然還有其它元數據如證書信息的配置。

咱們參考了敏捷、Scrum 實踐,抽象出迭代的概念來組織每一個模塊涉及的資源如代碼倉庫、需求、缺陷、任務、持續集成流水線還有最重要的團隊和人員。發佈定義了咱們交付的產物,同時也是各團隊工做集成到一塊兒的大容器。

這是咱們研發協做平臺的門戶首頁,開發者能直觀地看到本身關注項目的平常發佈、迭代信息,以及天天須要解決的待辦等,每一個類目和咱們上一頁提煉的信息架構相對應。

  • 拆解「依賴配置」

前面提到咱們經過架構拆分,團隊模塊化協做的方式來應對激增的業務需求。那麼之因此有這張截圖,是想讓你們對咱們的依賴配置有個直觀的感覺,每一個模塊的產物能夠理解爲一個 Zip 包,在某一個安裝包發佈中管理這樣由 300 多個 Bundle 構成的一個依賴列表。咱們的需求集成某種意義上就是這個依賴列表中中模塊版本的升級。模塊拆分也讓咱們的小批量快速交付成爲得以踐行、擁有 2 周發佈一個大版本的能力。

  • 分支模型

需求管理咱們能夠藉助 Jira、Redmine 等工具,或對接內部的項目管理平臺。這裏我直接從開發階段的活動開始。

首先說下 MR,這是咱們的分支模型:「基於分支開發,基於主幹發佈」。開發階段基於 Master 建立迭代分支,基於迭代分支建立 Feature 分支經過 MR 方式在合併到迭代分支前,作一次 Code Review 卡點。集成階段即可以直接基於 Master 分支建立 Bugfix 分支而後在 MR 回 Master 分支。發佈階段基於客戶端版本建立 Tag。

1. 構建的定義與技術架構

接下來講說構建。我把構建定義爲代碼和配置通過構建工具和腳本在環境中執行而產生產物的過程。所以咱們要關注這 4 個要素「代碼、構建腳本、執行環境、產物管理」。代碼和構建腳本由開發者提供,咱們要幫忙管理的是環境和產物。好比 IoT 提個需求過來要支持他們的構建,其實就是給他們準備一個 Docker 鏡像,定義好輸入輸出,把他們產物發佈到 Maven 倉庫或雲存儲中。

  • 構建:技術架構

理解了構建的要素,技術架構也就很明確了,上面是咱們支持的構建業務類型,調度是執行的核心能力,Docker 和 MacOS 是咱們涉及的環境,藉助 Jenkins 來鏈接這些執行機器。環境管理這塊主要是 Docker,Windows 對 Docker 的支持也很好,咱們的 IDE 構建就用的 Windows Docker。咱們有 30 多臺 Mac Pro,爲了更好的管理,採用 Ansible 來作一些預置和軟件升級的工做。

  • 構建:Demo

這是咱們的一次 Android 安裝包構建,時間是 3 分鐘,經過 Jenkins 的界面能夠很直觀的看到經歷了那些步驟及耗費的時間,若是有錯誤也能很快定位到。

2. 自動化流水線架構設計

從構建的單項能力建設,慢慢擴展到了靜態掃描、自動化測試、包大小檢查,安全掃描等驗證的需求。咱們首先會想到持續集成流水線,咱們調研了 Jenkins、Gitlab、Drone、CircleCI、TravisCI 等主流的 CI 工具,最終仍是決定自研一套 CI 平臺來鏈接公司內部的各個團隊的驗證服務。從這個架構圖能夠看出 CI 的內核是 Pipeline 流水線的定義與解析,驗證執行,以及鏈接各服務的接入規約。上層是支持的業務類型,以及觸發流水線的機制設定。

流水線也讓咱們不停的思考如何去更好的可視化,以及 DevOps 實踐「三步工做法」中的逆向反饋設定。好比流水線編排時如何快速驗證,分層分級驗證,作到有效反饋。根據反饋再快速修復。

  • 自動化流水線:列表 Demo

這是咱們的持續集成列表頁面,選擇 IOT 新業務快速試錯,將掃描和冒煙測試都展現給開發測試同窗,這樣對代碼 Push 後的一個驗證有個全局認識,而後他們即可以更好的局部節點優化,好比冒煙測試要獲取什麼樣的報告。

  • 自動化流水線:示例 Demo

這是一條流水線的詳情頁面,點擊每一個節點能夠看到執行的狀態和產物信息,依賴信息等。每一個節點也能夠選擇跳過執行,或選擇從失敗節點從新運行,知足業務接入流水線不一樣階段的使用場景。

3. 發佈:健康度

接下來再介紹一些咱們內部灰度發佈的一些質量指標設計。這是咱們在集成事後經歷內灰、外灰、發佈的界面,每一個階段咱們會聚合各類質量和反饋信息,來幫助咱們去推動每一個階段。

  • 發佈質量分數

這是發佈質量的一個概要信息,及灰度狀況。質量分的曲線能很好的配合咱們工做的節奏。雖然剛開始質量分很是難以設計,不容易全面並準確衡量,但質量分必定要有,而後不停地迭代。剛開始能夠參考 Sonar 的 Quality Gates 和它的質量維度來設計。

  • 發佈:質量維度

這是咱們質量維度的設計,供你們參考一下。

3. 總結

最後簡單總結,以上內容首先介紹了支付寶客戶端研發的現狀,經過 DevOps 「三步工做法」 第一步正向建模工做流,梳理了需求、開發、測試、集成、發佈這 5 個階段及每一個階段的重要活動,造成價值流動的脈絡圖,並參考敏捷開發實踐來組織咱們的產品信息架構。而後重點講述了咱們的構建和持續集成流水線的設計與實現,經過流水線編排、發佈階段質量分的設計來實踐 「三步工做法」的逆向反饋機制。 三步工做法。第三步持續學習和改進能夠基於前 2 步的來達成。

以上介紹的支付寶移動研發 DevOps 落地實踐,目前已經經過移動開發平臺 mPaaS 對外輸出一部分能力。

經過 mPaaS,咱們針對移動端產品的研發管理,可以從產品需求準備,研發,構建,驗證到集成等多個項目階段,充分節約管理成本,提高研發效率。

隨着軟件研發的模式由傳統的瀑布式開發逐步向敏捷開發和 DevOps 演進,變得越來越自動化和智能化,研發、測試、發佈統一完成線上化和流程化將全面提高研發協同效率,並給企業帶來更多的業務價值、

因爲篇幅限制,不少技術要點咱們沒法一一展開,歡迎你們經過技術文檔或點擊「閱讀原文」進一步瞭解 mPaaS :tech.antfin.com/docs/2/4954…

| 活動推薦:MTSC 2019 測試開發大會

MTSC2019 第五屆中國移動互聯網測試開發會將於 6 月 28-29 日在北京國際會議中心舉行,50+ 來自 Google,BAT,TMD 等一線互聯網企業的測試大咖分享精彩議題,涵蓋移動自動化測試、服務端測試、質量保障 QA、高新測試技術(AI+、大數據測試、IoT 測試)等專題。

螞蟻金服多位技術專家將在大會上分享精彩議題,解密螞蟻金服內部移動測試 2.0+ 演進之路、代碼實時染色系統如何完成代碼覆蓋率檢測等,期待與你交流。

往期閱讀

《開篇 | 螞蟻金服 mPaaS 服務端核心組件體系概述》

《螞蟻金服 mPaaS 服務端核心組件:億級併發下的移動端到端網絡接入架構解析》

《mPaaS 核心組件:支付寶如何爲移動端產品構建輿情分析體系?》

《mPaaS 服務端核心組件:移動分析服務 MAS 架構解析》

《螞蟻金服面對億級併發場景的組件體系設計》

《自動化日誌收集及分析在支付寶 App 內的演進》

關注咱們公衆號,得到第一手 mPaaS 技術實踐乾貨

QRCode

釘釘羣:經過釘釘搜索羣號「23124039」

期待你的加入~

相關文章
相關標籤/搜索