金融風(fēng)控領(lǐng)域的 DDD 與中臺(tái)思考
風(fēng)控領(lǐng)域作為金融核心領(lǐng)域之一,對(duì)金融業(yè)務(wù)發(fā)展有著至關(guān)重要的作用。風(fēng)控直譯就是風(fēng)險(xiǎn)控制,其核心是對(duì)風(fēng)險(xiǎn)與成本的平衡。風(fēng)控業(yè)務(wù)開展離不開風(fēng)控系統(tǒng)的支持,本文就風(fēng)控系統(tǒng)如何規(guī)劃架構(gòu)與演進(jìn),以及對(duì)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的思想和風(fēng)控中臺(tái)戰(zhàn)略的思考。
風(fēng)控與 DDD
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)作為微服務(wù)拆分的指導(dǎo)思想隨著微服務(wù)化火起來,但其過于抽象難懂,網(wǎng)上方法論眾多,而案例較少。本文嘗試對(duì)風(fēng)控領(lǐng)域如何按 DDD 思想設(shè)計(jì)給出一些實(shí)踐和思考。
DDD 從需求分析出發(fā)進(jìn)行領(lǐng)域建模,先劃分出多個(gè)問題域和子域,再將問題域落實(shí)到限界上下文 Context Bounds,并關(guān)聯(lián)成上下文地圖,最后運(yùn)用限界上下文作為微服務(wù)拆分的原則,每個(gè)限界上下文可拆分成一個(gè)服務(wù)獨(dú)立部署,這是 DDD 戰(zhàn)略設(shè)計(jì)部分。
問題域
問題域即為風(fēng)控領(lǐng)域,問題子域如何劃分?從風(fēng)控發(fā)展過程和手段來看。早期風(fēng)控都要部署各種規(guī)則策略,滿足反欺詐及合規(guī)的硬性要求,那么第一個(gè)核心子域應(yīng)該就是規(guī)則。而規(guī)則實(shí)施離不開數(shù)據(jù)和特征/指標(biāo)/變量的支持,第二個(gè)核心子域即為特征。隨著大數(shù)據(jù)技術(shù)和人工智能技術(shù)的普及,智能風(fēng)控中模型成為重要手段,那么第三個(gè)核心子域就是模型。

接下來以子域?yàn)橹行倪M(jìn)行領(lǐng)域建模,進(jìn)一步劃分出每個(gè)領(lǐng)域的限界上下文,這里依據(jù)業(yè)務(wù)領(lǐng)域知識(shí),面向業(yè)務(wù)變化,關(guān)注限界上下文內(nèi)概念完整性以及高內(nèi)聚低耦合原則拆解。
規(guī)則域
規(guī)則領(lǐng)域,是利用傳統(tǒng)金融風(fēng)控的規(guī)則、策略、評(píng)分卡等手段,通過部署規(guī)則策略,組織流程,完成決策輸出,按此流程可拆分規(guī)則、決策、流程三大部分。
規(guī)則是通過模型匹配的方式,滿足特定條件給出特定輸出動(dòng)作,限界上下文對(duì)應(yīng)的就是規(guī)則引擎系統(tǒng)。參考:規(guī)則引擎實(shí)現(xiàn)方案
決策是利用規(guī)則的結(jié)果完成進(jìn)一步的動(dòng)作,比如拒絕阻斷,進(jìn)入人審,給出評(píng)級(jí)評(píng)分建議等,其對(duì)應(yīng)的就是決策引擎系統(tǒng)。參考:風(fēng)控決策實(shí)現(xiàn)方案
流程是對(duì)規(guī)則和決策的編排,按 BPMN 組織成不同的規(guī)則流/決策流,并加入分支和 AB 實(shí)驗(yàn),一般也叫流程引擎系統(tǒng)。參考:決策流實(shí)現(xiàn)方案
因此有了規(guī)則引擎、決策引擎、流程引擎三個(gè)系統(tǒng)。由于三個(gè)系統(tǒng)相互依存,設(shè)計(jì)時(shí)可合并為一個(gè)系統(tǒng) 按模塊來劃分,業(yè)界統(tǒng)稱為金融決策引擎系統(tǒng)。規(guī)則、決策、流程為該系統(tǒng)的三大核心模塊。

模型域
模型領(lǐng)域,從工作流程上包括特征挖掘,數(shù)據(jù)建模,模型生產(chǎn)預(yù)測(cè),模型管理,模型部署, 模型監(jiān)控等。還有另一維度可以劃分成離線部分和在線實(shí)時(shí)部分,離線部分主要工作側(cè)重?cái)?shù)據(jù)挖掘和離線訓(xùn)練建模,而實(shí)時(shí)部分承擔(dān)了將模型應(yīng)用生產(chǎn)來做評(píng)估。由于離線和實(shí)時(shí)差別較大,所依賴組件更不相同,這樣的劃分更合理,將“相同變化”聚合到同一模塊中。
領(lǐng)域劃分時(shí)可以將離線部分統(tǒng)一為機(jī)器學(xué)習(xí)平臺(tái),其職責(zé)邊界為離線特征挖掘、數(shù)據(jù)建模和模型迭代。將實(shí)時(shí)在線部分統(tǒng)一為模型引擎系統(tǒng),承擔(dān)生產(chǎn)模型打分工作。將離線模型部署到生產(chǎn)、模型版本管理、模型性能監(jiān)控分析等可以為模型管理后臺(tái)。

特征上下文可能會(huì)橫跨模型域和特征域,其中離線特征挖掘工作一般是模型域的工作邊界,而實(shí)時(shí)特征計(jì)算則屬于特征域的部分。
特征域
特征領(lǐng)域從特征用途上,分為支持規(guī)則決策的特征/指標(biāo),支持模型打分的特征變量(X 變量)。從來源上,均來自數(shù)據(jù)加工,數(shù)據(jù)又可能來自生產(chǎn)系統(tǒng)用戶錄入、數(shù)據(jù)采集、三方數(shù)據(jù) API。
首先數(shù)據(jù)部分工作歸為數(shù)據(jù)平臺(tái),可再分為外部數(shù)據(jù)和內(nèi)部數(shù)據(jù),外部數(shù)據(jù)一般以 API 方式存在,稱為外部 API 數(shù)據(jù)平臺(tái)。內(nèi)部數(shù)據(jù)可以提前加工成特征/指標(biāo),需要時(shí)直接提取,稱為特征平臺(tái)/指標(biāo)平臺(tái)/變量平臺(tái)(各公司叫法不一)。
針對(duì)模型用特征和規(guī)則用特征,可合二為一,也可拆分獨(dú)立,二者在維度和數(shù)量級(jí)上還是會(huì)有較大差異。
數(shù)據(jù)的加工計(jì)算和存儲(chǔ)方式?jīng)Q定了系統(tǒng)的執(zhí)行效率,依賴不同技術(shù)組件,離線加工計(jì)算、實(shí)時(shí)加工計(jì)算、預(yù)計(jì)算等差異可以衍生不同的系統(tǒng)架構(gòu)演進(jìn)。
離線計(jì)算一般是批處理即為離線計(jì)算平臺(tái)(基于 Hive/Spark);實(shí)時(shí)加工計(jì)算一般為實(shí)時(shí)特征引擎;預(yù)計(jì)算采用流式計(jì)算引擎(Flink)成為流計(jì)算引擎平臺(tái);圖關(guān)系特征更適應(yīng)圖數(shù)據(jù)庫成為圖關(guān)系平臺(tái);用戶標(biāo)簽會(huì)構(gòu)建為用戶畫像平臺(tái);還有名單系統(tǒng)(黑白灰名單)等不同平臺(tái)。
劃分時(shí)控制更細(xì)粒度就會(huì)有更多系統(tǒng)平臺(tái),能保持最少組件依賴和系統(tǒng)單一原則,而有時(shí)考慮維護(hù)成本和團(tuán)隊(duì)規(guī)模也會(huì)統(tǒng)一整合為特征平臺(tái),數(shù)據(jù)平臺(tái)這種粗粒度系統(tǒng)限界。

以上拆分是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)略設(shè)計(jì)部分,在宏觀戰(zhàn)略上做出設(shè)計(jì),而針對(duì)單個(gè)服務(wù)的戰(zhàn)術(shù)設(shè)計(jì),定義聚合根、實(shí)體、值對(duì)象則是另一篇內(nèi)容。
實(shí)際系統(tǒng)架構(gòu)時(shí)并不能按理想設(shè)計(jì)一步到位,而是基于長期業(yè)務(wù)經(jīng)驗(yàn)逐步演進(jìn)和拆分而來。微服務(wù)拆分本就各有不同,各成體系,孰優(yōu)孰劣適合團(tuán)隊(duì)、滿足業(yè)務(wù)發(fā)展需求更重要,畢竟還有“康威定律”以及“遺留系統(tǒng)”兩座大山。
風(fēng)控中臺(tái)
中臺(tái)是前兩年流行起來的“救命稻草”,但事實(shí)證明也并非銀彈,是非曲折暫不論。我理解它更多來自各類業(yè)務(wù)中普適性的業(yè)務(wù)邏輯與通用流程的沉淀,是一種跨業(yè)務(wù)的、全局的能力復(fù)用,能快速支持不同業(yè)務(wù)場(chǎng)景。那么金融風(fēng)控領(lǐng)域的中臺(tái)怎么定義呢?
風(fēng)控領(lǐng)域有著天然的中臺(tái)培養(yǎng)價(jià)值,金融領(lǐng)域大多與金錢打交道,那么風(fēng)險(xiǎn)控制不可避免,各類業(yè)務(wù)場(chǎng)景無論信貸、消費(fèi)貸還是信用卡、保險(xiǎn),均存在不同的風(fēng)險(xiǎn)控制環(huán)節(jié),在信貸審計(jì)、貸中貸后管理、發(fā)卡評(píng)估、理賠欺詐等應(yīng)用場(chǎng)景均有風(fēng)控訴求。那么統(tǒng)一風(fēng)控中臺(tái)的搭建收益良多,凡是需要風(fēng)控的業(yè)務(wù)都可以快速對(duì)接風(fēng)控中臺(tái)來滿足自己業(yè)務(wù)的風(fēng)控目標(biāo)。
風(fēng)控中臺(tái)是將以決策引擎為核心驅(qū)動(dòng),以模型引擎為大腦,在特征引擎、數(shù)據(jù)平臺(tái)的基礎(chǔ)上構(gòu)建的一套通用風(fēng)控能力。需要對(duì)其高度抽象,圍繞風(fēng)控領(lǐng)域展開,并減少不同業(yè)務(wù)屬性的侵入,任何業(yè)務(wù)場(chǎng)景可快速復(fù)用一套中臺(tái),符合中臺(tái)的定位。
那么業(yè)務(wù)場(chǎng)景的差異如何處理?如信貸審批場(chǎng)景側(cè)重反欺詐和信用評(píng)級(jí)兩方面,信用卡場(chǎng)景側(cè)重評(píng)級(jí)和額度,保險(xiǎn)場(chǎng)景又有不同,依賴的決策流程和結(jié)果各不相同。中臺(tái)決策引擎會(huì)根據(jù)場(chǎng)景不同匹配執(zhí)行不同決策流,以 Pipeline 方式組裝不同規(guī)則、決策、分支,并輸出執(zhí)行過程和決策結(jié)果,再通過前臺(tái)翻譯、組裝結(jié)果滿足業(yè)務(wù)訴求。
風(fēng)控前臺(tái)層是風(fēng)控中臺(tái)和業(yè)務(wù)系統(tǒng)的代理和橋梁,也是業(yè)務(wù)接入層,其為一套系統(tǒng)還是多套系統(tǒng)還看“康威定律”。如果業(yè)務(wù)接入由各業(yè)務(wù)線負(fù)責(zé)維護(hù),那么各自維護(hù)一套服務(wù),否則一個(gè)團(tuán)隊(duì)可以維護(hù)一套服務(wù)并拆分模塊治理。
相對(duì)的配置管理后臺(tái)、監(jiān)控后臺(tái),面向內(nèi)部策略分析師和業(yè)務(wù)運(yùn)營團(tuán)隊(duì),即為后臺(tái)層。以及數(shù)據(jù)和計(jì)算引擎這類支撐平臺(tái)。當(dāng)然數(shù)據(jù)部分獨(dú)立成數(shù)據(jù)中臺(tái)也是更普遍的做法。

