大型跨國銀行系統架構的微服務與敏捷開發實踐之路

30多年前,匯豐銀行聚集了一批當時的IT精英,花了幾年時間,在IBM AS400小型機平臺上,開發了一個當時非常前沿領先的國際財富交易系統。這個傳奇系統第一個版本在香港正式上線運作,是1987年。

30年後,2016年,這個系統的單體式架構和瀑布開發模式已經難以適應現階段的業務需求,沒人相信這個系統還能繼續起舞。

但七個月後,該系統重新登臺,與微服務架構深度結合,擁抱敏捷開發的工程理念,在複雜的業務環境中如魚得水。如今,開發人員仍在圍繞性能、安全等方向繼續優化系統架構。

在互聯網產業飛速變革的今天,這樣的故事時有發生,爲了給大家揭示這些架構演進背後的祕密,在2019 ArchSummit全球架構師峯會·深圳站 現場,來自匯豐科技的資深技術專家,爲參會者詳細展示了傳統遺留系統的改造思路,同時還帶來更多技術領域的分享,包括微服務架構的設計心得、敏捷開發思想的踐行方法以及在金融犯罪監控領域的架構設計要點。

一、使用微服務進行外圍搭建,讓“祖傳系統”重返青春

遺留代碼、遺留系統,常被開發者戲稱爲“歷史遺留問題”,讓整個團隊身負重擔。它往往經歷過多支團隊的維護,業務邏輯異常複雜冗餘,難以支撐業務拓展、難以維護,難以擁抱新的技術和理念。

針對以上遺留系統的改造問題,匯豐科技軟件工程經理劉華 、匯豐科技基金服務部門架構師謝強彬 以自身負責的基金服務系統爲例,在現場總結了相應的三條解決方案,分別是:

  • 在遺留系統外圍搭建微服務系統,從而解決遺留問題;
  • 通過API的設計解耦,使銀行系統不再依賴落地文件;
  • 使用OAuth認證 完善外部交互的安全機制。

1.採用微服務架構搭建外圍系統

每當有新的需求到來,開發團隊會首先構建數個微服務作爲中間層滿足需求,解決單體應用的複雜性問題。然後將其註冊到Eureka,以保證微服務集羣的可用性和分區容錯性。同時,允許內外部系統通過路由服務器輸入Gateway訪問中間的服務。

在微服務監控方面,系統會主動將日誌文件從微服務推送到ELK服務器,並配合ZipKinPrometheus 等工具對服務狀態作出監控,一旦出現故障立刻熔斷,並在Grafana展現出來。

2.通過API設計解耦對落地文件的依賴

API設計是改造的關鍵,它分爲系統級API和業務級API,保證了與供應商系統的解耦。匯豐科技通過系統級API把供應商裏的數據通過領域抽象進行映象,使得數據成爲單獨的API。當新的需求到來,即通過業務級API調度系統級API,完成需求。

API開發的上下游測試也是一件比較麻煩的事情。匯豐科技利用契約測試,由API開發的下游對上游約定接口的期望結果。約定完成後,大家可以按契約分別測試,從而解耦API上下游之間開發和測試之間的依賴,使得大家可以按照自己的開發節奏進行。

3.使用OAuth完善外部交互的安全機制

OAuth是爲用戶資源的授權提供的一個安全、開放、簡易的標準協議。OAuth的授權不會使第三方觸及到用戶的帳號信息,非常安全。而且任何第三方都可以使用OAuth認證服務,所以現在Google、Microsoft等公司都提供了OAuth認證服務,使其正在逐漸成爲開放資源授權的標準。

在這套架構裏,每一次來自外部的對微服務的請求,都要通過OAuth服務器驗證。OAuth在此統一了衆多微服務的安全機制,並且將安全做到了微服務級別而不是網關級別。

基於上述設計理念,匯豐銀行對基金服務系統的整體架構進行了重新設計,如下圖所示:

至此,曾經難以支撐業務發展的古老系統重新煥發生機。未來,兩位專家還期望將API開放成API商店,提供完善的API文檔和服務。

二、控制好微服務劃分顆粒度,使用成熟的解決方案加速改造

我們瞭解了微服務在傳統遺留系統改造問題上的設計方案,但很多開發者在實施的過程中仍然會被很多具體問題所困擾。比如從單體架構演進爲微服務架構,對於模塊的劃分力度的掌握非常重要,這也是開發者經常碰到的問題。如果劃分太粗會有複用性和靈活性的問題,劃分太細會造成API臃腫的問題。

匯豐工商金融香港網上銀行架構師傅寅旺 爲我們分享的原則是:

  • 每個微服務設計都能快速響應市場需求,可以代表完整的業務功能。
  • 儘量將業務邏輯放在外層處理,從而保證架構的靈活性,減少以後系統升級的複雜度。
  • 允許不同的服務按照不同的版本進行部署,便於實現平臺的靈活性,上下兼容。

爲了實現這些原則,這裏將微服務架構進行分層:

在架構圖中,最底層是公共基礎層,它在所有下游系統間進行通訊,把數據收集起來後暴露接口給外層使用;

向上是基礎業務層,某一個具體功能的業務處理將在這一層進行應用過濾;

最上層是應用服務層,主要體現微服務和對應功能之間的差異,解決不同場景、不同項目之間的需求,對基礎服務層和公共基礎層進行不同的編排調用。

在銀行的數字化轉型過程中,技術團隊面臨的問題往往包括基礎設施和軟件設計兩方面。一個好的基礎設施能極大加速架構的改造過程,避免團隊精力的浪費。因此,傅寅旺團隊也對一些toB解決方案做了調研選型。

經過整個團隊的探討分析,在前端系統的構建上,選用了Backbase;在後端系統構建上,選擇了MuleSoft。

選擇Backbase主要考慮到其提供的平臺管理工具,將UI設計變得簡單,釋放前端工程師的精力;同時,Backbase也提供外部容器,可以使用Camel將請求轉發到後臺微服務系統中。

對MuleSoft的選用則主要看中了可視化API編程與對每一條API請求都有有效校驗的安全機制。

這兩者的選擇與充分利用最終幫助匯豐香港網上銀行順利完成了架構改造。

在維護正常業務需求的同時對固有的遺留系統進行改造並不輕鬆,如何在精力有限的情況下打磨細節避免繞彎路,合理選擇成熟產品避免重複造輪子,是一個成功架構師的必備能力。

三、“樂高積木”式架構,用敏捷開發讓系統“健步如飛”

架構設計的重要程度不言而喻,一套優秀的架構不但能讓遺留系統煥發新的生機,還具備良好的可拓展性,對未來可能的業務拓展也有很強的支撐能力。但在匯豐銀行特殊業務場景下的前端領域,新的問題又出現了,匯豐亞太區手機銀行開發總監劉明華爲我們帶來了詳細的講解:

首先,前端技術更迭非常快,每隔三個月到半年,就會出現新的架構、新的技術,開發團隊追之不及。

其次,匯豐作爲一家大型跨國銀行,所處理業務遍及全球多個地區,每個地區的政策、用戶使用習慣都不同,反映到技術層面就需要大量差異化的APP開發。

最後,前端架構缺乏很好的依賴管理工具,模塊難以複用,代碼越來越臃腫,嚴重影響開發和部署速度。

在這種情況下,如何實現敏捷開發是個難題,而匯豐科技採用“樂高積木”的方式構建了自己的敏捷開發基礎。

首先設計通用的底層框架作爲插板,然後將所有的功能模塊像樂高零件一樣分配給小型團隊維護開發。各團隊根據國家及地區差異完善配置文件,從模塊庫裏選擇組件安裝在“插板”上,接下來通過持續集成、持續發佈的工具,不斷的將代碼、零部件按照你的要求整合打包發佈在對應的市場上。

這些樂高零件般的功能模塊包括設計庫、核心功能庫等等,通過GitHub來管理,同時嚴格禁止“重複造輪子”的問題,以最大程度實現代碼和模塊的複用。

當然,這些方案的推行離不開方法和機制的輔助,例如InnerSource(內部開源) 和自動化代碼審查。

很多巨頭如Google、Paypal都在採用InnerSource,最大程度的加強了軟件組件的重用。當然,InnerSource的好處不止於此,其在改善軟件質量、促進開放式創新等方面都效果顯著。對於匯豐科技團隊來說,InnerSource是團隊敏捷開發的核心,代碼管理直接建構在InnerSource機制之上,如果不使用基礎組件,不利用可以複用的代碼模塊,則根本不能進入開發流程。

而自動化代碼審查更需要一個完整、嚴謹的流程,使自動化測試和單元測試貫穿開發流程始終,如此才能保障代碼質量,讓以上所有機制不會成爲工程師協作的負擔,得以順利執行。

在上述方案一一得以實行後,敏捷開發的基因已經融入團隊,系統的迭代和拓展也因此“健步如飛”。

四、統一全球標準,以情報爲主導構建金融犯罪風險管理系統

在大型跨國銀行的業務背景下,單純的數字化轉型恐怕還不足以滿足一些特有業務的需求。

一份2017年的聯合國調查報告顯示,當年全球金融犯罪金額高達3.8萬億美元,其中接近2萬億美元流入全球金融系統進行洗錢操作,銀行的金融犯罪監控系統面臨的壓力與日俱增。

那麼如何優化系統架構設計,在技術的緯度打擊犯罪分子?

匯豐科技合規科技部中國區負責人關助凡 給出的答案主要分爲兩點:

  • 建立統一的全球標準,並保證數據同步。
  • 建立以情報爲主導的金融犯罪風險管理系統。

統一的全球標準主要是爲了應對各個地區政策不同,各個銀行對洗錢行爲的鑑別方式不同等情況。首先匯豐科技建立了通過Hadoop管理的數據池,輔以客戶細分工具,將所有的數據放入池中管理並細分;接下來,對細分後的數據分析建模,並對模型進行檢驗,將存在威脅的事件按不同權重派送給調查員進行調查。

以情報爲主導的金融犯罪架構分爲三大部分:

  • 數據
  • 分析
  • 交付

數據,包括交易數據、實體數據、數字化數據、金融犯罪數據、開源數據等。

分析是指對我們的數據進行分析。通過數據建立模型,並對模型進行分析及語境解釋,對事件進行分類、事件排序,最終交給我們調查員進行決策。

交付階段主要依賴人爲決策,決策行爲則轉換成數據進行反饋,作爲日後人工智能技術應用的基礎。

上述兩點綜合起來,爲金融犯罪監控領域的諸多問題提供了至關重要的技術解決方案。

以上五位專家的解析涵蓋了一個傳統單體架構如何優化轉型,如何應用敏捷開發思想讓系統始終保持旺盛的生命力,以及如何面向未來迎接新的需求挑戰。

在這個過程中,敏捷開發的思想始終伴隨着架構的設計和搭建,企業內部的DevOps文化建設更與銀行的數字化轉型相輔相成。須知,未來各領域業務的複雜度會進一步增長,業務規模也會迅速增大,只有將前沿技術與先進思想有機結合,才能在變幻莫測的挑戰和機遇中穩居不敗之地。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章