含ppt下載|支付寶是怎麼煉成的?螞蟻金融級研發效能實踐解析
螞蟻金服開展的“共戰‘疫情’,技術破局”數字課堂 線上直播近期火熱上線。我們將系列演講整理併發布在 “螞蟻金服科技” 微信公眾號上,歡迎關注。
今天的整理來自 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研發效能相關的元件。
謝謝大家。如果有問題我們可以線下持續去探討。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69904796/viewspace-2679572/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 螞蟻金服研發的金融級分散式中介軟體SOFA背後的故事分散式
- 深度 | 金融級訊息佇列的演進 — 螞蟻金服的實踐之路佇列
- 含ppt下載|解析支付寶移動端彈性動態架構架構
- 螞蟻金服研究員玉伯:10萬阿里人日常使用的網紅工具是怎麼煉成的?阿里
- 螞蟻實時低程式碼研發和流批一體的應用實踐
- 一文讀懂螞蟻金服自研技術的發展和實踐
- 當金融科技遇上雲原生,螞蟻金服是怎麼做安全架構的?架構
- 千億級HttpDNS服務是怎樣煉成的httpdDNS
- 螞蟻金服月薪35K的Java程式設計師是怎樣煉成的?(漲薪必備技能)Java程式設計師
- 招聘貼:螞蟻金服招Java研發Java
- 螞蟻區塊鏈平臺BaaS技術解析與實踐區塊鏈
- 簡易版Swiper是怎麼煉成的
- 【iOS開發】SnapKit是怎樣煉成的iOSAPK
- 螞蟻金服 Service Mesh 深度實踐
- 螞蟻金服 Service Mesh 實踐探索
- 黑客是怎樣煉成的黑客
- mybatis是怎樣煉成的MyBatis
- React 是怎樣煉成的React
- 黑客是怎樣煉成的?黑客
- 阿里旗下螞蟻金服研炒股軟體:獨立支付寶單飛阿里
- 螞蟻金服 DB Mesh 的探索與實踐
- 螞蟻金服分散式事務實踐解析 | SOFAChannel#12 直播整理分散式
- 掌控遊戲風評的水軍是怎麼煉成?遊戲
- 遊戲語音解決方案是怎麼煉成的遊戲
- 資料視覺化高手是怎麼煉成的?視覺化
- 開源是怎樣煉成的?
- 大師是怎樣煉成的
- 解開螞蟻金服自研金融級分散式資料庫OceanBase背後的技術祕密分散式資料庫
- 優秀的程式設計師是怎麼煉成的程式設計師
- 招聘貼:螞蟻金服招Java研發及前端開發Java前端
- 【進階】前端幸福感是怎樣煉成的(下)前端
- 螞蟻金服十年自研分散式中介軟體,成就世界級新金融科技平臺分散式
- OSDI '18重磅解密:螞蟻金服實時金融級分散式圖資料庫GeaBase解密分散式資料庫
- 詳解螞蟻金服 SOFAJRaft:生產級高效能 Java 實現RaftJava
- 詳解螞蟻金服 SOFAJRaft | 生產級高效能 Java 實現RaftJava
- 阿里架構師的述說:支付寶和螞蟻花唄的技術架構及雙十一實踐阿里架構
- OSCAR 分享之螞蟻開源治理的方法和實踐
- 技術文章是怎樣煉成的?