當前位置:
首頁 > 科技 > 螞蟻金服研發的金融級分散式中間件SOFA背後的故事

螞蟻金服研發的金融級分散式中間件SOFA背後的故事

魏佳:歡迎兩位,我是高可用架構的編輯魏佳,這位是王淵命。今天很有幸邀請到兩位在演講之後接受我們的採訪。兩位可以先做一個簡單的自我介紹。

楊冰:我是螞蟻金服中間件的負責人楊冰。09年加入螞蟻金服,早期時候是在架構組,後來加入中間件團隊。從微服務與框架這樣的一個方向開始,後來逐步參與了螞蟻金融雲對外的建設以及平台的開發,現在接管了整個中間件團隊,仍然繼續在這個方向上前進。

黃挺:我是從09年到阿里巴巴實習,之前是在阿里巴巴B2B團隊,2010年正式加入阿里。我在阿里巴巴B2B團隊待了3年,主要是做B2B業務。因為對技術這一塊比較感興趣,自己在業務團隊也做了一些技術相關的工作,後來轉崗到了楊總所在的團隊。現在正在做SOFA開源的方面的事情,現在這方面也做了5年了,同時也是微服務方向的leader。

魏佳:這幾年一直在做SOFA這一塊的東西嗎?

黃挺:是的,主要是SOFA體系內微服務相關的技術。

魏佳:我對楊冰的問題主要是分兩塊,一塊是更多集中在您個人在阿里或者是螞蟻金服體系下的成長,另外是您這些年工作集中的一個內容,它本身也是一個迭代成長的過程,更多是這兩方面。您可以先從整體上快速和大家分享一下您自從2009年加入之後,做過的項目的情況。

楊冰:最早的時候,我們是第一批「近衛軍」。畢業之後就進架構組的,當時架構組老大很多,我們進去就是幫幫忙,打打雜這樣的狀態。在這個過程中,接觸了很多牛人。

最早的時候,從SOFA開始做,那個時候胡喜(現螞蟻金服副CTO)已經把SOFA創建出來,和我們一起做。我個人是經歷了SOFA1到SOFA2開發過程,其實SOFA1整體完成落地,SOFA2引入了整個服務的架構。那個時候主要還是以參與和協助為主,到了SOFA3,這個時候我們引入了新的東西。具體來說,我們把Tomcat JBoss那層替換掉,變成自研的Application Server(我們內部叫CloudEngine)。我們自研的應用伺服器其實解決了我們內部系統做類隔離、模塊隔離以及合併部署的問題。這個項目是我跟我一個同事,兩個人主導推下來的。我個人參與了整個過程,所以印象很深刻。

後面開始做微服務這一部分。服務治理、鏈路相關的技術體系,也是由我這邊主導的。大概在2015年的那個時候,我們開始做金融雲,我也作為創始人之一。那個時候也就是四五個人作為創始團隊,進去做最核心的PaaS平台的研發,包括一些產品化的系統,多租戶體系的研發。在一年多的時間裡,我自己變化非常大。因為以前作為一個新人在支付寶,以內部視角看待的很多東西都,有很大的慣性。然而走出去之後,我會發現很多應用場景,客戶的要求,業務的場景,需要做的更好。

現在我們要和全世界去比,我們需要知道業界最新動向,最牛的人才在哪裡,大家往哪一個方向去靠。會碰到更多這樣的問題,用更多元的視角去看待。然後也逐步在這個過程當中形成了自己的技術觀和對軟體技術發展趨勢的一些判斷和理解。

後來在金融雲走上正軌之後,我接手了中間件團隊,這個時候整個視野會更開闊一些。我在落地比較關鍵的項目,比如說我們在數據上有很多的遺留問題,現在正在這邊逐步解決。我們在今年在布局Mesh,還有後麵糰隊蔣濤會分享的數據的一些演進方向上,都在做一些主要的設計,也都是比較關鍵的方向。我個人比較關注Mesh這個方向,因為我個人認為這是把基礎設施沉澱到我們整個技術平台當中非常關鍵的一環。

魏佳:剛剛結合您說的您加入之後做的項目的過程,從側面也是反映了支付寶或者說現在叫螞蟻金服這些年演進的過程,這個過程當中除了項目本身有其他印象比較深刻的事情嗎?

楊冰:印象比較深刻的事情很多,我挑兩個印象比較深的來說。

第一,剛剛提到的我主導的合併部署的項目。

魏佳:就是你們替換到Tomcat,然後用自研的容器是嗎?

楊冰:是的。這個過程中我有個心得。原先我們覺得OpenSource就是最好的,OpenSource就是全部,而且可能會有慣性。然而在替換過程中,我們發現我們的場景足以build up出來比OpenSource複雜度更高,能力更強的體系。我自己也參與在這個過程當中收穫了很多。這件事情也是從一個側面反映了螞蟻金服演進的歷程。我們從IOE的架構,經過採用一部分的開源軟體,再到逐步開始全套自研。在自研過程當中,擁抱部分OpenSource,並且去做深度的創造,做一些自己的創新。整個過程其實是一條非常艱難的路,幸運的是,有這樣一個場景來培育我們。這是第一個給我帶來我觀念上以及視野上的變化的事情。

第二,我對外接觸的這個階段。之前只是用OpenSource,到現在我們去做OpenSource,我形成了自己的技術觀。我認為整個基礎設施是應該走OpenSource化的,因為從C開始到Linux,到 Kubernetes,其實這個已經被一次又一次地證明。因為越底下的基礎代碼,包括SOFA中間件這樣的東西,看起來邏輯沒有業務系統那麼複雜。然而其實它考慮的一些細節,設計的優雅性、架構的健壯性其實是非常強的。而且它一旦要去支撐那麼多業務系統,整個工程的複雜度也是非常高的。很難用一家公司的程序員去搞定整個技術棧。包括SOFA其實也是一樣的,我們越來越發現這方面的一些趨勢。我們靠一己之力去做是很難的,再加上我們既要對內又要對外。現在明白了這樣一個趨勢,因此我覺得應該回饋社區,和社區共建才是比較好的一條路。在這個層面上,OpenSource最大的挑戰,還是受制於商業世界對OpenSource的看法。因為大家覺得OpenSource會破壞商業的遊戲規則。但是其實以Linux為代表的瘋狂發展,以及伴隨著而來的商業化生態的繁榮,是一次又一次向世界證明,OpenSource和商業化的結合是可以非常完美的。所以這兩件事情對我的轉變非常大,視野的轉變,思考邏輯的轉變非常大。

第一個階段,突破我們只能選擇OpenSource的禁錮,去選擇自研。我們自研以後,這個東西成熟了,經過論證了又推廣到開源社區。

現在說回來,我們一開始走自研,而且我們自研的東西可以做到世界領先。後來我們又認為,再往大了去看的話,還是要開源,走出去。遇到螞蟻金服這樣體量的公司,或者說像我們這樣的團隊,其實是非常寶貴的一個機會。一個團隊會在一個方向上,比如說資料庫可能有幾百人,中間件可能有百人,這是一個非常難得的機會,能夠把一些非常聰明的人才聚集在一起。我們應該在標準化上,在軟體技術棧的標準化上,為社區做一些事情,為更大的領域去貢獻我們的力量,所以最後又走出去。

王淵命:前面提到SOFA,正好你前面也簡單說了一下SOFA的歷史。我正好有一個關於SOFA的問題,SOFA在業界,很早大家就知道有這麼一個東西,但是大家不知道它到底長什麼樣,並且它裡面的組件很多很多,SOFA到底可以承載哪些職能,大家沒有一個比較清楚的概念。並且最近我也看到你們是開源了一部分。能不能比較詳細的介紹一下,SOFA從上面的業務層到下面基礎設施,中間的這一層上,邊界在哪裡?讓大家有一個概念。它已經迭代了很多版本了,您剛剛也簡單說了一下它的情況。我想了解一下它的每次大的迭代之間,都有一些什麼樣的契機,我要做這個事情,把它要迭代一個新的版本?

楊冰:SOFA的邊界在我們內部是一次一次擴大的。最早的時候SOFA是Service Oriented Fabric Architecture,它就是一個Famework,就是像Spring這樣一個架構,集成了RPC、研發框架、腳手架類似這樣的一些東西。那個階段,它是解決研發效率的一個Famework而已。再往前發展,我們發現其實很多的理念是一樣的,所以我們把SOFA的邊界擴大到整個中間件的範疇。我們覺得它應該解決的不是一個Famework,因為它作為一個母體,它作為Famework也是自帶生態屬性的軟體。它應該在應用和底層基礎設施之間,很多邏輯都在這一層,所以我們認為SOFA應該是整個中間件。

再往後繼續擴大,我們發現中間件自己搞定單元化架構是不夠的,所以我們把邊界擴大到DevOps平台,監控這一塊,再加上我們內部有CICD持續交付平台,這些也都納入到SOFA的邊界裡面,我們內部稱之為大SOFA體系。我們認為這個是可以去承載整個分散式架構的比較完整的版本,就是Runtime+DEV+OPS這三個部分的組合,稱之為一個大SOFA的概念。

但是我們這一次開放出來的部分,還是聚焦在中間件這一層。因此上午演講放出來的大圖,我們看到的還是是那個方向上的一些組件。包括微服務、鏈路、消息、數據、分散式事務。OpenSource主要還是在這個方向上為主。

黃挺:我來回答一下第二個問題。SOFA經歷過多次版本迭代。SOFA的版本迭代和公司的架構發展是密切相關的。比如說我們從SOFA剛剛開始的時候,會做模塊化的事情。到了SOFA2開始引入整個微服務的體系。到SOFA3我們希望能夠在微服務體系下,能夠把一些服務聚合在一起,組成一個鏈路出來,這就是我們之前說的合併部署。隨著每年的交易量的不斷上升,讓我們必須從單體架構轉到服務化架構,再往前演進到單元化架構,再往前演進到彈性架構。SOFA大部分的功能升級都是伴隨著整個公司的技術架構目標上更大的一些挑戰進行的。

楊冰:我補充兩個階段,第四個階段,其實我們是SOFA4,SOFA4核心的事情是為開源做準備,以及為多租戶做準備,因為我們在那兩年做的SOFA4,其實在核心功能上沒有太大變化,但是我們孵化出來幾個事情。

第一個是輕量化的版本,因為以前一個Tomcat加一個Famework這樣一個模式是比較傳統的,整個業界發展方向是這樣的。所謂的雲原生,在它交付的時候也更加完整、一體化。這個理念我們是比較認的,所以我們在SOFA的基礎上再重構代碼,集成了 Spring Boot,以這樣的一種方式去做整體化交付。而這個東西的理念和Ruby是比較像的,是非常適合快速一體化的交付,所以SOFA也演進到這個方向。並且因為我們在做對外的事情,我們在 SOFA4 ??把多租戶的隔離能?也做出來。當來?個用戶的時候,不是說直接給?戶部署?套新的中間件。在多租戶的模式下,只要部署?套就夠了。新來?個?戶,在上面再隔離出?個租戶就行。這樣的話,在成本,運維各??都有?常?的提升。

現在Mesh部分,如果說真要歸個類,我們內部並沒有特別想過怎麼定義它,但是我覺得如果真要歸個類,可以認為是我們往第五代邁進。因為Mesh是一個非常大的方向。所以我們是把SOFA冠在了 Mesh 的前面,而不是說 Mesh 僅僅是服務的部分,它其實應該是整個中間件比較大的方向,基礎設施往下承載的方向。

王淵命:那順便聊聊 Mesh 這一塊的內容,其實我很早關注過這一塊的東西。這一塊其實本質上帶來變化是團隊的協作方式不一樣了,以前是開發出來一個開發框架,開發團隊要用我這個框架,框架升級的時候要追著開發團隊說,你要把我的版本給升了。中間件這一層,沒有獨立的升級,也限制了迭代的演進的速度。但是 Mesh 把這一目標達到了。在你們實踐過程當中,你們現在已經感受到這種好處了嗎?你們團隊協作上的變化有沒有比較真實的案例或者是故事與大家分享。

黃挺:我們剛剛聊到 Mesh 在螞蟻金服內部也是在一個起步階段。我們現在在基於原來的產品落地,現在有二三十個系統正在使用。其實我們在上線過程當中,已經感受到了這一點。之前,比如說我們做多元化的改造,其實涉及到一些路由規則的變化。這個時候如果你的路由規則變化的計算出現問題的話,你就要推著他們去做升級。如果說遇到一個Bug,之前我們推著應用去改造,說你給我安排一個迭代吧,你把這個東西升級一下,這個東西可能會對你的影響很大,但是業務方有自己的業務需求,我的客戶在等著我,產品經理在追著我說,要上別的功能。使用Mesh之後,我們的協作方式就很簡單,現在我們去和 SRE 確定說,我發現我有這個Bug,然後我要去做升級了。我們和SRE確定之後,我們就開始去做一個灰度升級,灰度完成之後,就可以去做全面的升級。這個周期是非常快的,我們這個版本現在推到二三十個應用當中,只需要一周的時間就夠了,之前二三十個系統起碼要好幾個月。

楊冰:我們看重這個交付的標準化,因為你在客戶端,其實你很難標準化,無非就是做多語言,每個都做一遍,這樣很難被標準化,什麼東西最容易把變化給收攏呢?他是?個獨?的運行時的時候,變化是比較容易被收攏的。這個時候我們把最關鍵的,變化最頻繁的,也承載了架構的那部分關鍵代碼沉到 SideCar 裡面(這個基本上是由中間件團隊和基礎設施團隊維護),這樣就可以把它作為一個獨立的模塊去演進它。這個無論是對上雲,還是我們走出去開放,都有很大的益處。我們這個規模,包括面向雲這樣的規模,是非常看重基礎設施迭代更新的效率的。尤其你要讓客戶升級升級,那更複雜。

魏佳:結合您前面提到的,你們定位於中間件這一層,有不同、複雜業務的接入方,你們在整個落地也好,推的過程中也好,有一些是來自於技術之外的阻力或者是問題嗎?尤其是對於阿里或者是螞蟻金服這樣一個很大的業務組織。

楊冰:其實如果說我們是自己革自己的命,其實這個最大的阻力就沒了。阻力來自於幾個方面。第一個是說我們這個價值是不是make sense。我們和老闆是去聊過的,他是認這個方向對我們產生的價值是巨大的。因為交付效率的提高,是現在制約基礎架構向前演進的最關鍵的要素。

二是我們公司有一個團隊有很大權力和影響力,我們稱之為風險部門。谷歌提出了SRE,我們也有SRE,谷歌的R是Reliability,我們的R是Risk。有一個部門其實他們這個團隊會非常關注這個R,而且這個在螞蟻是底線,是生命線。現在有很多方向,包括我們在搞的紅藍軍演練,攻防這些東西,是非常依賴於中間件的。這一層基礎設施被拿到了我們自己手裡,可以更加快速修復治癒的時候,他們整個SRE的風險也會快速收斂。如果說要推到全站去升級的話,這件事情他們會很頭大。所以在他們這邊的阻力也會小很多,他們也是非常擁抱這個方向的。

因此這幾個方面,一個是我們自己,一個是老闆,一個是SRE,這三個都順了之後就順多了。剩下的無非是一些語言團隊,這些語言團隊基本上還是比較擁抱的。因為他們可能如果是在小公司的話,那部分承載基礎設施的代碼穩定了也就穩定了,他們就是做業務了。但是在螞蟻這種業務在?快往前演進的地方,基礎架構是看不到穩定的那一天的,他們做了一段時間之後會覺得?常累,他可能要和中間件一樣,團隊發展到一樣的規模才可以支撐基礎架構往前演進。?且每次基礎架構升級都會消耗掉他們大量的精?。因此他們覺得可以在深度優化,以及業務創新上去花精力做一些小而美的事情。而在跟著整個基礎設施跑的時候,是非常消耗人力的。所以他們也非常擁抱這個方向,大家一起開源共建。

王淵命:剛剛說到 Mesh,你們的定位是 SOFA 5。我們看到您所舉到的 Mesh 所能達到的功能里,明顯有一部分,原來 SOFA 提供的一些功能可以遷移過來了,可以用 Mesh 實現一部分。這當中有一部分 SOFA4 的版本和 SOFA5 的版本,怎麼樣來進行融合?

楊冰:它本質上把SDK給 Mesh 化,給Runtime化了。

王淵命:最後的演進,有一部分是互相融合,最後哪些組件是和Mesh整合,哪些組件被替代了?

楊冰:我之前也分享了一些,我們的原則還是那句話能復用的就復用。因為 istio 裡面定義了XDS等很多DS這種東西,這些是服務發現的標準。這個東西我們是覺得非常有價值的。像社區走得慢的,我們就自己搞,然後patch回去。如果社區不接收,那我們就自己做一個分支,我們有一部分人會投入到開源運作。我們想辦法把我們的理念、想法、推到社區,期望他們標準化。當年Docker,還有 Kubernetes 也是這麼走過來的。一開始設計出來的時候也沒有那麼完美。但是到後來各種網路、容器的標準化,OCI的標準都出來了。我們也希望在微服務領域做一些標準化的工作。

剛剛說到的一些組件,比如說服務註冊中心,是我之前提到到過的非常關鍵的部分。其實我們和 istio 的人聊過,其實谷歌做 istio 這一塊的人,是谷歌 Gateway 這個部門轉型過來去做的。因為它覺得這個東西不就我和我們整個 Gateway 做的事情非常像嗎?而且他們把很多管控的理念加入進來,向前演進。但是說老實話,谷歌這樣的公司雖然很偉大,但是在微服務領域,他們趟的坑我相信是沒有阿里多的。因為它可能主要集中AI、搜索,它的業務形態真的沒有金融那麼複雜。我們也非常直接問過他們團隊的人,微服務在你們內部有多少話語權,其實是沒有太大話語權的。我們認為雖然谷歌這家公司,也包括IBM,有很多的沉澱,有非常多的牛人,但是他趟過的坑沒有我們多。我們非常認同他們的方向、抽象能力以及設計能力。我們更多願意扮演合作者的角色去推動社區往很好的方向發展。我們會自己做像服務註冊中心這樣的組件。所以現在Istio 的服務註冊發現其實對接的是 Kubernetes 里?的 ETCD,但是 ETCD 其實沒有我們內部這種高可?的能力。將來如果說這個社區比我們做的好了,我們會放棄掉自己的組件往社區的方向去發展。但是現在我覺得社區是搞不定的,所以在落地的階段,我們會把服務註冊中心等一些關鍵的組件自己來做。

王淵命:既然可以把 Mesh 理解成網路層,我們把所有的中間件放在網路層,而網路層最好的提供方,要麼是容器平台,要麼是雲平台。下一步的容器平台或者雲平台也會往這個方向發展,這兩個會有一個什麼樣的結合演變方式?比如說剛剛討論的 istio Sidecar 和Kubernetes其實是非常密切的,非常依賴於Kubernetes的能力,沒有這個平台的支撐,它是很難去運維的。這一塊兩位有什麼樣的看法?現在業界做雲的有沒有這方面的動作?

楊冰:你是說這個方向怎麼和Kubernetes這個方向以及非Kubernetes的方向更好的融合是嗎?

王淵命:Mesh 這一層標準化了,那會不會變成雲平台或者容器平台默認的,就在網路層支持的一套能力?

楊冰:谷歌之所以會出來做Service Mesh,是因為 Kubernetes 最強的還是在編排、調度,整個模型的抽象,從而讓PaaS更加簡單和輕量級。但是它在微服務這個層面上,雖然提供這個能力,但是它的玩法缺不豐富,而且相對也比較簡單。就像我們內部都有很複雜的玩法,服務的動態上線、下線,基於服務粒度的彈性伸縮,這種能力很難在一個基於service這個維度去做。但是 Service Mesh 這個方向是可以讓微服務更加容易地往基礎設施走,這是谷歌做 Service Mesh 的一個用意,我們希望微服務這一層走向標準化。

但是就 Kubernetes 和 Service Mesh 這一層結合的事情,我們在和他們(istio 團隊)聊的時候,他們也提到過,首先這個方向雖然是為了結合Kubernetes去做的更大,往微服務這個層面上去更進一步,把這一層去做表徵化。但是Service Mesh本身它其實是一個可以支持多平台的一個架構的,只不過我理解他們團隊現在應該是優先在做對Kubernetes的集成。因為他一開始在設計那個藍圖的時候,就考慮過能夠運行在非Kubernetes的平台上。對用戶來說,一旦標準化之後,其實他也不關心底下是不是 Kubernetes 。如果說他成為一個微服務的標準,他不管你是 Container Based 還是 VM Based 理論上都是應該可以的。Mesh是往上去抽了一層,做多元化適配,多種基礎設施的適配,只是優先在做Kubernetes的適配。另外他在控制面這一層也是跨平台的設計。它不是說只是運行在谷歌雲上,它是基於混合雲架構去設計的,基於聯邦論架構去設計的,只不過現在他也沒有做這部分的特性,但是他們有規划去做。而且這一層的規劃,比現在他們文檔裡面看到的東西,可能會大得多。但是他們現在做比較聚焦於在Kubernetes的適配這個方向上做。所以這個和我們的想法也是?較相近的,我們覺得也是這樣的,?不僅是 Istio 現在的這些東西。

魏佳:回到您前面說到的整個的過程,如果說跳脫出來看,您覺得其他的同樣在做互聯網金融或者是傳統金融轉型的,有多少可以從你們類似的螞蟻金服或者是原先的支付寶這樣一個經驗借鑒出來,在技術層面的。我問這個問題代表的更多的是,因為您知道金融科技相關的中小規模的企業非常多,有一些在金融領域遇到的一些問題是類似的。但是他們的技術積累、團隊等等都遠遠比不上阿里系這樣一個成熟的體系。有沒有能讓這些更輕量的玩家,技術儲備比較弱的玩家,也能夠借鑒到你們正確的一個路徑向前走?

回答:我這個話題在剛剛分享當中也大概解答過。我個人的觀點是這樣的,金融這個領域,因為它天然是融入到生活方方面面的基礎設施。金融也好,支付也好,無論是基金還是保險還是什麼形態,都是服務於個人,服務於機構的,是滲透到生活的方方面面的。金融在任何一個方向在發展的時候,都會面臨到比較大的流量的問題。有可能會出現可能針對機構的一些保險或者是機構的基金,但是肯定也會針對於C類用戶的,一旦對接到C類?戶,對接到互聯網渠道,它的流量其實是?個解決不掉的問題。我們在這一塊去做了很多的探索。其實跟整個集團的一些團隊不太一樣的地方是在金融要求下做事情。所謂的金融要求有幾個方面。一個是我們的SRE的定義是不同的,我們會把風險放在第一位,可用性、兜底是被放在第一位的。第二,我們是被強監管的。所以我們在容災、數據無損,類似於這方面的要求更高。戴著金融的枷鎖,既要跑得快又要跑的穩。這些方面的平衡是深深寫在我們的代碼裡面的。如果說要在快、量、可靠、安全方面上去做,我覺得我們的技術、理念都是可以借鑒甚至拿過去用的,這方面會幫他少趟很多的路。但是現在的Fintech,這個詞雖然說有點被說濫了,也有一些誤解,但是還是有很多創新領域上的一些探索。無論是安全、風控還是投研、投顧、質研,以及區塊鏈方面的探索,我覺得這個形態會非常豐富。

這一塊螞蟻金服是非常踏踏實實地在做一些底層方向上的事情。這一塊的想像空間和能做的事情遠比螞蟻金服現在做的東西要多。而且這個方向的成熟,不像我們現在開放出來的那部分技術那麼成熟。我們開放出來的那部分技術,大家是可以參與、共建,是大家都會遇到的。另外一部分,我覺得可以去借鑒和溝通,因為我覺得遠遠沒有到標準化的階段。

魏佳:你前面提到了區塊鏈,二位從個人的角度怎麼去看洶湧而來的區塊鏈大潮,當然避免不了有一些負面的事情或者是消息。但是假設是從技術角度本身而言,因為它本身和賬本金融有一個天然契合的層面,從這個維度來看,你們個人怎麼看這樣一個趨勢?

王淵命:我追問一下,區塊鏈大家都說是金融革命,它可能是想重新定義金融的規則。在這樣的情況下,又和螞蟻金服這樣的金融的體系肯定是有互相影響的地方。這個我不知道你們個人和內部是怎麼看待的?

楊冰:我也只能說一些我能說的個人觀點。如果有機會可以採訪到我們這邊的區塊鏈負責人會更好一些,因為我對這個東西的理解沒有那麼透。確實像您所說,外面有很多的想法。我們比較明確的幾個點是,第一,螞蟻金服不會去做「幣」這樣的一些東西。第二,我們的一些應用場景(包括現在能夠對外說的,比如說溯源、公益等等),螞蟻金服是投重兵在做這件事情。因為我們非常認同這個東西對金融帶來的變革,這是不用避諱的。我們是實實在在做和生活、金融便利性相關的一些方向的探索。我還是比較認同這個方向。我們內部更多聊的不是某一個區塊鏈技術或者是某一個區塊鏈思想,因為區塊鏈已經變成默認事實。按照這個標準的話,很多事情確實是好做很多。就像我們真出了量子計算機之後,計算機上面的邏輯,比如說我們搞的要死的同城雙活就不要搞了。

區塊鏈記錄一旦寫入不能篡改,因此它本質上是一個加密的分散式的賬本,它不可篡改,而且會廣播達成一致性。這三個關鍵要素,一旦變成基礎設施,安全性可以得到保障的話,某一個場景軟體的寫法會完全被顛覆掉,包括產出的場景都會被顛覆掉這是我們比較認同的,至於說什麼場景我也不方便說。區塊鏈的思想還是很好的。

王淵命:我想問一下SOFA開源的問題,SOFA很早以前就打算開源了,但是到現在才開出來。因為它是一個龐大的體系,開源有各種阻力,我們可以想到的,比如說開源出來要劃分一個明確的邊界,哪些事情是通用場景的,哪些是特殊場景,這個你們是如何劃分這個邊界和思考的?另外是內部的認識上,這樣一個東西是核心競爭力之一,我們把它開源出去,大家的認識上會不會有一些衝突?

黃挺:首先我回答第一個問題,因為SOFA發展了這麼多年,是有非常重的歷史包袱的,這也是我們為開源準備了非常長時間的原因。在從SOFA3到SOFA4的整個過程當中,包括把整個SOFA做輕量化的過程當中,其實就是在做這件事情。有一些公用的能力(我們覺得這個東西,沒有和螞蟻整個架構或者是業務有非常強的相關的東西),我們都希望可以開源出來。我們做開源這件事情不會把我們代碼分為完全兩套東西,然後兩個分別演進,我們覺得這不是開源的正確做法。

另外開源對我們整個團隊的消耗是非常大的,我們希望用同一套代碼來實現內部的兼容和外部的開源,我們會在開源的代碼當中留一些比較好的擴展點,這也是對我們本身代碼架構可擴展性的挑戰,目前我們做到的程度就是這樣的。你剛剛講到開源對我們內部價值的問題。

王淵命:對,就是怎麼統一這個認知,比如說有人覺得這件事情是我們的核心競爭力,不應該開源。

黃挺:當然,這肯定是我們一部分核心競爭力,但是我們已經發展了這麼多年,本身SOFA當中用了非常多的開源軟體。從技術人員角度來說,如果我們已經能夠在業界某些方面做到領先程度了,我覺得我們應該是去回饋社區的。

另一方面,雖然說螞蟻金服體量很大,我們在金融上面有非常多的形態,包括保險、基金、銀行,以及本身我們的一些支付業務。但是實際上整個世界其實是很大的。我們從做金融雲開始,看到了一個更大的世界。如果說為了我們整套體系能有更多人去用,在更多的場景下去鍛煉的話,開源也是必須要去走的一條路。這也是從產品發展方向上來看的。因為畢竟內部雖然很大,但是場景比外面的世界還是要小很多。

楊冰:我補充一些宏觀的思考。您提到核心競爭力,其實我們不否認這個東西。其實就像螞蟻去做科技開放這件事情的道理是一樣的。螞蟻看到的是一個更大生態的可能性。我覺得螞蟻或者是阿里最有意思的就是聚集了一幫確實很有夢想的人,我們相信這件事情。這麼大的一個可能性,我們發現瓶頸確實在技術上,這雖然不是在我們的瓶頸,但是可能是一些合作夥伴或者客戶的瓶頸。如果說這些問題可以被解決的話,整個生態不是一個零和遊戲,螞蟻金服自己也會收穫更多,所以我們願意開放出來一些東西。

第二,回饋是另一方面的考慮。我們開源不是說開放出來就可以了,我們希望做一些運營,希望更多人加入進來,因為開源或者是社區不是一言堂,要有更多人去用,這種基礎性的軟體是會有網路效應的,我們希望有更多人進來去把它變的更豐富,去應對更複雜場景。並且螞蟻金服會跳出來去做標準的倡導者,因為有一些東西會在基礎設施層面,或者是一些基礎架構軟體層面,如果變成標準化的話,我們自己也會受益更多。現在國家也在支持這個事情,自主研發等等。我們是希望把它變成在金融行業的基礎設施,這條路應該是挺難的,但是螞蟻金服是最應該去做這件事情的一家公司。

王淵命:我突然想到一個問題,做為一個技術人我也一直在思考一個問題。你看我們單說服務端的,前幾年冒出來的 Docker,最近一直很火的 Mesh,這些點你單拎出來,並不是一個很堅深複雜的技術,說我們以前想不到的,以前我們可能就零散的去應用這些技術了,並且實際上解決這些問題了,但是沒有做的就是把它能抽象成一套非常好的工具或者是標準去把它推廣出來。這個事情,當然從技術深度上,我覺得現在國內的開發工程師沒有太大的差距了,但是怎麼產生這種想法,以及這種想法最後到落地,要有一個想法、醞釀、策劃的過程,這個過程我們國內工程師是比較缺乏的,這件事情,您覺得大家應該在哪些方面去增強?

楊冰:我覺得不光是工程師的問題,其實這是一種文化的差異。美國或者是歐洲,他們是比較講究這種社區文化的,是比較開放的模式。他們在社區協同還有這方面其實會做的更好一些。而這個東西又是需要大量社區協同的。

第二,我覺得還是科技人才和教育體系帶來的一些變化。因為國外可能很早人們就開始寫論文了,所以我們覺得老外抽象能力很強,因為他們在教的時候是已經體系化的。而國內我們這一代人在人才儲備和想法上會比老外少很多,我們下一代會比我們這一代好很多。所以不是沒有這個深度,沒有這個能力,而是說在思維能力上就會少很多這樣的人和思考的方式。所以第一個是想到的人就比較少,第二個是想到之後,他願意分享出來,以協同化模式去運作的人也少。

第三,就OpenSource來說,真要做大的OpenSource還是一半商業,一半技術的。所以你會發現其實國外能夠深刻理解這個商業生態以及和技術的結合,如何把它平衡好,以基金會的方式去運作的人才。這個已經不是對程序員的要求了,這種類型的人才國外比國內多太多了。因為我們近期也在做OpenSource,在找開源圈子的人,這種人是鳳毛麟角,還是非常稀缺的。而且我覺得,做開放、開源這件事情就是一個人脈圈,你得有這樣的人,理解共同的理念。大家可以看一下《大教堂與集市》那本書,他講了整個黑客的文化,開源的文化。能夠關注並且深刻理解,最終能夠把它去做商業化結合這方面的人才是奇缺的。所以我覺得要形成這樣一種體量的,還要走很長的路。

你看谷歌,Apache 是一個開放治理架構的一套體系,這個東西其實很難管的,在當中還可以產生商業。谷歌現在從自己做安卓,從相對獨立的開源體系做到了現在的CNCF,他也投入了很多人去做 CNCF,在裡面去扮演一些關鍵的角色,這也是一套開放治理的架構。它進來的東西有一些對它是不利的,但是他也會放進來。這種駕馭的能力,能管理這種開放治理體系的人才太缺了,我覺得國內幾乎是沒有的,所以很難達到這樣體量的影響力。我覺得開源世界現在還是被老外統治的。

魏佳:我是很認同您剛剛說的那些點的,可能從學校階段出來的時候,理論知識紮實的程度,包括整個西方的商業文明,每日熏陶人的思維模式,是在這樣一個過程當中起非常重要的作用的。

楊冰:我給你講一個我們團隊當中很有意思的例子,大家去看可能老外隨便搞一個項目,先把自己變成一個優秀的ReadMe工程師。我們團隊的同學,寫這個東西就會要改好幾版,其實這是非常不利於開源傳播的。其實我們整個這方面的人才儲備(有商業化意識的人才),都是奇缺的。公司現在也是鼓勵去推那些有商業化意識又有技術背景的同學,可以去幫助公司去看更大的方向。首先我們有很好的技術人才的儲備,這個我們還不錯,是高速發展。但是商業化和技術相綜合的人才其實是非常缺的。所以我覺得有這樣的人才,再加上教育上的一些差距慢慢補齊,才有可能運作大規模的開源項目。當然國家支持也很重要。所以現在自主可控、國家安全、民族崛起這些東西會引入更多的外腦。現在海外回來的人很多,他們是受過這種思想的熏陶,這樣一些行為模式的培養。他們會慢慢帶來改變。百度陸奇走了,陸奇走的時候我看了很多的文章,大家對他的文化、理念還是比較認同的。雖然整個國家,整個文化,整個技術圈子還是有這個慣性的,沒有那麼容易往更開放的社區化方向去走,但是總會慢慢改變。

魏佳:我代表我們業界這些剛剛從學校出來的,初出茅廬的年輕工程師的一個問題。因為二位都是一畢業就加入了阿里的,或者說加入了螞蟻金服,特別是楊冰又是近十年走到現在這樣一個角色,年輕工程師多半有這樣的困惑或者是顧慮,就是我剛剛加入公司的時候,可能更多是他們認為不會有太多成長的這種業務的代碼,寫的一些功能,打交道的也是公司的產品、測試。可能在相對長的時間內你都很難有機會像您剛剛說的,你們做的中間件這樣的積累,對個人也好,對平台也好都是快速增長的機會的存在。對於絕大部分的年輕工程師,在缺少公司能提供的這種機會的情況下,您覺得個人成長、提升應該有哪些方式或者是維度。比如說現在加入A公司,本身盤子就沒有那麼大,練兵場就遠遠比不上阿里可以提供的。沒有這樣的一個平台,可能就客觀缺乏這樣的機會。另一方面,您覺得您這十年的過程當中,公司之外的,或者說項目本身客觀存在的東西之外的,還有什麼是為您的個人成長,無論是技術還是能力、事業等等起了決定性作用的。

楊冰:其實這方面的雞湯是很多的,我就說一下多自己個人的感受,因為這個也不算我個人原創的,我是看到一些東西,結合我自己的體會。前一段時間摩拜的創始人後來套現離開了,發了一篇比較負面的文章,說你的同齡人現在在幹嗎什麼的。後來又有了一篇比較正面的文章,我覺得分析得挺好的

首先年輕人在做選擇的時候,要看點線面,首先選擇比努力更重要,怎麼選擇呢?我面了很多的年輕人,大家非常看眼前的。我分享一下,一個是看微觀,一個是看宏觀。看宏觀是說,你在選擇的時候,你要把自己投在一個大面上是好的,有機會讓你成為億萬富翁的或者是欣欣向榮這個方向去發展的,你行業要看得准,方向要看得准。第二個,你看線的時候,你要看這幾個賽道當中有幾家公司,你削尖腦袋也要前去,或者是盡量優先去考慮,而不是說隨便找一個就可以了。第三個,再到點是指微觀的,有可能你在面上OK,線上面不是最佳,在點上面可能要去做一些平衡。你可以在年輕的時候帶著一個向前看的心,多選擇到一個投資自己或者是自己能夠學到更多東西的地方去,差不多就是線、面選好之後,在點上做平衡。比如說有一家公司很好,在線上明顯優於另外一家公司的,但是那個團隊沒有特別牛的人,只是說這家公司很好,你進去可能會帶著這家公司的光環,但是你學不到很好的東西。光環沒有了之後,你原先可以做的事情,在你到了另外一家公司之後你是做不了的。所以你寧可去選擇大方向正確,弱一點,但是那邊有一個牛人或者說你能夠成長的公司。我覺得這個就要看自己在宏觀和微觀上的平衡了。

第二個,靠譜比聰明更重要一點。我在看團隊的一些人,包括養,包括發現走得快的?些人,都是一些站在比較高的角度或者是完成事情比較靠譜的人。改變環境其實是挺難的,如果說你可以改變自己來適應這個環境,招數不一樣的話,你在哪裡都可以做好。如果你覺得這個公司,這個廟已經裝不下你,你自己再怎麼變,這個能量已經到了天花板的話,你就換一個地方。你一定要想辦法去改變自己,去為這件事情負責。

第三個,如果說年輕人的話,我們面試的時候還會比較看穩定性。雖然說剛剛講了那麼多,但是其實如果說大家無論是做業務還是什麼,其實可能3年為期,很多東西一年、兩年是很難有沉澱的。你一旦從一個地方換到另外一個地方,人際關係要重新建立,信任關係要重新建立,你的機會要重新去獲取。你再不斷重複,在新的地方去證明自己就會消耗掉很大力量,你就很難再往上全走了。所以他在深度和廣度上就會出現一個瓶頸。我們會在看人的時候,如果真的是招比較有潛力或者是比較好的人才的話,不僅是看穩定度和忠誠度的問題,也是在看他是否有耐心沉澱下來在這個領域裡深耕一段時間的。我個人結合一些東西,我覺得這三個點是比較重要的。

魏佳:在這樣一個將近十年時間裡,對您而言影響最大的是什麼?

楊冰:我覺得還是這兩年,就是走出去的這兩年,我覺得我自己有很明顯的變化。原先我跟他(黃挺)在一個團隊裡面,其實大家想法上差別不大,雖然我一直是他的上級,但是其實大家在思想上是有一些局限的。我的團隊包括我自己也有明顯的感受。我們去看OpenSource,看社區,甚至是走出去,而不是只把眼光留在公司內部,這個對我確實有很大啟發。我在這個期間接觸了非常多商業化人才,或者說外部的一些不同的看法,包括投資圈的一些人,包括社區一些人。真的給我非常不一樣的視角,讓我能夠從不一樣的維度思考問題。另外公司也給我這樣一個舞台和機會。可能是因為我會更花時間去關注公司高層或者是整個公司層面上,主賽道、方向上在做的事情和我這邊的關係。這樣的話會得出不一樣的答案。這兩年其實自己的個人變化還是比較大的。因為接觸到外面更多的視角,更商業化的運作,結合技術再去思考,會得出不一樣的結果。看公司層面上的事情,你看到的也是商業化上的判斷。就是成本、效率、穩定性這些方面的。以前我們這些人都是不看這些的,但是結合商業再看主賽道,以及我們這些東西,是選擇優先做哪一個答案就不一樣了。

魏佳:我們今天的採訪就到這裡,感謝二位。

螞蟻金服現已開源其中間件SOFA,欲知詳情,請關注SOFA公眾號。

GIAC大會2018深圳站ppt地址如下https://pan.baidu.com/s/1vSCjttT_KV9YZKJvBZnUQQ

轉載本文請註明出處,技術原創及架構實踐文章,歡迎通過公眾號菜單「聯繫我們」進行投稿。

高可用架構

改變互聯網的構建方式

長按二維碼 關注「高可用架構」公眾號

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

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


請您繼續閱讀更多來自 高可用架構 的精彩文章:

門羅幣簡介

TAG:高可用架構 |