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

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:凡泰極客CEO 樑啓鴻"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"去年11月份CNBC的一則新聞,報道了華爾街巨頭高盛要把自己投入了14年研發的一個技術平臺Alloy以及專門爲這個平臺所設計的語言,免費、開源共享給華爾街的其他機構。去年更早的時候,高盛也聲稱把自己的一些交易與風控相關代碼貢獻到GitHub(競爭對手摩根大通則已經把一個與區塊鏈相關的技術quorum開源到GitHub)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/1c/1c4d189ad0e2a0e6fc8828c062930c57.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"高盛在開源技術這件事情上,貌似是認真的。除了加入開源界出名的開源組織Eclipse基金會,2015年高盛即參與到容器技術企業化的進程中(那還是docker這類技術剛剛開始爲人知的時候),2017年起陸續把一些技術開源到GitHub上,他們甚至把自己的一個Java技術框架採用了Apache 2.0的寬鬆軟件許可(一個對開源社區非常友好的許可證)貢獻出來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/13/130a2b531f65b6a86aff2ae0e05a32a8.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不誇張的說,開源軟件改變世界– 不管在一個App裏面還是在一套交易系統中,都“借力”着不計其數的開源代碼庫、開源工具。現在誰敢說自己的軟件是一行一行代碼從零開始構建?正如高盛的技術負責人Don Duet所說,從技術角度看“開源滲透到我們所做的一切事情中”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/50/5082741d560af689b85e083623aa666b.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"基礎軟件開源的必要性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼搞金融科技需要借力開源、參與開源?本人以過去的幾段從業經歷在此貢獻五毛錢意見。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"在Morgan Stanley。"},{"type":"text","text":"那是IT只有不到千人、還坐落在7大道750號、工程師們還在使用Sun和HP工作站的年頭。Morgan Stanley有自己的基礎設施團隊去研發跨操作系統(Solaris、AIX、HPUX、Windows)的UI開發框架Morgan Stanley Toolkit(簡稱MSToolkit)、第一代Web應用服務器Netscape的插件、還有其他很多看上去和證券業務沒有什麼直接關係的但是支撐着上層業務的很酷的技術,設計水平在那個時代比起專業軟件公司不逞多讓。事實上那個時代大型的金融機構研發自己的交易中間件、圖計算引擎甚至專門性的計算機語言,並非罕見。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以說,在利潤的驅動下,能夠幫助賺到錢的技術有可能被投資作核心競爭力。比起稍後的那些互聯網新貴技術公司,華爾街的IT一點都不落後。可是,尷尬的地方在於,這些封閉的、僅內部使用的技術,很容易失去生命力:資助某個技術的一些業務項目如果被砍掉,這個技術很可能也完蛋;市場不好,這類技術遭裁切也是首當其衝。受衆太少、應用場景太窄,讓這些技術很快喪失先發優勢。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"在雅虎研究院。"},{"type":"text","text":"和很多巨型互聯網企業一樣,雅虎裏面什麼技術都自成體系,對象存儲、消息中間件、內部的wiki、JavaScript的開發框架、移動端開發工具、Web服務器、甚至類似Linux裏的包管理與分發工具… 這些技術可能在早期是很先進的因爲互聯網上找不到等價物,可是隨着網上開源運動的發展,這些封閉的技術越來越變得非主流,新加入的人往往抓狂。長期呆在封閉技術環境裏的人,也很容易被工具洗腦,不知道外面的世界,離開了這個環境出去找工作,面試一問三不知。而這些技術最終也被內部的人摒棄、走向消亡,大家更願意融入到開源世界中。雅虎身後還存在的技術是Hadoop,這個影響了整個大數據領域發展的技術,證明開源軟件的生命力強、活過它的發明者。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"在國內證券公司。"},{"type":"text","text":"個人一向認爲軟件的邏輯架構一定要清晰的體現出分層,對實現成“一大坨”深惡痛絕。舉兩個例子:第一個是在研發經紀業務所需用到的社交化客戶關係管理與服務平臺時,涉及到即時通訊工具、規則引擎這樣的基礎設施,因爲一開始的時候場景非常簡單,那麼我們是“舉手之勞”的重新發明車輪直接把它們做到系統裏面當作業務功能的一部分?還是明確的把它們當作通用模塊解耦出來?如果當作獨立模塊,是自研?還是採用第三方的方案?當時的實際情況就是,沒有合適的第三方技術(那是微信還出來沒多久的、移動端IM尚算新生事物的年代),自己研發,很可能挖了一個大坑,未來難以養專門團隊維護;直接當做滿足短期業務需求的應用功能來做,則導致延展性前瞻性靈活性非常差、技術上無任何優雅性可言。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另一個更容易理解的例子是交易系統,要把交易系統的基礎做紮實,顯然我們必須有經過交易場景反覆論證抽象、高度通用、考慮周全的消息中間件,互聯網上的開源消息中間件往往不是爲證券業務設計的,不是不能用就是用起來極其彆扭。自主研發?你得有足夠強的團隊、有長期維護優化的決心、有業務部門的“贊助”、有公司在IT戰略上的支持。否則肯定幹不下去。所謂“自研”的交易系統,不少會因爲“土法煉鋼”的基礎技術層不過關不專業而失敗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不僅是業務應用導向的金融機構,包括科技公司在內,在研發自己的科技產品的過程中,都不可避免需要涉及到各種基礎技術框架、技術庫、底層工具,這些東西往往是“雞肋”,自研的話,有點“不務正業”,而且你的團隊往往在這些方面非常不專業,長期來看也維護不了。高盛走的開源道路,其實是節省成本、借力打力。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"金融機構IT研發的痛點"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"券商和銀行們的IT研發,“正業”肯定是支持業務創新、做能產生差異化競爭的應用軟件。在這個過程中,應該“有所爲、有所不爲”:基礎設施和通用技術框架,儘量借力第三方,業務相關的邏輯,儘量自己開發。可是現實世界沒有這麼理想。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"採用第三方的封閉技術,你可能得糾結這幾個問題:傳統大廠的技術非常封閉,他們沒有開放接口(那是生財工具– 要一個收一個的錢),他們的古老技術架構也無法承載插件化的訂製,他們不響應你的個性化訴求,用起來很不爽;小公司的技術你不放心,怕他們改變產品方向甚至終止產品線,或者可能被收購合併甚至關門大吉。總之,基於閉源的技術你害怕被“綁架”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自研,你也可能糾結這幾個問題:一些與業務非直接相關的底層技術,自己的團隊不是缺乏專業性去駕馭就是無法專心專注去做好,一旦展開,等於給自己挖坑,還得經常面對成本預算方面的質疑;採用開源技術,又往往沒有符合行業特性、針對金融場景直接可用的選擇,學習掌握進行改造的成本高(一旦自行改造,很可能又掉進長期維護的坑)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除非你是高盛,在一些業務場景需要用到一些基礎技術而市場上卻沒有選擇的情況下,自行研發,然後共享到開源社區讓同業甚至業外技術人員共同維護與利用,避免了“胎死腹中”的命運。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"採購閉源軟件時買源代碼並沒有什麼大用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很多機構採購系統喜歡要源代碼– 針對大廠就跟他們買、針對小公司就跟他們拿。但個人認爲這並無什麼意義。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,“買斷源代碼”這種做法真的非常、非常過時。源代碼不是固化的、“買斷”之後就不變的,因爲廠商可能在未來不斷升級、不斷修復缺陷、不斷優化,你買一個“快照”一樣的東西,基於它東改西改,很快和原廠的版本分離,廠商無法替你維護,你也享受不到他們在服務行業過程中的優化重構、升級換代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其次,“買代碼”這種事情,相當部分花的是冤枉錢,其實自己並沒有資源或者能力去維護,也就是買個“保險”吧。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就算真的要源代碼,也不是“買斷”,而是買服務 – 例如獲得廠商部分公共代碼庫的訪問權,在服務合同時間範圍內隨時可以抽取最新的代碼並可以通過廠商提供的工具、指引能自己進行構建,並且萬一自己修改後還可以提交回開發商的代碼庫供其合併,一句話,就是用源代碼版本管理工具及最佳實踐管理好行業級、跨機構的互助。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,一些開發商也沒有這種源代碼交付與管理的能力。你要“買斷”?打一個壓縮包,作爲電郵附件給你發過去,或者找個網盤臨時共享一下,或者用QQ發送一下… 之後這份代碼就和主庫徹底告別,再也無法同步。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"改變軟件的研發、銷售與交付方式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"越來越多的軟件公司,商業模式架設在開源生態之上。以向金融機構提供基礎性軟件技術的企業,是適合這麼做的。怎樣算“基礎性軟件技術”?就是具有行業通用性和針對性、滿足金融業務應用需求共性、從衆多金融機構的商業場景中總結抽象出來的基礎技術層,它往往首先面向金融機構的IT研發人員,供其進行訂製和二次開發以支撐更上層的業務應用。以我們公司的即時通訊技術爲例,它可私有化部署、配備合規存儲與舉證引擎、客戶端SDK化可隨意嵌入到任何銀行和券商App中、提供數以百計的接口與事件供金融業務應用的融合,它本身還是一個開發平臺。這就是針對行業需求量身定做的基礎技術。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基礎技術適合開源,是一種新的軟件生產協作模式,它有以下的商業競爭優勢:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通過開源社區,吸引和利用優秀人才。最具前景、最有用的開源項目往往能吸引到最頂級工程師。這其實是一種“槓桿”的利用,也能促進開源產品在社區的快速迭代"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有助於獲客。如上文所述,很多金融機構採購系統的時候也想獲得源代碼,這背後的邏輯是擔心廠商封閉,讓自己不能訂製;以及對被某個技術“綁架”的防範 – 萬一它忽然終止存在又無法被輕易替換,而分分鐘和錢掛鉤的業務系統卻構建在它的基礎之上,這個風險太大。處於敏感位置的基礎技術,如即時通訊工具,其源代碼開放可審計,也讓一些機構對信息安全、數據隱私保護方面放心。開源在現在已經成爲一種信心保障"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有助於建立商業生態。通過知識產權的開放,讓客戶以較低門檻採納,逐漸形成市場規模,並形成社區、建立上下游的合作伙伴,有機會成爲de facto standard(事實上的標準)。Kafka就是一個好例子,不知不覺中很多金融機構就已經採用了它,技術人員甚至以它的技術概念作爲詞彙表描述問題與方案"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"構建在開源之上的軟件公司,研發是社區化的協作,不僅有自己的研發人員主導,也有客戶開發人員的參與(例如提報缺陷甚至直接修復和提交代碼合併),甚至有認同這個技術的互聯網技術粉絲的主動加盟。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"銷售方式也發生改變,機構更多是從網上獲得關於產品的信息、口碑、案例,隨時通過社區或者其他社交頻道與軟件公司發起交流。銷售人員可以在線陪伴運行demo、雙向互動。而軟件的體驗門檻非常低,例如我們就採用雙license制,社區版免費並採用非商業化許可證,而企業版則採用Copyleft(“著佐權”,見下一篇文章的介紹)許可證或者商業軟件許可證。社區版能夠讓金融機構以最低門檻實現POC的原型驗證甚至直接使用於商業用途。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"交付方面,源代碼我們通過開發者社區交付,部分代碼對互聯網開放,任何人直接從GitHub可以獲得;部分對機構客戶開放,通過開發者社區可以訪問源代碼庫,拖取被授權獲得的分支。而軟件系統的成品,全部都是基於雲原生的技術架構、100%容器化,用戶通過鏡像倉庫拉取鏡像進行自動化部署。這好像是一家汽車製造商的零件倉庫,組裝工人(IT)一按按鈕(跑一個腳本),即把相關的車門、車胎、座椅、方向盤、發動機、外殼等等下載並自動組裝。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源的商業模式有多種,包括open-core 和hybrid等等,我們將在下期"},{"type":"text","marks":[{"type":"strong"}],"text":"《開源商業模式促進金融業科技生態的發展》"},{"type":"text","text":"中分享,探討一下開源技術如何能在金融行業落地和促進金融科技發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於金融科技領域的開源,您有什麼想法?歡迎在評論區與本人交流"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章