螞蟻金服開展的“共戰‘疫情’,技術破局”數字課堂線上直播近期火熱上線。我們将系列演講整理并釋出在 “螞蟻金服科技” 微信公衆号上,歡迎關注。
今天的整理來自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研發效能相關的元件。
謝謝大家。如果有問題我們可以線下持續去探讨。
PPT下載下傳:
https://files.alicdn.com/tpsservice/40789250794061809d0be97ab36f9132.pdf