乾貨 | 金融級網際網路產品持續交付的挑戰與應對

螞蟻金服科技發表於2018-11-28

小螞蟻說:

在金融級網際網路產品持續交付方面,螞蟻金服積累了豐富的經驗和最佳工程實踐。在2018年ATEC技術探索大會上,螞蟻金服解決方案架構師呂中邦(鳳啟)從行業背景出發,分析了金融級網際網路產品持續交付的核心挑戰,從“更快更早地交付價值”和“守住技術風險底線保障交付質量”兩個維度分享了螞蟻應對這些挑戰的最佳工程實踐做法,最後還介紹了螞蟻研發效能平臺支撐持續交付的實踐經驗。跟著小螞蟻一起來學習吧~


一、行業背景與主要挑戰

數字化轉型的大背景下,企業需要打造多方面的核心能力,這些能力客觀上要求企業升級或者採用新一代的技術架構。其中非常重要的一個環節就是基於雲端的基礎設施、分散式架構下的持續交付。談到持續交付,很容易想到一些具體的挑戰:比如如何縮短新業務產品的研發與投產時間,快速響應細分客戶需求;如何應對分散式微服務架構帶來的業務場景複雜和高併發挑戰;如何透過技術手段推動自動化減少研發過程中的人工投入等等。

此外,我們還需要認真審視所處的行業,到底有怎樣的特點。金融網際網路產品最核心的兩個關鍵詞,第一個就是“ 金融 ”。 金融屬性最重要的是保障資金、安全、高可用,歸結成一個字——“穩” ;另外一個關鍵詞“ 網際網路 ”, 最顯著的特徵就是快速交付價值,支援業務的快速創新,我們把這歸結成另外一個字——“快” 。不僅要快而且要穩,這就是金融網際網路行業的基本特質,看似矛盾的兩個方面,缺一不可。

談到“穩”和“快”,螞蟻金服做得怎麼樣呢?分享上財年的幾個實際資料:線上服務可用率——100%;每天應用釋出超過150次;迭代平均研發週期5.8天;測試自動化率超過了80%;運維自動化率超過98%。



基於數字化轉型背景和行業的基本特徵,我們認為金融網際網路產品在持續交付領域最核心的挑戰是: 如何兼顧快和穩?既能夠敏捷快速地交付價值,又可以穩妥創新、守住技術風險底線、持續滿足監管合規的要求


二、敏捷交付——如何更快更早地交付價值

本章節分四個部分展開,首先是精益研發流程定製和多樣化分支與釋出策略,主要解決我們的體系或流程如何適配不同業務場景,正確的路徑和姿勢是研發交付提效的基本前提。

其次是職能服務化、高效聯調和問題診斷,這兩個部分主要是闡述如何透過技術或自動化手段解放人肉、提高效率。


1. 精益研發流程定製

說到流程定製,很多人會問:我們依據什麼來定製研發流程?在螞蟻我們有一個比較有效的做法,那就是依據應用分級。應用分級主要考慮三方面的因素:依賴服務的呼叫量,日交易資金量,以及每日的PV和UV。根據這三個方面我們定義了從A1-C4十二個不同的應用級別,然後為每個級別的應用設定基線的研發規則,在基線規則之上我們還支援各業務去自定義附加的風險管控措施。

舉兩個例子,一是按需配置流程。螞蟻金服的業務非常複雜和多樣,有些比較核心的業務系統穩定性要求非常高,相應配套的技術風險防控措施、測試驗證環節就會比較完善;反之,一些新業務或內部服務系統會傾向於更快、更早地上線,流程相對來說會更輕量、更敏捷。二是可編排、可擴充套件的流水線,效能平臺的元件中心定義了很多質量檢測元件,其中包括第三方或業務自建的元件,透過平臺的編排能力為不同的業務編排個性化的流水線模板。有些應用強制做程式碼評審,有些應用需要透過CI的自動化測試或某專項測試之後才能向下推進,類似的場景都可以透過流水線編排來實現。


2. 多樣化分支和釋出策略

關於分支模式和釋出策略,螞蟻主要有四種玩法。

首先是日常釋出 ,我們把它比作一輛定期發車的火車,適用於全站的核心業務系統、應用之間關聯性比較強的場景。

第二種是獨立釋出 ,我們把它比作一輛小汽車,想什麼時候發車就什麼時候發車,適用於獨立業務域、應用間有一定耦合和關聯的場景。

第三種是單應用釋出 ,我們把它比作是一輛摩托車,適用於業務獨立性更強、與其他業務在架構層面完全解耦的場景。前三種模式通常採用分支開發主幹釋出的模式。

最後一種緊急釋出 ,我們把它比作救護車,適用於緊急業務需求或線上故障的解決,通常採用分支開發分支釋出的模式。

透過這四種模式,螞蟻所有的業務場景基本得到覆蓋,各業務可以根據自己的需要找到匹配的玩法。

3. 職能服務化

介紹完了敏捷交付的姿勢和路徑,接下來看看自動化提效方面。

通常在一個研發迭代中,會涉及到很多職能部門,傳統的做法是各職能團隊基於經驗複核進行人肉的風險管控。比如,當開發人員完成了編碼、自測,就會有安全、風控等職能團隊層層把關,基於經驗進行稽核,“部門牆”會嚴重影響協作和交付的效率。在螞蟻,各職能團隊的協作方式完全不同,他們不再直接參與到專案迭代中,承擔迭代驗證和稽核這種重複機械的活動,而是轉型為能力輸出和自動化工具建設,實現職能服務化,從而對業務的開發測試團隊進行賦能,這種模式大大提高了研發協作的效率。


4. 高效聯調和問題診斷

金融網際網路產品的業務場景非常複雜,搭建專案環境是是一個非常耗時耗力的事情。比如一個交易鏈路涉及20個應用,一般的做法是在研發迭代過程中給每個應用部署一遍,最後形成聯調環境。螞蟻的做法又會不同,首先我們搭建了一個共享的STABLE環境,在研發迭代中只需要針對有變更和修改的應用進行部署,然後透過sofarouter分組能力把所有20個應用關聯在一起就形成了聯調環境。這樣做不僅大大提升了效率,還最大化利用了測試資源。此外,當程式碼釋出上線之後,平臺會自動更新STABLE環境保證其為最新程式碼。

如果在聯調過程中發現問題,如何在如此複雜的鏈路中定位和診斷問題也非常重要。開發同學可透過TraceID或交易號查詢鏈路圖、時序圖,直觀全面地瞭解應用間的呼叫互動資訊,再結合業務日誌就可以非常容易地找到錯誤應用並定位問題根源。


三、穩妥創新——守住風險底線保障交付質量

本章節同樣分四個部分來探討,其中技術風險評估、質量內建、測試驗證是按照開發的事前、事中、事後的邏輯來展開,最後向大家分享我們是如何守住安全底線、保障資訊保安的。

1. 資料賦能技術風險評估

毫無疑問,開發事前的技術風險評估是非常重要的。螞蟻的技術風險評估主要基於兩大輸入來做:第一是需求輸入,第二是治理分析相關資料輸入和賦能,後者對我們來說更為重要。開發同學可以非常便捷地獲取應用依賴、服務呼叫、訊息巡檢、元件管控、程式碼檢索等資料,全面準確地評估變更帶來的技術風險,基於這些資料和分析,就輕而易舉地確定風險應對策略,做到有效的閉環的反饋。

2. 內建質量實時閉環

開發的事中——內建質量與實時閉環反饋,幫助開發人員在第一時間把事情做對。在螞蟻內部,我們鼓勵基於gitflow的最佳實踐,透過MergeRequest方式而不是Push方式向專案分支或主幹提交程式碼, 給程式碼門禁、CI檢測一個機會。事實上Pipeline流水線的所有節點和元件都是可編排、可擴充套件的。在提交程式碼之後,每執行完一個元件,平臺都會實時反饋結果,並自動更新迭代的質量資料,協助開發測試同學管控質量風險。

3. 全環境和業務分層驗證

開發的事後,也就是測試驗證部分,我們分享兩個點:第一是全環境驗證,從開發》整合》預發》灰度一步步接近和模擬生產環境,確保生產釋出沒有問題。第二是業務分層驗證,在每個環境,都有對應的測試手段。比如壓測,很多公司都在做,但多基於線下環境進行,而螞蟻會直接在生產環境裡做壓力測試,真正做到系統的高可用。

4. 資訊保安保證

穩妥交付的最後部分,在保障資訊保安方面,螞蟻有一套完整的體系:在需求設計評審階段,架構師會評估業務風險;在開發階段,首先SOFA框架自身的安全是有保障的,其次每次程式碼提交我們都有安全的自動掃描,此外還會有專項的安全測試;最後在系統上線之後,我們有專門針對安全的監控和應急機制。


四、研發效能平臺AntLinkE支撐

前面我們不僅介紹瞭如何敏捷交付,還介紹瞭如何穩妥創新,接下來分享工具平臺層面是如何支撐整個持續交付過程的。

1. 平臺簡介

螞蟻研發效能平臺所做的事情,主要歸結為三個方面:

  • DevOps—一站式開發整合持續交付

  • DevMind—實時多維的資料分析賦能研發過程

  • DevServices—為研發者提供高效技術支援和諮詢服務

2. 產品大圖

下面是我們的產品大圖,頂部是平臺支撐的業務和交付的價值,底部DevOps、DevMind、DevServices三方面的主要能力,今天我們重點來介紹一下中間的產品層。

首先是持續交付,從建立迭代開始,到釋出上線結束,為整個研發生命週期提供支撐。下面是配套的子產品:研發協作管理專案、迭代和需求;程式碼服務提供程式碼託管、程式碼搜尋、CR等能力;IDE是螞蟻比較有特色的產品,可以幫助開發人員第一時間做程式碼掃描,還與效能平臺的Web端做了整合和整合打通,開發人員不用頻繁切換工作臺來開展開發工作;測試服務支援測試管理、自動化測試;問題診斷依賴分散式鏈路和業務日誌快速定位和解決問題。最下面是研發洞察,在研發過程中,無論是IDE端還是研發效能平臺的Web端,都會沉澱大量資料,這些資料是非常寶貴有價值的資產,我們透過對這些資料進行採集、統計、分析來驅動整個研發體系和組織的持續最佳化和升級。

3. 一站式持續交付解決方案

一站式持續交付解決方案如圖所示。中間部分是研發效能平臺,提供了從需求到釋出的持續交付引擎,將所有相關的能力和工具串接在一起;底部是應用PAAS平臺,效能平臺透過openAPI與之互動,打通環境管理和環境部署等功能;右側是分散式中介軟體,研發效能平臺透過研發容器,統一管理多環境的中介軟體配置,既實現環境間的隔離,又實現了環境間的自動轉換和同步;此外研發效能平臺與技術風險防控平臺打通,把技術風險防控的措施落實在研發過程中;此外,螞蟻研發效能平臺先天具備開放整合能力,可以透過元件的方式對接企業自有的工具平臺,最大化發揮既有資產的價值。


五、結語

無論對內部還是外部,螞蟻研發效能平臺一直秉承並將繼續追求這樣一個初心—— 提升研發者幸福感,提高企業創新效率,讓我們一起重新定義研發!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560885/viewspace-2222039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章