Categories
程式開發

阿里跨境供應鏈前端架構演進與 Serverless 實踐


Serverless 是近年最火的技術之一,目前在阿里已成燎原之勢。在 GMTC 全球大前端技術大會(深圳站)2019 現場,InfoQ 記者採訪阿里巴巴高級前端技術專家,ICBU 跨境供應鏈多元化履約團隊TL 繆傳傑(樵楓),請他結合阿里跨境供應鏈前端的架構演進過程,介紹他的團隊是如何看待Serverless 、如何用好Serverless 的。

InfoQ:首先請您介紹一下您目前負責的工作,還有當前團隊的主要工作範疇?

繆傳傑:我來自阿里巴巴 ICBU 技術部,所服務業務 alibaba.com 是阿里巴巴最“古老”的一塊業務,有 20 多年曆史,為全球跨境貿易買賣家提供一系列專業的服務。我所在的跨境供應鍊是其中的一個版塊,為小企業提供通關、外匯、退稅、物流、金融等外貿領域的服務。

如果從前端視角看,有挑戰的技術領域有這樣幾個:1、國際化,這個是很大的Scope,裡麵包含了面向全球的極致性能問題,以及面向全球的測試保障、本地化等等問題;2、第二個命題是,我們的業務裡面有大量中後台,​​怎麼去高效的支撐、怎麼在這種場景下去發揮更大的前端價值,讓技術賦能業務,我這次的Serverless 分享也是圍繞這個命題的,此外我們還和集團共建開源了表單框架Formily、列表方案Alist 等; 3、還有一些其他命題,比如我們的業務裡面涉及很多大宗外匯、資金流轉,怎麼去做全流程的質量保障,避免資損,為此我們針對不同節點研究了不同的質量保障產品,比如測試階段用F2etest 做在線瀏覽器兼容性測試,發布前用UiRecorder 錄製的腳本做回歸測試,上線後用扁鵲平台實時監控Nodejs 業務異常,目前F2etest 和UiRecorder 已經開源。

InfoQ:ICBU 跨境供應鏈在架構演進上劃分了哪幾個階段?

繆傳傑:從前後端協同視角可以分成三個階段。 2016 年之前,是以 Webx(一個 Java MVC 框架)來承載 Web 層的服務,承載頁面數據的聚合、渲染 VM 模板等。這是夾在Java 微服務跟我們瀏覽器之間的一個東西,帶來的一個問題就是前後端的耦合:前端也在改,後端也在改,導致協同效能提不上去;另外還會有一些質量問題;此外,在這種架構下,前端的抓手很弱,會受制於後端的整個開發棧,開發體驗和幸福感會很低。在這樣一個大背景下,我們一直在探索怎樣做前後端解耦提效,怎樣更好的去賦能業務:我們想從架構的視角去看整個事情。

從大概 2016 年開始,我們採用Node.js(Egg 框架)來作為中間層,也就是 BFF 架構。我們做的這個事情不算早,但是恰如其實,當時 Egg 體系相對成熟,我們有更多精力去處理業務層的事情。這個架構升級給我們帶來的好處除了協同效能、開發體驗提升外,更多的是發現前端可以承擔更多職責,很多的商業想法更容易去推進落地了。但是我們畢竟是一個不算大的團隊,另外我們畢竟是個前端團隊,所以帶來一些好處的同時也會帶來一些弊端。比如我們要管機器運維的事情,還要去考慮機器成本、運維成本。

所以我們也在思考有沒有更合理的方案、更輕量的方案,第一能把機器成本降下來,第二能夠更快部署,第三就是能夠讓我們不用去管運維的事情。經過多方交流和學習,我們大家都一致認定 Serverless 是個方向,於是就進入了第三個階段的探索:用 Serverless 把我們整個的研發效能提上去,把運維成本降下來,機器成本降下來。於是我們就跟集團的中間件團隊,還有集團的Node.js 中台團隊去做共建,一起去把 FaaS 體系初步搭建起來。

對於整個阿里前端委員會來說,Serverless 是其中一個非常重要的核心技術方向,集團已經牽頭拉著更多業務團隊,包括中台團隊,把整個體系豐富完善起來,這樣其他團隊如果要接入的話,會很方便。

InfoQ:Serverless 給中後台業務上面的前端開髮帶來了哪些改變?

繆傳傑:這個問題可以分兩個層次,因為從前端視角來看,實際上 Serverless 本質上還是Node.js 的一個延展。第一個層次,Node.js給前端帶來什麼?我認為Node.js給前端帶來的價值,就是給我們帶來更強的對業務的把控能力,和更高的協同效能等;第二個層次,就是引入Serverless 之後,對原來的Node. js 體系提升了什麼?我認為 Serverless 代表的是普惠的服務端能力,讓原來 Node.js 的體系更加簡單、容易維護、成本更低。

還有就是,我之前提了一個概念叫 Serverless+,這是什麼意思呢?我舉個例子,比如說我們有人在用 SSR這個能力,這個東西很好,但是它的一個問題就是對於前端來講,你要去搭 SSR 必然要涉及到服務端的能力建設,成本還是比較高。所以 Serverless 進來之後就讓 SSR 這個事情變簡單了,這個就是 Serverless+SSR。還有一個例子,Serverless+BFF,BFF 讓前後端分離這個事情變得更簡單。另外還有一個例子就是Serverless+中後台搭建,傳統的搭建裡實際上只是解決了UI 層的拖拽、渲染、編排問題,有了Serverless 之後,實際上可以讓整個體驗更好——除了搭建UI 之外,只需要拖拽就可以把一個服務端的能力、接口的能力,在頁面中做出來,解決體驗隔離的問題。

InfoQ:但是 Serverless 從提出到現在時間也不是特別長,大概只有兩年左右的時間,還是比較初級的階段,它在實際落地的過程中會有哪些不足?

繆傳傑:首先,在我們體系內,Serverless 說實話完善度還不是特別高。這個完善度包括平台的擴縮容速度、應用的起動速度,還包括整個工程鏈路是否足夠平滑,以及線上監控速度是否完備,這些實際上還是要進一步去完善的。再比如生態能力需要不斷完善,具體來說就是 BaaS 需要更加的豐富。

其次,如果是從小的開發團隊或者個人開發者的角度來看的話,我更建議他們直接用雲上的產品,因為自己去搭 Serverless 體系還是特別困難的。不過對於開發者來說,他們要面臨的廠商選擇可能會很多,阿里雲、AWS、騰訊雲…每個廠商都有自己的標準,每個廠商的函數寫法可能都不一樣。我們跟集團一起共建了開源框架 Midway FaaS,把各個廠商的差異點給抹平了。

另外,在編程模型上面,Serverless 可能跟傳統的應用還是有很大差異。傳統的應用是有分層次的,我拿 Egg 來舉例,它可能有 Controller、Service 這些,而 FaaS 體系下,能不能用這麼扁平的一個編程模型就能支撐我們很複雜的業務流?這個是要去探索的。比如 EaaS(Egg As a Service )就是一個探索的實踐,我們把整個 Egg 直接跑到 FaaS 底層架構上面,看上去是個Egg,但是底層跑的是 FaaS 自動擴縮容。

InfoQ:您怎麼去看 Serverless 接下來的發展?

繆傳傑:整體來說 Serverless 還是處於早期摸索階段,未來一兩年我覺得這個基本面不會有太大變化,發揮的空間還非常大。 CNCF 把 Serverless 玩家分成平台提供者和開發者,可以從這兩個視角去看趨勢。從平台提供者的視角看,過去兩年各個雲產商對這塊的投入力度非常大,谷歌發布了 Knative,Cloud Run,AWS 發布了 Firecracker, 騰訊雲聯手 Serverless.com ,在阿里不管在雲上還是集團內部也有很多的發力。未來這塊各大巨頭的投入只會多不會少。再看社區上 Nodejs 框架,Midway Faas 開始發力,Egg 也將針對 Serverless 做更多的特性升級,比如正在討論的 Module 機制。從開發者視角看,會有更多的業務進入,但是說實話 Serverless 不是銀彈,怎麼結合自己的業務場景更好的做出業務價值是需要持續思考和探索的。可以藉用許曉斌的兩句話概括:1、Serverless 現在還沒有一個事實標準,還在探索階段;2、Serverless 有著美好的未來。未來三到五年可能會相對比較成熟。

InfoQ:您的團隊接下來在 Serverless 開發上會有什麼樣的規劃嗎?

繆傳傑:我們是一個業務團隊,首先還是要解決業務上的問題,接下來的一兩年會全部上 Serverless,目前這個事情正在有計劃的開展。其次,我們正在積極的參與集團 Serverless 體系的共建,把前期積累的能力和經驗貢獻出來,讓更多的業務能享受到 Serverless 帶來的快感。最後,我們正在和淘系一起在 Midway FaaS 開源項目中去對社區輸出這個領域的積累,也歡迎大家一起來共建。

嘉賓介紹:

繆傳傑(樵楓),阿里巴巴高級前端技術專家,ICBU 跨境供應鏈多元化履約團隊 TL 。畢業後先後供職於華為、阿里等公司。在阿里的4年多時間裡,曾擔任Ewtp 國際化等大型項目前端負責人,推進了跨境供應鏈複雜中後台業務前端架構的變革;參與推進了集團Serverless 體係從0​​到1的建設,並成功在多個業務落地;同時推進了基於Node.js 運行時的可視化診斷平台“扁鵲”的誕生和產品化。並在中後台架構領域有豐富的經驗。