支付寶是怎麼煉成的?螞蟻金融級研發效能實踐解析

簡介: 螞蟻金融級研發效能實踐解析

螞蟻金服開展的“共戰‘疫情’,技術破局”數字課堂線上直播近期火熱上線。我們將系列演講整理併發布在 “螞蟻金服科技” 微信公衆號上,歡迎關注。 

今天的整理來自SOFA-LinkE研發效能平臺的呂中邦,爲大家分享螞蟻金融級研發效能實踐解析,以下爲演講整理全文:

大家好,我是來自螞蟻金服研發效能部的解決方案架構師呂中邦,很高興今天和大家做交流分享。最近SOFAStack在阿里雲商業化發佈,藉着這股東風今天給大家帶來研發效能相關的內容,題目叫做《螞蟻金融級研發效能實踐解析》,介紹如何基於 SOFAStack研發效能平臺來開展持續交付和穩妥創新兼顧的持續交付、風險防控及質量保障的最佳實踐,來賦能金融產品高可用和研發效能的持續提升。

今天的分享分四個部分,首先我們看看行業的當前背景和主要挑戰,然後分享螞蟻金服在研發效能領域的最佳實踐,最後介紹支撐這些最佳實踐落地的平臺產品,以及我們提供的在研發效能領域的解決方案。

背景與挑戰

進入第一部分,簡單介紹一下螞蟻現在的業務現狀,首先看到的是大家熟知的業務,比如說花唄,借唄、芝麻分這些東西。下面是支撐這些業務的實踐能力,比如說包括風控、反套現、精算這些。看到這個場景,大家很容易就知道螞蟻是做金融的,不僅是做金融而且是互聯網金融。提到互聯網金融,具體到研發效能領域,我們把它歸結到兩個關鍵詞:一方面需要保障資金、安全、高可用,我們把第一個關鍵詞定義成“穩”,穩妥的穩;另外一個方面互聯網是一個VUCA的時代,最直接的要求就是速度,快速的交付產品價值,支持業務的快速創新,我們把第二個關鍵詞定義成“快”,快速的快。不僅要穩,而且要快,看似矛盾的兩個方面缺一不可。

基於這樣的業務形態,螞蟻在研發效能領域做的怎麼樣,幾個數據報告給大家。首先,我們有近萬名研發工程師,應用系統的規模有數千個,每天提交的代碼行有數百萬級,每天有200多次的應用發佈,代碼從提交到發佈的平均週期6.2天,線上服務的可用率達到了99.99%,所有這一切都是基於SOFAStack研發效能平臺LinkE來來支撐和實現的。

看完螞蟻,我們再看看整個金融行業,金融行業做研發效能和DevOps,有哪些共同的挑戰?我們總結下來四個方面:

第一,管理者認知方面的挑戰。很多中小機構的管理者,對研發效能的認知是嚴重不足的,不會把這些東西納入到緊急重要的日程事項中去。所以說就需要在意識上給他們做破冰。

第二,團隊協作,典型的重業務、輕it,業務主導性特別強。需求就一句話,隨意變更,這都是常態。然後研發運維各自爲政,彼此之間的協作多基於文檔,整體溝通和協作的效率是非常低下的。

第三,技術人員的能力參差不齊,導致交付質量千差萬別。包括技術棧各種各樣、外包難於管理,所有這些東西都影響交付的質量和效率。

第四,就是體系規範和工具方面,整個IT的基礎管理規範和標準文件都比較老比較重,執行依賴於人肉,落地就比較困難,更不用提數據積累了,整體缺少自動化方面的全局的建設,整個DevOps工具鏈是比較初級的。

那麼要解決這些我們剛纔提到的內部和外部的挑戰和問題,螞蟻金服也給出了自己的一些解法和答案,賦能夥伴最終實現又快又穩的持續交付。微觀上,我們希望我們的方案能夠儘量自動化減少人肉,提升研發同學的幸福感,讓研發過程絲般順滑。宏觀上可以提升團隊的研發,持續交付的效能,進而賦能企業去升級組織效能。其中,最重要的還是把我們螞蟻金服這麼多年在這個領域積累下來的經驗和最佳實踐,對外提供賦能使其價值。

研發效能實踐

接下來我們就分享螞蟻在研發效能領域裏具體的實踐,我們將按照軟件生命週期的邏輯來進行講解。

需求項管

經過不斷的實踐,螞蟻金服自己也沉澱出了一套敏捷研發實踐的框架。第一個就是文化引領,面向一線的研發團隊進行敏捷文化的培訓,讓團隊成員能夠理解敏捷的基本理念和指導思想。第二個是實踐落地方面,是一個逐步演化的過程,團隊範疇到項目範疇,以價值交付爲最終目標,然後通過不斷的迭代,實現持續集成、持續交付。在整個過程裏邊又不斷的去收集數據,做統計分析,建立數據模型,從而形成適合團隊及項目的可視化的度量指標,持續的反饋到這個項目的迭代中去, 從而形成統一的節奏、統一的心跳,縮短和消除項目組內不同團隊間的等待和浪費。在不斷的實踐過程中,螞蟻也沉澱了大量的最佳案例、最佳實踐,可以逐步的對外輸出,來幫助到夥伴和客戶。

剛剛談的是偏方法論的,具體到敏捷項目管理的實踐。首先看看在螞蟻項目是如何組織的,在我們內部按照項目的規模我們有不同的叫法,比如說戰役、戰場這些概念,但無論是怎麼樣的規模,都涉及到三個核心的角色:PD產品經理、PM項目經理、技術架構師,我們叫做項目的三駕馬車,所有工作都圍繞這三個關鍵角色來展開。在項目的執行過程中,我們引入了SCRUM一些管理實踐,需求和迭代的進展通過電子看板能夠清晰的展示出來,使得敏捷所倡導的原則和理念能夠得到比較好的落地。

這裏邊我們分享三點:

第一,敏捷是貫穿軟件研發全生命週期的。敏捷不是說越重越好,適合的纔是好的,我們稱之爲輕量級的敏捷實踐。

第二,平臺覆蓋項目協作的全部領域,項目集、工作項、衝刺、里程碑、風險這些領域都能實現很好的管理。

第三,利用高效靈活的可視化看板,來提高整個項目的透明度,從而激發整個團隊及組織的熱情和文化。

我們通過平臺也固化了一套比較有特色的迭代研發的模型。它通過發佈、迭代、應用、流水線四層模型對研發過程進行有效的管控:

流水線維度,我們具備PUSH、MR、手動等多種觸發模式;流水線的所有的組件和節點,可編排、可擴展。然後應用層面,我們的所有研發活動都是按應用去組織和推進的,包括質量的門禁和階段的卡點,都是應用維度進行管控。在一個研發迭代中我們可以管理多個應用,一個發佈窗口又可以管理和發佈多個迭代,從而實現從微觀到宏觀,多個維度的、立體的項目協作和管控。

持續集成

那麼接下來是持續集成環節,首先給大家介紹的是統一的應用元數據管理。在螞蟻我們有5000多應用,規模非常之大,而且支撐的業務也各不相同。我們給應用做了分級定義,主要是從服務依賴、交易/資金量以及每天的PV UV這些維度對應用進行分級,並在平臺中進行統一管理。第一個好處,所有的應用以及架構一盤棋,組織層面可看到全貌,爲整個架構的規劃以及架構的治理,提供比較好的輸入以及基礎;第二個好處,每個架構域每個應用的技術負責人、質量負責人、運維負責人等角色一清二楚,有利於在項目中進行協作;第三個好處是應用的屬性,通過應用分級和應用屬性,爲精益研發流程定製提供依據,做到研發流程的千人千面,每個應用都可以定製自己的個性化的研發流程。

除了應用原數據的統一管理,我們還提到配置統一管理,這裏邊配置就包括環境的配置、中間件的配置、CI配置、技術棧軟件配置等。螞蟻研發效能平臺可以按照不同的環境,對所有的配置項進行集中管理,在研發迭代推進的過程裏邊,還可以實現配置項在不同環境間的自動轉化和生效,這樣就避免了研發同學頻繁訪問配置項控制檯進行人肉配置,提效的同時避免人肉錯誤。

接下來介紹代碼質量內建,其實代碼質量在整個研發過程裏邊是非常關鍵的一環,我們鼓勵第一時間就把代碼寫好寫正確,或者在第一時間就發現和修復錯誤。

首先我們看代碼的質量標準。事實上在螞蟻的研發效能平臺上邊做開發,質量標準是可以按照這種應用維度去做配置的。每個應用都可以根據應用的分級、業務需要去配置不同質量標準。在質量標準裏邊,我們沉澱的一套成熟的質量分模型,將代碼掃描、單元/接口自動化的通過率覆蓋率,還有一些其他的質量指標,納入質量分統一管控,進而可以比較直觀地評價一個應用當前的質量情況。

其次是代碼掃描,阿里的 Java開發規約大家都耳熟能詳,在這個基礎之上,螞蟻也沉澱了一些自己的開發規約,強強互補,通過IDE以及Pipeline兩個端去執行,確保第一時間能快速的發現問題和解決問題。

然後是代碼評審,代碼評審是整個開發過程裏邊非常有價值的工作,他不僅能夠幫助我們提高代碼質量,而且對整個團隊人員的學習培養,團隊建設都非常有幫助。在螞蟻的研發效能平臺裏邊,我們的功能也是非常有特色,實現了與Pipeline流水線有效集成的可多人協作的高效代碼評審。

接下來是自動化白盒測試。這邊指的就是單元自動化和接口自動化。外部客戶交流中發現,很多中小企業由於研發或者測試團隊的能力限制,不能夠高效的去準備自動化測試腳本,所以我們也提供了一個測試腳本的輔助生成工具。測試腳本可以通過效能平臺的流水線自動觸發執行和收集測試結果。每次執行完流水線之後,都會實時更新應用的質量數據。質量如果不達標的情況下推進迭代,我們還有配套的質量加簽的審批流程,上述全是圍繞着代碼質量所進行的實踐。

接下來我們給大家介紹我們的Pipeline流水線,以下是平臺運營的實際截圖。截圖上邊開發階段、集成階段、預發階段、發佈階段,我們叫它迭代模板,這些迭代模板都是可以按需進行定製的。在螞蟻我們鼓勵基於GitFlow的最佳實踐,通過MR而不是PUSH的方式,向項目分支和主幹提交代碼,這樣的話給代碼門禁和流水線檢測提供一個機會。事實上我們流水線的Pipeline的所有節點和組件都是可編排的、可擴展的。可擴展的意思是說,業務可以根據自己的需要,把自己自建的一些測試工具、質量工具,封裝成標準組件,接入到整個Pipeline流水線中來。這樣的話每執行完一個組件平臺都會實時的反饋結果,並更新迭代的應用的質量看板,幫助開發測試同學來管理質量風險。

在流水線的執行過程中和研發推進過程裏邊會產生大量的日誌,爲了幫助同學們快速的通過日誌來定位到問題,節約同學們在定位解決問題上的時間成本,我們針對性的開發了日誌診斷服務系統,爲用戶提供一個統一的日誌查看界面,減少不必要的信息的干擾。同時我們通過這些異常問題的知識庫,對常見的一些問題提供精準的定位和解決方案的推薦,提高開發同學的研發效率。

當每個流水線組建執行之後,那麼應用的質量看板會實時的更新,這裏邊我們也做了一個截圖,比如說質量分, PMD安全問題,還包括測試的通過率、覆蓋率,除此之外,我們還提供一些代碼行接口、註釋率、重複度等基本的統計信息。每次代碼變更,我們都能夠看到整個質量分,包括質量數據的更新變化情況,做一個很好的追溯。

此外我們還提供流程審批的能力,在實際的項目研發過程裏邊,我們鼓勵自動化,但很多時候必要的人肉介入又不可避免。比如說技術風險評估、發佈、評審這些場景,就需要專家介入去評估一些風險。所以靈活可配置的這種流程審批就非常有用了。

持續部署

接下來我們介紹持續部署,其實部署這邊主要分兩塊,首先是線下環境的自動部署,我們平臺通過和 SOFAStack的運維管理相關模塊的無縫集成,提供了自動部署的能力。它也是以流水線組件的方式執行,需要查看詳情就直接跳轉都能夠看到整個部署的日誌以及結果。

然後是一鍵提交生產發佈。對於金融機構來講的話,監管對線上和線下隔離這一塊有明確的要求,所以線下我們支持自動部署,線上的話我們提供這種一鍵提交生產發佈的能力,自動推送發佈單並同步查詢發佈單的狀態,這樣有發佈權限的同學就可以登錄到生產環境去執行發佈了。在這個過程裏邊,我們通過網絡白名單、open API接口級別的權限控制這些技術手段,來確保線上和線下是真正有效隔離的。

接下來分享一下發布策略,這裏邊提到一個概念變更三板斧,這個也是我們螞蟻內部技術風險條例的核心思想,所有的應用研發的底線要求。變更三板斧大概三個方面,一個叫可灰度,要求應用發佈過程確保變更的影響程度,影響面是可控的,又可以快速地應急,具體策略包括灰度,分組,Beta,藍綠這些。第二個叫做可監控。在應用上線之前要進行日誌的埋點,監控的配置不僅要有,而且需要確保監控的準確性,直觀性,進而保證整個變更的過程都是可監控的。第三個叫可應急,隨時暫停回滾,任何變更都有據可查。其實針對變更三板斧,容器應用服務上面有很好的實踐,比如說包括分組的灰度發佈、無損升級,可適配多種設計工作負載,這些能夠很好的貫徹變更三板斧的思想。

測試驗證

接下來進入測試驗證部分,首先是分層測試的能力,我們主要談兩個方面。首先就是測試環境、環境策略,從開發到集成、預發、灰度,我們的環境一步步的去接近和模擬生產環境,確保生產發佈最後是沒有問題的。其次就是分層自動化測試驗證能力,我們將單元自動化、接口自動化,結合研發效能平臺,靈活的通過Pipeline流水線的組件去執行,統一賦能給全螞蟻的研發團隊。

針對外部很多機構在自動化測試腳本的編碼方面有很大的能力和效率上的痛點,我們提供了測試腳本輔助生成的ACTS測試框架。基於數據模型驅動測試引擎執行,適配TestNG+Spring的測試上下文環境,以yaml爲數據載體,實現了這種一站式的編輯、精細化的校驗和高效的用例管理,能夠有效的提升這種測試腳本的效率。

前面提的,無論是單元自動化還是接口自動化,都是應用及系統級別的測試。那麼端到端的話一般都更帶有業務屬性,全鏈路的測試。螞蟻經過這麼多年在分佈式架構工程測試領域的積累,沉澱了這種根據業務場景自適應加載測試流程,動態編排,精細化校驗的金融級的端到端的測試能力,它又輕量又標準,幫助研發測試團隊提升業務測試效率和質量保障能力。

產品支撐

在螞蟻金服開展這麼多的研發效能的工程實踐,那麼我們的平臺是如何來支撐的?首先是 SOFAStack-LinkE的公共雲的產品大圖,上面是支撐的業務以及交付的價值,我們重點介紹中間產品層,目前我們提供了兩個組件,一個是項目協作,主要就是包括需求、項目、衝刺和工作項的管理。然後第二個組件就是持續交付,從編碼到測試、到部署、到發佈,整個端到端的支撐,下邊有配套的代碼服務,持續集成、持續部署、測試服務的這些組件。

那麼,我們把SOFA-LinkE的產品能力做一個總結,大體七個方面:項目協作、代碼服務、持續交付、代碼分析、測試服務、流程審批、環境管理。

SOFA-LinkE研發效能平臺,主要輸出這四塊的產品價值:

就平臺產品特色而言,主要體現在三個方面:可擴展、可編排、多樣化。可擴展主要指的是Pipline流水線的組件是支持自定義的;可編排體現在研發迭代流程及流水線,可根據業務需要對其進行配置;多樣化支撐多種分支策略,多種技術棧,經典與雲原生架構的雙模支持。

在多樣化的分支發佈策略方面,我們內部大概有是這四種玩法,一種叫日常發佈,其實就是全站的窗口發佈,主要適用於全站的這種核心鏈路上的業務應用,之間有一定的關聯和耦合,每週發佈一次。事實上現在我們日常發佈已經消除了。第二個叫獨立發佈,主要場景在獨立業務域裏應用之間有一定的耦合度,但是更多的是爲了管控的需要,把一些應用集中放在一個窗口去發。第三個叫單應用發佈,相關應用業務獨立性強、架構層面完全解耦,單應用想怎麼走就怎麼走,想什麼時候發就什麼時候發。前三種都是我們標準的分支策略叫分支開發主幹。第四種是緊急發佈,主要是爲了響應緊急業務需求或者是修復線上的故障,通常是分支開發分支發佈的模式。那麼通過這四種模式,螞蟻所有的業務場景基本上都能滿足,你想怎麼玩都能夠覆蓋到。

接下來我們談到雲原生,隨着螞蟻金服對雲原生理念的理解越來越深,我們相信未來的金融級應用場景都會往這種極致的彈性和混合雲方向去發展。所以我們的架構也一直在不斷的演進,去擁抱雲原生。向雲原生新型技術轉變的過程裏邊,不同場景的應用很難一步到位,所以爲了滿足這種業務的需要,我們同步的去支持經典的研發模式以及雲原生的研發模式。在雲原生的改造中,老業務、新老業務並存過渡,通過統一的研發平臺,同時支持基於虛擬機和容器的雙模持續交付,助力於整個架構的穩妥的演進和遷移。

金融行業本身受到嚴格的監管,螞蟻在滿足監管以及行業規範的領域裏也積累了一套做法,並在我們的研發效能平臺上將這些經驗進行了沉澱。通過有效的技術手段去滿足監管合規的要求,形成了金融級的技術風險的防控手段,把它內化到研發項目平臺裏面去了,能夠幫助咱們企業在數字化轉型的背景下邊實現這種穩妥的創新。

解決方案

接下來是最後的解決方案部分,做研發效能其實還是要想實現整個DevOps跨職能的全流程協同,不同的職能團隊能夠高效地協同在一起,特別是開發、測試和運維。

介紹一下螞蟻一站式研發效能解決方案。下圖中間部分屬於螞蟻研發效能平臺的範圍,提供從需求到發佈的整個持續交付的引擎,將整個DevOps的工程能力集成串接在一起,具體能力前面都有提到。大圖底部是應用PaaS平臺,就是咱們SOFAStack運維管理相關的組件,效能平臺通過open API和它交互,打通整個環境管理和環境部署這些功能,也實現了經典發佈部署和容器應用服務的雙模支持。大圖右側是對螞蟻智能科技其他產品的集成和支持,通過研發容器統一管理多環境的中間件配置,實現環境的隔離,迭代推進過程中不同環境之間的自動同步和生效。另外我們支持技術風險防控平臺以及端到端測試等產品的集成和聯動。螞蟻研發的平臺本身具備開放集成能力,所以可以通過自定義組件的方式來對接其他平臺的能力以及業務自建的一些資產,比如說質量測試等工具,最終實現一站式的智能研發平臺的方案。

那麼我們可以提供哪些軟性的服務,下圖展示了諮詢及其具體領域,然後我們可以和客戶一起來針對痛點建立研發規範,我們還提供沙盤幫助用戶快速的在實際項目裏邊去演練整套的規範以及平臺工具。

最後給大家介紹的是整個DevOps轉型的一個路徑,大概分這幾個階段: 第一個階段就是諮詢診斷階段,出具DevOps的實施方案以及落地規劃,包括平臺的搭建。第二個階段就是培訓賦能,這裏邊就包括理念的培訓,產品的培訓,要建立統一的體系和流程規範。第三個我們提供沙盤演練,讓項目組的同學真正的瞭解敏捷、流水線和自動化,通過在項目裏試運行,爲企業內部研發效能團隊賦能,培養帶頭人。第四制定落地的目標和規劃,配合企業按照業務或者按照產品線去落地實施,通過日常監控以及數據的分析,能夠持續的去解決痛點,去推動效能的持續提升。

以上就是我今天分享的全部內容了,希望對大家有所幫助,也希望大家去關注我們已經商業化的SOFAStack產品,特別是LinkE研發效能相關的組件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章