銀行屬于傳統(tǒng)的金融行業(yè),銀行業(yè)隨著科技的不斷進(jìn)步和客戶(hù)需求的不斷提升,對(duì)銀行科技系統(tǒng)的要求也是逐漸提高,而且隨著近幾年互聯(lián)網(wǎng)金融的快速發(fā)展,傳統(tǒng)銀行業(yè)系統(tǒng)的發(fā)展也是非常迅速,本人08、09年最早在外企從事北美銀行網(wǎng)銀和手機(jī)銀行的產(chǎn)品開(kāi)發(fā)工作,后來(lái)從10年一直到16年一直在大型國(guó)有銀行從事軟件開(kāi)發(fā)和架構(gòu)設(shè)計(jì)的工作,16年中從國(guó)有銀行離開(kāi)加入互聯(lián)網(wǎng)電商,做了不到一年因?yàn)榉N種非技術(shù)問(wèn)題離開(kāi)又回歸了銀行系統(tǒng),目前在一家微型民營(yíng)銀行從事產(chǎn)品設(shè)計(jì)、架構(gòu)設(shè)計(jì)的工作。總的來(lái)說(shuō)還是經(jīng)歷了這幾年銀行系統(tǒng)快速發(fā)展的時(shí)期,也涉及了大型架構(gòu)的變遷,今天就給大家介紹下銀行的架構(gòu)變遷,如有不對(duì)的地方還請(qǐng)專(zhuān)家指正。
1. 90年代前期集中式架構(gòu)
90年代初期國(guó)內(nèi)銀行業(yè)蓬勃發(fā)展,早期各個(gè)分行都是人工記賬,定期由省分行統(tǒng)一報(bào)送總行系統(tǒng),隨著國(guó)內(nèi)經(jīng)濟(jì)的快速發(fā)展,銀行的業(yè)務(wù)量也隨之暴漲這樣的工作模式已經(jīng)無(wú)法滿(mǎn)足需求了,所以90年代初4大國(guó)有銀行都紛紛加強(qiáng)科技部的研發(fā)投入,參考美國(guó)、英國(guó)銀行系統(tǒng)建設(shè)經(jīng)驗(yàn)開(kāi)始建設(shè)現(xiàn)代化銀行系統(tǒng),其實(shí)在那個(gè)年代大家對(duì)計(jì)算機(jī)的印象還非常陌生,在每個(gè)柜面都架設(shè)計(jì)算機(jī),當(dāng)時(shí)的柜面系統(tǒng)都是統(tǒng)一的命令行模式,沒(méi)有可視化界面,后臺(tái)系統(tǒng)采用的是集中式的架構(gòu),如下圖所示:
當(dāng)時(shí)的銀行系統(tǒng)基本都是這樣的集中式架構(gòu),大型國(guó)有銀行一般也都是這種簡(jiǎn)單架構(gòu),當(dāng)時(shí)大部分行業(yè)的系統(tǒng)也都是這樣的架構(gòu)。在這樣的架構(gòu)下柜面前端和后端系統(tǒng)采用的是CS架構(gòu),胖客戶(hù)端的模式,每次客戶(hù)端升級(jí)都需要將安裝包提前一天下發(fā)給各個(gè)網(wǎng)點(diǎn),現(xiàn)在看起來(lái)還是比較low的。銀行后端是大核心的模式,即核心系統(tǒng)承擔(dān)了主要的功能,賬戶(hù)、存貸款、總賬、對(duì)賬、支付、來(lái)賬等功能都在集中式的大核心系統(tǒng)中,只有很少的一部分功能被剝離出核心系統(tǒng),歸屬于外圍系統(tǒng)。這些外圍系統(tǒng)一般都是市面上有一些軟件公司提供了現(xiàn)成的產(chǎn)品,只需要簡(jiǎn)單的二次開(kāi)發(fā)就可以滿(mǎn)足需求,這樣一方面降低了開(kāi)發(fā)成本,另一方面也加快的系統(tǒng)實(shí)施的進(jìn)度。但是這種架構(gòu)的系統(tǒng)承載能力還是比較有限的,隨著交易量的快速上升很快就滿(mǎn)足不了需求了,聽(tīng)行里的前輩介紹當(dāng)年的場(chǎng)景,就是他們科技部每天都很忙,交易量每個(gè)月都會(huì)有大幅增長(zhǎng),每個(gè)季度的計(jì)息日批量和年底的年終決算都會(huì)讓所有人忙通宵,這些記憶也成為了所有那個(gè)年代銀行人痛苦的回憶。
2. 90年代中后期分布式架構(gòu)
集中式的系統(tǒng)已經(jīng)逐漸滿(mǎn)足不了高速增長(zhǎng)的業(yè)務(wù)需求了,所以規(guī)模比較大的國(guó)有銀行就開(kāi)始考慮將現(xiàn)有的總行集中式系統(tǒng)分別在各個(gè)省分行分別都部署一套,每天晚上再通過(guò)批量的方式將各省數(shù)據(jù)進(jìn)行集中,這種架構(gòu)的方式能夠最快的解決聯(lián)機(jī)性能問(wèn)題,但是又會(huì)引發(fā)新的問(wèn)題,那就是跨省轉(zhuǎn)賬交易無(wú)法實(shí)時(shí)到賬,就算是同一家銀行的跨省轉(zhuǎn)賬一般也無(wú)法做到。所以90年代中后期的系統(tǒng)架構(gòu)圖如下圖所示:
看圖就可以發(fā)現(xiàn),和之前的架構(gòu)區(qū)別主要就是將總行集中式的部署架構(gòu)調(diào)整為了各省分布式的架構(gòu),但是這種分布式架構(gòu)并不是我們現(xiàn)在討論的互聯(lián)網(wǎng)分布式架構(gòu),當(dāng)年還沒(méi)有比較成熟的分布式架構(gòu)方案,所以當(dāng)時(shí)的分布式其實(shí)只是簡(jiǎn)單的將原先總行部署的一套核心系統(tǒng)和配套的外圍系統(tǒng)分別在各省科技部分別部署,分別獨(dú)立運(yùn)維,就好像機(jī)構(gòu)在整體行政關(guān)系上是一體的,但是實(shí)際科技系統(tǒng)是分開(kāi)的,沒(méi)有必然的聯(lián)系,只是每天會(huì)進(jìn)行數(shù)據(jù)交換來(lái)實(shí)現(xiàn)跨省轉(zhuǎn)賬、票據(jù)承兌等業(yè)務(wù),所以很多銀行業(yè)務(wù)的效率比較低,很難滿(mǎn)足一些比較急迫的客戶(hù)需求,最后出現(xiàn)了一些現(xiàn)象就是一個(gè)客戶(hù)為了給一個(gè)跨省的客戶(hù)匯款,最快的手段是先用自己本地的卡取現(xiàn)金,再人肉帶到異地,有朋友要問(wèn)了為什么不到當(dāng)?shù)卦偃。驗(yàn)槟莻€(gè)年代跨省取現(xiàn)不但取現(xiàn)時(shí)間、金額受限制還有高額的手續(xù)費(fèi)。
3. 2000-2010集中式網(wǎng)狀架構(gòu)
2000年互聯(lián)網(wǎng)高速發(fā)展,銀行的科技水平也在這幾年中高速發(fā)展,各家行的水平也逐漸拉開(kāi)了差距,之前老的各省分布式部署的業(yè)務(wù)問(wèn)題也漸漸凸顯,由工行率先將之前分布式部署的省行系統(tǒng)進(jìn)行總行上收,系統(tǒng)上收可不是那么簡(jiǎn)單,當(dāng)年為什么要各省分別部署?就是因?yàn)榧惺较到y(tǒng)架構(gòu)已經(jīng)無(wú)法承載每天高速發(fā)展的業(yè)務(wù)量,如果再將各省的數(shù)據(jù)上收,那就意味著可能每天核心批量還沒(méi)跑完還沒(méi)來(lái)得及分發(fā)給外圍系統(tǒng)就已經(jīng)到第二天開(kāi)門(mén)營(yíng)業(yè)時(shí)間了。這么做科技部門(mén)需要承擔(dān)的壓力還是非常大的,需要解決很多問(wèn)題,主要有以下問(wèn)題:1)數(shù)據(jù)結(jié)構(gòu)統(tǒng)一,數(shù)據(jù)映射,各省數(shù)據(jù)上收,數(shù)據(jù)遷移;2)新系統(tǒng)開(kāi)發(fā)工作;3)系統(tǒng)上收對(duì)上收省份日常業(yè)務(wù)的影響;4)分行員工新系統(tǒng)的培訓(xùn)工作;5)新舊系統(tǒng)的平滑遷移,新舊系統(tǒng)的日常兼容性交互;6)整體的投產(chǎn)遷移方案、回退方案。我當(dāng)時(shí)在中國(guó)銀行也有幸經(jīng)歷了這一過(guò)程,整個(gè)過(guò)程持續(xù)了快4年,從整體的方案設(shè)計(jì)到系統(tǒng)的實(shí)施再到后面的系統(tǒng)遷移上線(xiàn)等等一系列工作,這個(gè)過(guò)程是艱難的,基本上加班成為常態(tài),但是在這個(gè)過(guò)程中也學(xué)到了很多東西,也是成長(zhǎng)比較快的一個(gè)時(shí)期。整個(gè)改造的一個(gè)核心架構(gòu)思路就是對(duì)核心系統(tǒng)進(jìn)行瘦身,將核心系統(tǒng)精簡(jiǎn)化,以此來(lái)提高核心系統(tǒng)的業(yè)務(wù)處理吞吐量,并采購(gòu)最新的大型機(jī)來(lái)保證處理性能和IO性能,將大部分的業(yè)務(wù)都單建系統(tǒng)拆離出核心系統(tǒng),基本上這樣的整體架構(gòu)在當(dāng)時(shí)評(píng)估的時(shí)候能保證未來(lái)10-20年的業(yè)務(wù)發(fā)展量。下圖為當(dāng)時(shí)的整體架構(gòu)圖,但是從這個(gè)架構(gòu)圖中可以發(fā)現(xiàn),整體架構(gòu)核心系統(tǒng)和外圍系統(tǒng),再和渠道系統(tǒng)之間都是非常混亂的,系統(tǒng)間是完全的網(wǎng)狀結(jié)構(gòu),圖里還沒(méi)有完全畫(huà)完,因?yàn)楫?huà)完以后基本是沒(méi)辦法看的,非常復(fù)雜的蜘蛛網(wǎng)。有個(gè)別系統(tǒng)因?yàn)槭峭獍少?gòu)的系統(tǒng)的報(bào)文結(jié)構(gòu)和其他系統(tǒng)都是不一樣的,這樣一旦某個(gè)系統(tǒng)要和這些奇葩系統(tǒng)進(jìn)行對(duì)接就會(huì)遇到這樣的問(wèn)題,需要把這些奇葩接口的報(bào)文全部處理一遍,這就導(dǎo)致了很多重復(fù)的工作。
4. 2000-2010集中式總線(xiàn)架構(gòu)
大部分銀行很快就意識(shí)到這種集中式網(wǎng)狀架構(gòu)的缺陷,當(dāng)時(shí)也正好流行ESB總線(xiàn)架構(gòu),所以銀行系統(tǒng)也不免俗的紛紛去實(shí)現(xiàn)ESB總線(xiàn)。總線(xiàn)架構(gòu)就是在渠道系統(tǒng)和核心、外圍系統(tǒng)之間建立了一個(gè)ESB總線(xiàn)橋梁,所有的外圍和核心系統(tǒng)的接口都注冊(cè)發(fā)布到ESB總線(xiàn)上,由總線(xiàn)對(duì)外提供完全統(tǒng)一的接口標(biāo)準(zhǔn)協(xié)議,這樣就避免了每個(gè)系統(tǒng)接入都是同一套標(biāo)準(zhǔn)接口,不用重復(fù)去實(shí)現(xiàn)不同的報(bào)文協(xié)議。這樣的架構(gòu)看起來(lái)就非常清爽了,不管是渠道系統(tǒng)還是外圍系統(tǒng)調(diào)用各個(gè)系統(tǒng)的接口的時(shí)候都比較方便。這樣的架構(gòu)在銀行系統(tǒng)中實(shí)施了很長(zhǎng)時(shí)間,包括目前大部分的銀行還都是采用這種架構(gòu)模式,雖然現(xiàn)在看起來(lái)非常普通,但是當(dāng)時(shí)看起來(lái)此種架構(gòu)還是非常完美的。而且這種架構(gòu)對(duì)于中小銀行就算現(xiàn)在使用起來(lái)也是非常合適的。
5. 2010-2012互聯(lián)網(wǎng)總線(xiàn)型架構(gòu)
隨著互聯(lián)網(wǎng)的發(fā)展網(wǎng)上銀行、手機(jī)銀行、直銷(xiāo)銀行紛紛成為新的渠道,人們也開(kāi)始快速接受這種新興的互聯(lián)網(wǎng)渠道,互聯(lián)網(wǎng)總線(xiàn)架構(gòu)和之前架構(gòu)的最大差別在于安全架構(gòu),后面會(huì)再單獨(dú)寫(xiě)兩篇關(guān)于安全的文章。其他方面的架構(gòu)基本沒(méi)什么變化,但是會(huì)發(fā)現(xiàn)一種現(xiàn)象就是,因?yàn)楹诵南到y(tǒng)不新增大功能的情況下,不斷新增外圍新產(chǎn)品,當(dāng)時(shí)中國(guó)銀行一共有一百多個(gè)外圍系統(tǒng),還沒(méi)算一些快下線(xiàn)的系統(tǒng)。隨著業(yè)務(wù)量的不斷上升,核心系統(tǒng)的業(yè)務(wù)量不斷上升,總線(xiàn)的壓力也逐漸上升,總線(xiàn)機(jī)器不斷的橫向水平擴(kuò)展,在走之前總線(xiàn)的集群就擴(kuò)展到了100個(gè)節(jié)點(diǎn)。
6. 2012-2015互聯(lián)網(wǎng)金融服務(wù)架構(gòu)
到了2012年以后隨著facebook、amazon開(kāi)放平臺(tái)獲得的巨大成功,BAT都逐步將自己的接口開(kāi)放出來(lái),都實(shí)施了開(kāi)放平臺(tái)生態(tài)圈戰(zhàn)略,從而推動(dòng)了SOA服務(wù)化的更快速發(fā)展。銀行之前也一直在研究服務(wù)化的實(shí)施方案,但是由于ESB總線(xiàn)架構(gòu)運(yùn)轉(zhuǎn)的非常穩(wěn)定,也沒(méi)出什么問(wèn)題,所以導(dǎo)致各個(gè)行進(jìn)行服務(wù)化改造的動(dòng)力不是很強(qiáng),而且這種整體架構(gòu)的調(diào)整涉及到的部門(mén)和業(yè)務(wù)影響都是非常大的,一般銀行這樣比較穩(wěn)妥的公司也都不敢有大的動(dòng)作。我也是有幸在銀行趕上了中國(guó)銀行試點(diǎn)互聯(lián)網(wǎng)金融,對(duì)新建的互聯(lián)網(wǎng)金融系統(tǒng)實(shí)施服務(wù)化架構(gòu),下面就是當(dāng)時(shí)中國(guó)銀行的互聯(lián)網(wǎng)金融服務(wù)架構(gòu),這個(gè)架構(gòu)其實(shí)是一個(gè)傳統(tǒng)銀行互聯(lián)網(wǎng)金融的一個(gè)妥協(xié)架構(gòu)。
從架構(gòu)圖中可以看到,左邊是之前的傳統(tǒng)銀行集中式總線(xiàn)架構(gòu),右邊是互聯(lián)網(wǎng)服務(wù)化架構(gòu),包含了開(kāi)放平臺(tái)、服務(wù)注冊(cè)和發(fā)現(xiàn)、服務(wù)化產(chǎn)品系統(tǒng)。為什么這樣設(shè)計(jì),這是因?yàn)閭鹘y(tǒng)銀行的各個(gè)產(chǎn)品系統(tǒng)是比較穩(wěn)定的,而且在銀行系統(tǒng)待過(guò)的同學(xué)都知道傳統(tǒng)銀行要新建一個(gè)系統(tǒng)或者新實(shí)施一個(gè)需求都是要經(jīng)過(guò)很長(zhǎng)的周期,傳統(tǒng)銀行都是瀑布式開(kāi)發(fā)方式,各種評(píng)審、審批流程,導(dǎo)致從需求提出到功能上線(xiàn)基本上3個(gè)月過(guò)去了,效率還是挺低下的。根本滿(mǎn)足不了互聯(lián)網(wǎng)金融快速迭代的需求,因?yàn)楫?dāng)時(shí)我們不但試點(diǎn)新的soa架構(gòu),同時(shí)也在試點(diǎn)迭代開(kāi)發(fā),所以將互聯(lián)網(wǎng)金融產(chǎn)品單獨(dú)排期實(shí)施,單獨(dú)部署,產(chǎn)品系統(tǒng)如果涉及到調(diào)用傳統(tǒng)銀行產(chǎn)品接口的地方全部通過(guò)ESB總線(xiàn)來(lái)調(diào)用傳統(tǒng)銀行產(chǎn)品系統(tǒng)接口。所有的互聯(lián)網(wǎng)金融產(chǎn)品系統(tǒng)全部將接口服務(wù)化注冊(cè)到服務(wù)注冊(cè)中心,當(dāng)時(shí)我們所有的互聯(lián)網(wǎng)金融產(chǎn)品系統(tǒng)全部基于阿里的dubbo開(kāi)發(fā),系統(tǒng)將接口都注冊(cè)到zookeeper上,兩個(gè)系統(tǒng)直接的服務(wù)交互采用RPC模式;通過(guò)開(kāi)放平臺(tái)對(duì)外提供接口暴露,可以發(fā)現(xiàn)這種架構(gòu)在保障傳統(tǒng)銀行系統(tǒng)穩(wěn)定性的同時(shí)也可以滿(mǎn)足互金需求的快速迭代實(shí)施,并且也使用了新興的互聯(lián)網(wǎng)分布式技術(shù),來(lái)降低開(kāi)發(fā)和運(yùn)維的成本,目前我了解到的很多銀行都在采用這種架構(gòu)在實(shí)施互聯(lián)網(wǎng)金融業(yè)務(wù)。
7. 2015-至今微服務(wù)架構(gòu)
最近兩年隨著容器技術(shù)的不斷發(fā)展,私有云平臺(tái)、devops也逐漸在銀行系統(tǒng)中進(jìn)行試點(diǎn),目前我所在的一家小型民營(yíng)銀行正在進(jìn)行這方面的技術(shù)試點(diǎn),底層采用docker進(jìn)行鏡像管理、構(gòu)建、發(fā)布,在系統(tǒng)層面全部采用服務(wù)化架構(gòu),目前我們使用的是springcloud整體的解決方案。這樣的架構(gòu)看起來(lái)也是比較清晰,而且擴(kuò)展性也很強(qiáng),能夠很好的滿(mǎn)足未來(lái)業(yè)務(wù)發(fā)展的需求,隨著docker技術(shù)的不斷成熟,后續(xù)的devops也是逐漸會(huì)替代大部分的人工運(yùn)維,之前我待過(guò)的一家互聯(lián)網(wǎng)電商,80多個(gè)產(chǎn)品系統(tǒng)只有3個(gè)運(yùn)維人員,所有的日常監(jiān)控、版本部署都是自動(dòng)化的,基本不需要人工干預(yù),這種模式也是后續(xù)銀行需要的一種開(kāi)發(fā)和運(yùn)維的方式。
今天只是大概介紹了下銀行系統(tǒng)的歷史變遷,真的只是非常簡(jiǎn)單的介紹,其實(shí)每個(gè)架構(gòu)都有很多故事,都可以寫(xiě)很多,等到后續(xù)有時(shí)間會(huì)再把其中發(fā)生的很多細(xì)節(jié)寫(xiě)給大家看:)