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