得物提供大量商品買賣等服務,資金流轉量大,任何由于設計缺陷、系統缺陷、系統故障、人為操作、安全漏洞等因素都會引發直接或間接資金損失。資損防控就是在項目全生命周期內,引入多種資金分析和控制手段,預防資損故障或控制資損故障影響范圍。
那么在日常工作中,具體如何開展呢?主要可以從以下三個方面來做:
在業務項目開始時,我們應該評定項目資金風險等級,比如高風險需要重點關注&投入,中風險需要投入多少資源,低風險又如何保障。
在項目資金風險評定后,產品架構設計時需要包括技術風險設計,比如冪等、分布式數據一致性、異地多活等。
然后對于高資金風險項目,我們需要出專門的資金風險系分,在得物重點關注資金流、信息流以及物流的流轉,比如業務的高保鏈路是怎么樣的,有哪些資損風險點等。
接下來就是對輸出的資損風險點進行布防,布防的形式主要是核對和監控,核對為主,監控作為兜底,因為前面輸出的資損風險點可能會有遺漏,監控是業務異常的感知手段。日常我們也可以通過混沌工程進行風險挖掘&核對規則驗證。
最后我們需對資損風險告警進行應急,拉起應急小組排查確認風險并修復。
資損防控并不是靠某一個角色來承擔,而是需要架構、研發、質量和SRE一起來防控并嵌入日常工作流程中,從組織架構視角,我們需要建立至少三道防線,即研發防線,質量防線和SRE防線,相互兜底,合并共舉達到資損防控的目的。當然各角色在項目各個階段各有側重,比如SRE負責業務線上穩定性,那么線上的資損防控投入相對大一些。
從發現資損風險時效視角來說,可以分為實時核對(T+0)、近實時核對(T+M)、離線核對(T+H, T+1),每種核對方式都有其適配的業務場景,并不存在替代之說,比如不落庫的配置變更適用實時核對,業務定時任務適用離線核對等等。實際業務場景布防時需分析業務特點,然后再使用合適的核對體系工具。在組織分工方面,研發側重離線核對,測試側重近實時核對,SRE側重實時核對,當然實際工作中并不必這么界線分明,自己看到的風險點,可以選用合適的工具體系。
從核對是否影響業務運行視角看,可以分為旁路核對和主路核對,旁路核對的結果對業務運行不構成影響,僅僅是風險揭示,而主路核對是有能力影響業務運行的,比如資損熔斷用的就是主路核對技術,在核對告警報出后中斷業務運行。目前公司已有的A、B平臺都屬于旁路核對體系。
在布防核對規則后,我們怎么檢驗布防的有效性,同時因為業務迭代發展,早前布防的核對規則需要調整核對邏輯來適配新的業務邏輯,也就是說我們如何保鮮核對規則?這就需要混沌工程資損演練來支撐了。資損演練又分為有損演練和無損演練,比如在線上搞有損演練時經常把金額數據加/減0.01,檢驗布防的核對規則是否發現,這樣即使發生了實際資損也在演練預算可以覆蓋的范圍內,但在線上搞有損演練需謹慎評估影響范圍。資損防控無損演練關鍵在于生產庫的克隆,這樣在演練時做數據篡改并不影響線上業務運行。
我們在做資損防控時,最重要的一步是風險識別,它是資損核對布防的源頭,可以這么說,如果沒有風險識別就沒有接下來核對布防。風險識別可以通過人工分析和智能系統推導兩種方式得到,從建設發展階段來說,人工分析通常是最開始采用的方式,在這個基礎上,再通過算法推導+專家經驗發展出智能系統推導。下面依人工分析視角來展開,這里舉例一個簡化版得物系統的資損防控如何做。如下圖所示,左邊為商品交易業務鏈路,其中包括用戶下單交易和運營配置商品:
圖片
因為交易平臺落有訂單交易的金額和狀態,而匯金平臺對接各支付渠道,是支付的實際執行者,這里就存在上下游訂單金額、狀態的一致性風險。
如用戶購買的商品在參加營銷活動,交易平臺會查詢商品運營平臺具體活動邏輯,比如營銷活動的預算、優惠券使用的限次邏輯,這里可能存在活動預算、優惠券使用的業務型風險。
運營人員配置某次營銷活動,在圈品、價格等關鍵參數上出現錯配、漏配等配置型風險。
上面所說的風險通常需要在分析PRD、技術實現文檔或代碼CR后才能識別出來,接下來看看我們如何進行布防。
在整個資金防控體系的演進過程中,離線核對應該說是業界最先發展出來的核對手段,最初與很多銀行一樣,是靠人力做當前的金額跟全天總賬的對賬,之后通過自動的方式,將全量數據庫表導出后做計算來進行核對。目前在得物主要是通過ODPS來實現T+1、T+H離線核對,它的優勢是不影響業務生產庫,并且因為是定時調度運行,所以對于業務定時任務等需較長時間數據回溯的場景比較適配。
圖片
通過數據庫Binlog可以實現分鐘級的資損核對,這種核對方式對于業務上下游一致性風險有非常好的發現能力,日常配合混沌工程的無損演練能力,對于未覆蓋到資損風險也可以很好的揭示出來,所以T+M核對適用于涉數據庫字段的一致性風險、蓋帽等業務場景。
圖片
隨著業務的發展,對于資損核對也提出更高要求,我們需要發展出實時核對能力。比如可以通過業務插樁的方式來實現同步/異步觸發,同時實時監聽業務執行消息,然后數據路由至具體業務域執行核對邏輯,這種核對方式屬資損防控領域的重武器,適用于業務型風險、配置型風險,同時滿足復雜業務核對場景。目前SRE已經在建設T+0實時核對系統。
圖片
資損演練可以驗證布防的核對規則有效性,又可以用來挖掘未覆蓋到資損風險,所以資損演練是資損防控體系很重要的一環。資金無損演練有以下三個關鍵點:
下圖為初步的資金無損演練方案:
圖片
作為支持得物業務的SRE主導了得物履約資金安全保障工作,由于得物履約的業務鏈路長,風險敞口大,我們認真考慮了業務穩定性及其資損風險并實踐了前述的相關資損防控理念。
圖片
出價、下單、支付、發貨、結算、營銷、逆向7個業務域定義出高保業務鏈路,輸出資損點、變更點、新增表及字段以及相關監控點。
依托現有工具平臺進行布防,成本最優解。
圖片
資損防控通過核對規則落地,同時業務監控配置告警規則,通過混沌工程演練驗證規則有效性。
a. 應急響應
b. 自動巡檢
i. 每天自動巡檢重要指標推送到對應的工作群
a. 對相關規則進行保鮮
b. 未暴露風險挖掘
a. 業務插樁先旁路核對,后可阻斷核對。
在得物落地資損防控期間,作為SRE一直在宣導的理念:資損防控需要研發、測試、SRE三方相互協作,三道防線相互兜底,合并共舉達到資損防控的目標。未來,資損防控我們重點關注以下3個方面:
本文鏈接:http://www.massagepornsite.com/showinfo-26-6218-0.html資損防控技術體系簡介及實踐
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: DDD 與 CQRS 才是黃金組合