從高盛的技術“開源”看金融業軟體發展未來

chendduzi發表於2021-12-22
從高盛的技術“開源”看金融業軟體發展未來

本文是凡泰極客(FinoGeeks)聯合創始人、前廣發證券 IT 董事總經理兼首席架構師、前雅虎北京研究院首席架構師樑啟鴻,在 2020 年所著的一篇關於金融行業與技術開源的思考彙總,與各位進行分享。


編者記:近日,隨著央行等五部門釋出的一篇《關於規範金融業開源技術應用與發展的意見》,就規範金融機構合理應用開源技術,提高應用水平和自主可控能力,促進開源技術健康可持續發展進行工作佈局。

《意見》中,也 鼓勵金融機構將開源技術應用納入自身資訊化發展規劃,加強對開源技術應用的組織管理和統籌協調,建立健全開源技術應用管理制度體系,制定合理的開源技術應用策略;鼓勵金融機構提升自身對開源技術的評估能力、合規審查能力、應急處置能力、供應鏈管理能力等;鼓勵金融機構積極參與開源生態建設,加強與產學研交流合作力度,加入開源社會組織等。


2019 年 11 月份 CNBC 的一則新聞,報導了華爾街巨頭高盛要把自己投入了14年研發的一個技術平臺Alloy以及專門為這個平臺所設計的語言,免費、開源共享給華爾街的其他機構。去年更早的時候,高盛也聲稱把自己的一些交易與風控相關程式碼貢獻到 GitHub(競爭對手摩根大通則已經把一個與區塊鏈相關的技術 quorum 開源到GitHub)。

高盛在開源技術這件事情上,貌似是認真的。除了加入開源界出名的開源組織 Eclipse 基金會,2015 年高盛即參與到容器技術企業化的程式中(那還是 docker 這類技術剛剛開始為人知的時候),2017 年起陸續把一些技術開源到 GitHub 上,他們甚至把自己的一個 Java 技術框架採用了 Apache 2.0 的寬鬆軟體許可(一個對開源社群非常友好的許可證)貢獻出來。

不誇張的說, 開源軟體改變世界 – 不管在一個 App 裡面還是在一套交易系統中,都“借力”著不計其數的開原始碼庫、開源工具。

現在誰敢說自己的軟體是一行一行程式碼從零開始構建?正如高盛的技術負責人 Don Duet 所說,從技術角度看“開源滲透到我們所做的一切事情中”。

基礎軟體開源的必要性

為什麼搞金融科技需要借力開源、參與開源?本人以過去的幾段從業經歷在此貢獻一些意見。

在 Morgan Stanley

那是 IT 只有不到千人、還坐落在 7 大道 750 號、工程師們還在使用 Sun 和 HP 工作站的年頭。

Morgan Stanley 有自己的基礎設施團隊去研發跨作業系統(Solaris、AIX、HPUX、Windows)的 UI 開發框架 Morgan Stanley Toolkit(簡稱MSToolkit)、第一代 Web 應用伺服器 Netscape 的外掛、還有其他很多看上去和證券業務沒有什麼直接關係的但是支撐著上層業務的很酷的技術,設計水平在那個時代比起專業軟體公司不逞多讓。事實上那個時代大型的金融機構研發自己的交易中介軟體、圖計算引擎甚至專門性的計算機語言,並非罕見。

可以說,在利潤的驅動下,能夠幫助賺到錢的技術有可能被投資作核心競爭力。比起稍後的那些網際網路新貴技術公司,華爾街的 IT 一點都不落後。 可是,尷尬的地方在於,這些封閉的、僅內部使用的技術,很容易失去生命力:資助某個技術的一些業務專案如果被砍掉,這個技術很可能也完蛋;市場不好,這類技術遭裁切也是首當其衝。

受眾太少、應用場景太窄,讓這些技術很快喪失先發優勢。

在雅虎研究院

和很多巨型網際網路企業一樣,雅虎裡面什麼技術都自成體系,物件儲存、訊息中介軟體、內部的 wiki、JavaScript 的開發框架、移動端開發工具、Web 伺服器、甚至類似 Linux 裡的包管理與分發工具…

這些技術可能在早期是很先進的,因為網際網路上找不到等價物。可是隨著網上開源運動的發展,這些封閉的技術越來越變得非主流,新加入的人往往抓狂。

長期呆在封閉技術環境裡的人,也很容易被工具洗腦,不知道外面的世界,離開了這個環境出去找工作,面試一問三不知。而這些技術最終也被內部的人摒棄、走向消亡,大家更願意融入到開源世界中。

雅虎身後還存在的技術是 Hadoop,這個影響了整個大資料領域發展的技術,證明開源軟體的生命力強、活過它的發明者。

在國內證券公司

個人一向認為軟體的邏輯架構一定要清晰的體現出分層,對實現成“一大坨”深惡痛絕。

舉兩個例子:第一個是在研發經紀業務所需用到的社交化客戶關係管理與服務平臺時,涉及到即時通訊工具、規則引擎這樣的基礎設施,因為一開始的時候場景非常簡單,那麼我們是“舉手之勞”的重新發明車輪直接把它們做到系統裡面當作業務功能的一部分?還是明確的把它們當作通用模組解耦出來?

如果當作獨立模組,是自研?還是採用第三方的方案?

當時的實際情況就是,沒有合適的第三方技術(那是微信還出來沒多久的、移動端 IM 尚算新生事物的年代),自己研發,很可能挖了一個大坑,未來難以養專門團隊維護;直接當做滿足短期業務需求的應用功能來做,則導致延展性前瞻性靈活性非常差、技術上無任何優雅性可言。

另一個更容易理解的例子是交易系統,要把交易系統的基礎做紮實,顯然我們必須有經過交易場景反覆論證抽象、高度通用、考慮周全的訊息中介軟體,網際網路上的開源訊息中介軟體往往不是為證券業務設計的,不是不能用就是用起來極其彆扭。

自主研發?你得有足夠強的團隊、有長期維護優化的決心、有業務部門的“贊助”、有公司在 IT 戰略上的支援。否則肯定幹不下去。所謂“自研”的交易系統,不少會因為“土法煉鋼”的基礎技術層不過關不專業而失敗。

不僅是業務應用導向的金融機構,包括科技公司在內,在研發自己的科技產品的過程中,都不可避免需要涉及到各種基礎技術框架、技術庫、底層工具,這些東西往往是“雞肋”,自研的話,有點“不務正業”,而且你的團隊往往在這些方面非常不專業,長期來看也維護不了。

高盛走的開源道路,其實是節省成本、借力打力。

金融機構IT研發的痛點

券商和銀行們的 IT 研發,“正業”肯定是支援業務創新、做能產生差異化競爭的應用軟體。在這個過程中,應該“有所為、有所不為”:基礎設施和通用技術框架,儘量借力第三方,業務相關的邏輯,儘量自己開發。

可是現實世界沒有這麼理想。

採用第三方的封閉技術,你可能得糾結這幾個問題:

  • 傳統大廠的技術非常封閉,他們沒有開放介面(那是生財工具– 要一個收一個的錢);
  • 他們的古老技術架構也無法承載外掛化的訂製;
  • 他們不響應你的個性化訴求,用起來很不爽;
  • 小公司的技術你不放心,怕他們改變產品方向甚至終止產品線,或者可能被收購合併甚至關門大吉。總之,基於閉源的技術你害怕被“綁架”。

自研,你也可能糾結這幾個問題:

  • 一些與業務非直接相關的底層技術,自己的團隊不是缺乏專業性去駕馭就是無法專心專注去做好;
  • 一旦展開,等於給自己挖坑,還得經常面對成本預算方面的質疑;
  • 採用開源技術,又往往沒有符合行業特性、針對金融場景直接可用的選擇;
  • 學習掌握進行改造的成本高(一旦自行改造,很可能又掉進長期維護的坑)。

除非你是高盛,在一些業務場景需要用到一些基礎技術而市場上卻沒有選擇的情況下,自行研發,然後共享到開源社群讓同業甚至業外技術人員共同維護與利用,避免了“胎死腹中”的命運。

採購閉源軟體時買原始碼並沒有什麼大用

很多機構採購系統喜歡要原始碼 – 針對大廠就跟他們買、針對小公司就跟他們拿。但個人認為這並無什麼意義。

首先,“買斷原始碼”這種做法真的非常、非常過時。

原始碼不是固化的、“買斷”之後就不變的,因為廠商可能在未來不斷升級、不斷修復缺陷、不斷優化,你買一個“快照”一樣的東西,基於它東改西改,很快和原廠的版本分離,廠商無法替你維護,你也享受不到他們在服務行業過程中的優化重構、升級換代。

其次,“買程式碼”這種事情,相當部分花的是冤枉錢,其實自己並沒有資源或者能力去維護,也就是買個“保險”吧。

就算真的要原始碼,也不是“買斷”,而是買服務 – 例如獲得廠商部分公共程式碼庫的訪問權,在服務合同時間範圍內隨時可以抽取最新的程式碼並可以通過廠商提供的工具、指引能自己進行構建,並且萬一自己修改後還可以提交回開發商的程式碼庫供其合併,一句話,就是用原始碼版本管理工具及最佳實踐管理好行業級、跨機構的互助。

當然,一些開發商也沒有這種原始碼交付與管理的能力。

你要“買斷”?打一個壓縮包,作為電郵附件給你發過去,或者找個網盤臨時共享一下,或者用 QQ 傳送一下…

之後這份程式碼就和主庫徹底告別,再也無法同步。

改變軟體的研發、銷售與交付方式

越來越多的軟體公司,商業模式架設在開源生態之上。如果以向金融機構提供基礎性軟體技術的企業,是適合這麼做的。

怎樣算“基礎性軟體技術”?就是具有行業通用性和針對性、滿足金融業務應用需求共性、從眾多金融機構的商業場景中總結抽象出來的基礎技術層,它往往首先面向金融機構的 IT 研發人員,供其進行訂製和二次開發以支撐更上層的業務應用。

以我們公司當前的小程式技術為例,它可私有化部署、配備安全沙箱、客戶端 SDK 化可隨意嵌入到任何銀行和券商的 App 中,它本身還是一個開發平臺。 這就是針對行業需求量身定做的基礎技術。

基礎技術適合開源,是一種新的軟體生產協作模式,它有以下的商業競爭優勢:

  • 通過開源社群,吸引和利用優秀人才。最具前景、最有用的開源專案往往能吸引到最頂級工程師。這其實是一種“槓桿”的利用,也能促進開源產品在社群的快速迭代
  • 有助於獲客。如上文所述,很多金融機構採購系統的時候也想獲得原始碼,這背後的邏輯是擔心廠商封閉,讓自己不能訂製;以及對被某個技術“綁架”的防範 – 萬一它忽然終止存在又無法被輕易替換,而分分鐘和錢掛鉤的業務系統卻構建在它的基礎之上,這個風險太大。處於敏感位置的基礎技術,如即時通訊工具,其原始碼開放可審計,也讓一些機構對資訊保安、資料隱私保護方面放心。開源在現在已經成為一種信心保障
  • 有助於建立商業生態。通過智慧財產權的開放,讓客戶以較低門檻採納,逐漸形成市場規模,並形成社群、建立上下游的合作伙伴,有機會成為 de facto standard (事實上的標準)。Kafka 就是一個好例子,不知不覺中很多金融機構就已經採用了它,技術人員甚至以它的技術概念作為詞彙表描述問題與方案

構建在開源之上的軟體公司,研發是社群化的協作,不僅有自己的研發人員主導,也有客戶開發人員的參與(例如提報缺陷甚至直接修復和提交程式碼合併),甚至有認同這個技術的網際網路技術粉絲的主動加盟。

銷售方式也發生改變,機構更多是從網上獲得關於產品的資訊、口碑、案例,隨時通過社群或者其他社交頻道與軟體公司發起交流。銷售人員可以線上陪伴執行 demo、雙向互動。

而軟體的體驗門檻非常低,例如我們就採用雙 license 制,社群版免費並採用非商業化許可證,而企業版則採用 Copyleft(“著佐權”,見下一篇文章的介紹)許可證或者商業軟體許可證。社群版能夠讓金融機構以最低門檻實現 POC 的原型驗證甚至直接使用於商業用途。

交付方面,原始碼我們通過開發者社群交付,部分程式碼對網際網路開放,任何人直接從 GitHub 可以獲得;部分對機構客戶開放,通過開發者社群可以訪問原始碼庫,拖取被授權獲得的分支。

而軟體系統的成品,全部都是基於雲原生的技術架構、100% 容器化,使用者通過映象倉庫拉取映象進行自動化部署。這好像是一家汽車製造商的零件倉庫,組裝工人(IT)一按按鈕(跑一個指令碼),即把相關的車門、車胎、座椅、方向盤、發動機、外殼等等下載並自動組裝。

開源的商業模式有多種,包括 open-core 和 hybrid 等等,我們將在下期 《開源商業模式促進金融業科技生態的發展》中分享,探討一下開源技術如何能在金融行業落地和促進金融科技發展。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011629/viewspace-2848898/,如需轉載,請註明出處,否則將追究法律責任。

相關文章