當前位置:
首頁 > 知識 > 東方金科基於開源的開發平台建設之路

東方金科基於開源的開發平台建設之路

李家智 ,就職於東方金科,現任架構師一職。作為行業享有盛名的大咖,李家智行事低調,對工作熱情飽滿,多次受邀作為嘉賓出席各類大會,並發表了精彩演講。2018年10月17日,李家智 受邀參加了由IT168主辦的《SACC 2018第十屆系統架構師大會》,並發表了精彩演講,以下內容根據 SACC大會實錄整理。

東方金科基於開源的開發平台建設之路

打開今日頭條,查看更多圖片

什麼是金融公司里的IT公司?

東方金科東方金科是東方邦信融通控股全資子公司,是中國東方資產管理公司旗下唯一一家科技公司,也是典型的金融公司的IT公司。

中國東方資產管理股份有限公司,成立於1999年,註冊資本為100億元人民幣,處置中行剝離出的政策性不良資產。2016年, 經國務院批准中國東方改製為股份有限公司。2017年,在主管監管部門的支持和指導下,中國東方順利完成引入戰略投資者工作,成功引入全國社會保障基金理事會、中國電信集團有限公司、國新資本有限公司、上海電氣集團股份有限公司等四家投資者。

截至2017年末,中國東方集團總資產超過9,800億元,在國內中心城市設有25家分公司和1家經營部,業務涵蓋不良資產、保險、銀行、證券、信託、普惠金融、信用評級,國際業務等。

金融公司里的IT公司通常有三種運營方式:

第一種是信科部門獨立運營,比如:建信金融,還有民生科技等。因IT部門具有特殊性,獨立運營有利於做得更專業,薪酬能夠更加市場化,有利於留住更多IT人才。

第二種是拆分運營,比如:興業數金、招銀雲創。將本行的IT系統、金融雲、運營和維護能力輸出給中小型金融機構。

第三種是新建子公司,成立互聯網金融綜合平台,像光大雲付一樣。與互聯網公司相比,這類公司更了解銀行,對銀行的要求理解得更為深刻,對監管的要求和規則執行得更到位。

基於開源的開發平台如何構建?

對於金融企業來說,大家都在強調要有自己的開發平台。為什麼這樣做?

東方金科架構師李家智的看法是:首先,是政策原因,技術必須要自主可控。其次,歷史原因。資產公司的IT信息化建設發展較晚,早期的系統都是交給第三方廠商完成。新的技術創新環境會推動科技企業自己做開發平台,和第三方廠商協作完成。

現在的東方金科仍然是以第三方合作廠商為主,東方金科輔助廠商去共同研發。希望未來能以東方金科研發的開發平台為主,和廠商協作,來交付金融系統。

開發平台早期是像「火鍋」,有底料,有牛、羊肉,有配菜,根據金融系統的不同需求,提供不同的產品。未來隨著金融系統的成熟發展,其開發平台也會發生變化,這種變化更像是各種品牌的汽車。有奧迪的不同款型,也有保時捷,它們雖然都是汽車,但是都來自於同一款大眾MLP平台。未來,金融系統的開發平台也要這樣做。

金融系統的開發平台應該自下向上構建,每一層都可以以項目的形式落地。第一層是開發規範和管理規範;第二層是技術框架和UI庫;第三層是業務參考模型;第四層是服務和組件;第五層是開發平台;第六層是可視化開發平台。

在技術框架的選擇上,東方金科是在公司內部業務基礎上定義的一套後台系統,有業務參考模型,包括用戶決策許可權什麼,有服務組件,有文檔預覽服務,還有處理服務組件,包括各種UI控制項、Java控制項,在這基礎上構建了自己的開發平台。金融企業應用的業務參考模型,流程相比於互聯網企業同樣的模型和流程,更有深度。

在團隊架構方面,包括幾大部分。

第一,是信息科技部,負責指導監督計劃執行,還有成果落地。因為開發平台並不是一蹴而就的,它的每一部分成果都可以在項目中使用,所以這部分由信息科技部去指導,由項目經理負責去落地。

第二,是三方諮詢團隊,是由東方資產聘請的第三方公司負責做技術諮詢和技術評審。

第三,是金科技術委員會,也做技術支持,技術評審,這是一個內部的委員會。當然東方資產也有個技術委員會,級別更高,有些內部解決不了的問題,就會往更高的技術部門去彙報。

第四,是項目群中項目經理,負責開發平台已有部分成果落地。

第五,是PMO監督計劃執行。

第六,是技術創新部,負責研發開發平台,同時也同其他團隊做一些協作,比如UI前端以及互聯網技術合作等。

在開源技術框架構建時,東方金科踩過很多坑。

第一個坑是,是否採用Spring Boot。雖然,現在看採用Spring Boot毋庸置疑。但是兩年前,爭議非常大。自有技術框架在公司群眾基礎好,呼聲高,Spring Boot 了解人少。但是最後的結論是,採用Spring Boot。自有技術呼聲敗給了時間的流逝,Spring Boot開始碾壓式的流行。

第二個坑,平台是否需要支持可視化開發?當時,公司上下都對這個功能曾非常有興趣。後來調研了商業軟體,覺得開發效率提升有限。業務邏輯過於複雜,可視化做不到。最後的結論是:不做可視化開發,做代碼生成。

第三個坑是,是否為業務人員提供完善的流程設計器?業務人員直接參与流程的定製和部署,這是一個美好願望。但是流程過於複雜,不支持直接部署,業務人員更傾向於提供需求,而不直接參与流程定製。所以,最後做了不需要完善的面向業務人員的流程設計器。

第四個坑是,工作流是否需具備固定的用戶模型?集團層級複雜,彙報路徑多樣。工作流應用到各個項目中的用戶模型不一致。最後的結論是,工作流不具有固定用戶模型,有業務端解釋用戶模型而不是工作流。

第五個坑是,UI組件庫是什麼樣式?視覺團隊提供了素色的一個版本,但是總裁喜歡活潑一點。互聯網研發團隊也有自己的風格偏好,比如,字體大,間距大。企業應用研發團隊認為頁面內容需要密集展現。大家一致認為應該以業務需求為導向,但是對於開發平台,業務人員根本沒空。最後,先有一個風格再說,技術上必須易於調整。

第六個坑是,前端框架用哪個?React,Vue,Angular 小規模用過 , Bootstrap+JQuery 前端人員非常熟悉。3個月的React使用失敗,現有React組件庫無法支撐金融後台UI系統需求。傳統企業應用公司,開發模式決定了前端人員一直儲備不足。最後只能回到傳統開發模式,使用Bootstrap+JQuery。

第七個坑是,用成熟的商業開發平台還是自研?商業和開源產品都調研過。商用產品價格不菲,從十萬到百萬、千萬。並且,商業產品落地成本較高,部分產品商用技術較為落後,不支持系統拆分。最終選擇了自研,好處是成本小,貼近業務需求。

第八個坑是,開發平台如何落地?金融系統規模較大,不會輕易更換技術。並且融系統數量有限,能使用機會不多,不同於互聯網系統,東方金科的選擇是「零敲牛皮糖」。

第九個坑是,阿里開發手冊還是唯品會開發規範?「孤盡」名氣大,「江南白衣」 也不是浪得虛名。唯品會開發規範和落地結合,與Clean Code和 Effective Java結合也很緊密。結論是,選用唯品會開發規範,並取得授權。

第十個坑是,怎麼解決技術偏好之爭?當時的分歧主要有三個:分歧一:項目骨幹之間技術之爭;分歧二:技術委員會之間技術之爭;分歧三:與諮詢公司的技術之爭。結論是,選擇正流行的開源技術,因為能自主掌控的技術就是可選技術。

第十一個坑是,企業是否需要統一的組織架構視圖?每個系統,無論大小,都有一個用戶和組織機構模型,每個系統都會重複建設,但是每個系統關注的組織機構模型「深度」不一樣。最終決定是,每個系統暫時擁有各自的組織機構模型,開發平台根據「深度」要求定製模型。

第十二個坑是,遺留系統問題。作為以業務驅動為主的公司,技術創新非常尷尬。研發人員不足,研發投入不足,研發成果落地困難,研發和項目群關係尚未理順。

為什麼會選擇Spring Boot 2 ?

之所以選擇Spring Boot 2,是因為它是現成的技術框架,凝聚著國內千萬軟體企業曾經的努力結果。另外,Spring Boot的開發特別簡單。雖然Spring Boot有著自己的問題,比如對配置的依賴,後期擴展很難。但是,它能簡化部署,還能進行部署監控等。最重要的是,Spring Boot改變了應用系統組織方式,能將系統拆分成小系統或者微服務。

舉一個例子,Spring Boot能讓單元測試更加簡單。現在單元測試面臨的現狀是,大部分程序員一直宣稱自己做了單元測試,但實際上這是一個假的單元測試。因為單元測試有個特點是,必須是可以重複測試,但實際上據我所知,很多單測試都無法重複的。

Spring Boot讓測試變成非常簡單,比如它可以通過註解,來模擬一個無法測試的內容,或者還未完成類。比如我們的積分系統管理,管理是一種設置,是一個沒辦法去做的單元測試。我們可以模擬一下,比如說模擬一個用戶輸入,模擬用戶輸出,這樣去測試。還可以模擬各種情況,比如模擬異常或者模擬調用次數。

企業應用很多測試會涉及到資料庫,大多數會選擇最初始化的一個資料庫腳本去做測試。但是這樣會有兩個問題。第一個問題就是條款本身不是特別直觀,尤其對於企業數據來說,它會產生大量的數據。如果用生物小本模擬,其實對於維護來說不是特別直觀。第二個問題,你在單元測試完畢需要去做比較驗證的時候,也需要寫大量的代碼去比較驗證。如果從資料庫取數據,還要看介面是不是一樣,所以說我們在開發平台也做了一定程度增強。用Excel來模擬一個測數據,比如包含註冊,我們也可以應用庫的一個其他的一個基礎的測數據。

我們調試了各個表數據表數據可以調用的方法,也可以定義變數,在測試完畢過後,可以將資料庫數據跟Excel數據進行比較。這樣單元測試代碼量就非常小,而且非常容易維護。無論是開發人員或者項目經理,或者需求人員,都能看明白你要測試什麼,結果是什麼,所以我們增強了數據模擬和測試驗證。

Activiti 流程引擎的重要性

Activiti是流程引擎,採用它,是因為它是基於BPMN2.0,成熟可靠。並且,它的設計是將運行流程和歷史流程分開,能支持數十萬流程的同時運行。還有,國內有很多Activiti擴展的文章和工具。

如果沒有接觸過工作流,想像中的工作流程應該是按照環節劃分,以單線形式進行設計。實際應用中,系統裡面能審批的流程非常少,這並不意味著企業沒有決策執行,只是能落地到流程的內容很少。普通的流程跳轉是正常流程,節點之間需要添加連線,任務撤回是不可能的,流程結束不可能恢復。但是國內應用很任性,流程節點可以任意跳,任意回退,不必要定義連線,只要新任務未處理,就可以撤回,結束的流程也能起死回生,並且可以回到任意節點。

有人可能會說,為什麼要回溯,能不能重新發一個流程?對於東方資產來說,重新發一個流程的成本非常大,環節特別多,會經過很多公司,甚至還涉及到很多總裁、經理、委員會的審批等。

Activiti流程引擎能大大降低了流程的複雜度。

那麼,開源開發平台到底要怎樣構建?最後總結一點,企業要基於開源技術自己干構建,並且整個開發平台要自下而上,逐層構建。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

李亞坤:Hadoop YARN在位元組跳動的實踐
盤點:基於雲的數據集成工具

TAG:IT168企業級 |