千萬級交易系統(tǒng)資金安全如何治理?
前言
近兩年隨著交易系統(tǒng)承載的訂單量從開始的萬單/日快速膨脹到百萬單/日,交易GMV也快速膨脹到千萬級,系統(tǒng)一旦發(fā)生故障,每分鐘的峰值資損將達(dá)到幾十萬,這是一個完全無法承受的損失。
在此背景下,博主最近兩年也一直致力提升交易系統(tǒng)穩(wěn)定性的水位線,借此機會在這里和廣大朋友一起探討,有好的想法歡迎文末留言一起交流共同進(jìn)步。
建設(shè)思路
業(yè)界參考
從參與建設(shè)交易系統(tǒng)1.0版本迭代到3.0的過程中,中間做過一些局部穩(wěn)定性架構(gòu)升級(比如存儲架構(gòu)升級),類似于哪里著火就去哪里救火,不斷的對系統(tǒng)進(jìn)行縫縫補補,但沒有通盤做過穩(wěn)定架構(gòu)升級治理,更沒有做過交易類系統(tǒng)的穩(wěn)定性架構(gòu)升級。
在這樣一個背景下,只能從公司內(nèi)&外部頭部廠商進(jìn)行調(diào)研,這里主要參考了公司內(nèi)部交易團(tuán)隊以及美團(tuán)、螞蟻金服等外部團(tuán)隊的寶貴經(jīng)驗,得出一個通用的治理思路。
圖片
按照事前、事中&事后三階段的思路,梳理總結(jié)各階段重點事項和具體執(zhí)行方案,梳理如下圖所示:
圖片
通過大圖得出明確的治理目標(biāo),通過治理使得系統(tǒng)能夠做到不重(不會重復(fù)計算)、不漏(不丟單)、不錯(資金不算錯)。
其次根據(jù)業(yè)界資金治理思路,資金安全保障治理重心圍繞主動防御手段、快速發(fā)現(xiàn)能力、快速止損能力的優(yōu)先級依次展開對應(yīng)的風(fēng)險治理項,這其中尤其會將絕大部分精力致力于在事前階段通過各種主動防御手段將問題扼殺在搖籃里。
明確了針對資金類系統(tǒng)的治理目標(biāo),接下來需要確定具體執(zhí)行路徑:
圖片
“面”、“線”、”點“鏈路梳理
鏈路梳理思路圍繞“面”、“線”、“點”依次展開,
i). 以資金流向圖為“面”作為切入點,看清楚交易系統(tǒng)整體運轉(zhuǎn)情況,
ii). 然后基于資金流向圖,深入到每一條資金流向鏈路,梳理出這條鏈路的業(yè)務(wù)流程圖,以業(yè)務(wù)流程圖作為“線”,分析出業(yè)務(wù)流程中的上下游,以及業(yè)務(wù)自身的流程;
iii). 明確“線”之后,進(jìn)一步深入到每個關(guān)節(jié)環(huán)節(jié)“點”上,以“漏”、“重”、“錯”三個維度去分析可能產(chǎn)生的資損情況,然后針對性的進(jìn)行對應(yīng)的資金安全加固。
一個簡化版的梳理和治理case
- 梳理資金流向圖
圖片
- 梳理業(yè)務(wù)流程&治理&驗證
圖片
i). 基于第一步梳理的資金流向圖,按照業(yè)務(wù)重要程度的優(yōu)先級,深入到代碼實現(xiàn)層面,繪制出整條業(yè)務(wù)線的實現(xiàn)業(yè)務(wù)流程圖;
ii). 分析業(yè)務(wù)流程圖中各環(huán)節(jié)可能出現(xiàn)的問題;
iii). 針對問題制定相應(yīng)的治理手段,明確后續(xù)落實的責(zé)任人&加固節(jié)奏;
iv). 對于各項風(fēng)險項完成治理后,接著開始進(jìn)行有效性驗證,有效性具體驗證手段一般有系統(tǒng)故障演練和業(yè)務(wù)故障演練(比如手動注入各種異常來模擬真實情況的發(fā)生、配置擾亂等手段),觀察系統(tǒng)的真實表現(xiàn)是否符合預(yù)期;
v). 對于演練發(fā)現(xiàn)的非預(yù)期表現(xiàn),進(jìn)行二次加固后再次驗證;
vi). 對于有效性加固后可能產(chǎn)生的一些“噪音”(比如監(jiān)控報警、對賬異常等)進(jìn)行降噪處理;
各階段具體治理手段
- 事前階段
資金代碼安全掃描,在開發(fā)階段,每次提交代碼后,在ci/cd流水線上,基于通用的掃描規(guī)則,指定針對交易系統(tǒng)特有的規(guī)則,比如命中特定關(guān)鍵字“yuan”、“cny”、“account”、“money”,則在代碼提交測試前直接阻斷,需要有研發(fā)RD針對性檢查業(yè)務(wù)邏輯是否符合預(yù)期,同時測試同學(xué)也需要針對性的設(shè)計響應(yīng)的case,保證測試一定能夠覆蓋到。當(dāng)以上工作完成后,由研發(fā)手動確認(rèn)后,才會正式流轉(zhuǎn)到測試階段。
- 事中階段
對賬能力,對賬分為系統(tǒng)間對賬和系統(tǒng)內(nèi)對賬,對于上下游系統(tǒng)之間進(jìn)行數(shù)據(jù)一致性對賬,通過上下游兩方或者多方的DB數(shù)據(jù),設(shè)計響應(yīng)的對賬規(guī)則,然后通過對賬平臺的近實時對賬能力,對線上數(shù)據(jù)實時進(jìn)行監(jiān)控,遇到數(shù)據(jù)不一致時,通過告警人工及時介入排查和對數(shù)據(jù)一致性進(jìn)行補償處理。
- 事后階段
SOP最佳指導(dǎo),對于系統(tǒng)比如支付環(huán)節(jié),發(fā)現(xiàn)商家存在違規(guī)刷單、異常交易等行為時,通過提前梳理好的SOP手冊,對其進(jìn)行支付、結(jié)算、提現(xiàn)能力的快速封禁,防止資損情況的進(jìn)一步放大。
以上對各個環(huán)節(jié)進(jìn)行了一些具體實施手段的展示,在整個治理過程中,我們還做了大量的其他工作,比如系統(tǒng)內(nèi)的對賬能力建設(shè)、配置擾亂、紅藍(lán)對抗等等,如果有想了解的朋友,我們專門在出幾篇文章來展開聊聊。
總結(jié)
本文介紹了資金系統(tǒng)如何進(jìn)行加固升級的一個整體實施思路,另外整個核心治理思路可以遷移到任何系統(tǒng)的穩(wěn)定性治理,在生產(chǎn)環(huán)境真正落地的時候需要根據(jù)自身業(yè)務(wù)場景進(jìn)行適當(dāng)調(diào)整即可;同時在具體落地的時候,需要對各個環(huán)節(jié)進(jìn)行方案充分設(shè)計和討論,以防在穩(wěn)定性治理過程中產(chǎn)生的系統(tǒng)故障。