天天看點

函數計算助力閑魚建構雲端一體化變成模式,節省30%開發成本

客戶介紹

閑魚是依托阿裡電商體系的前台型業務,有非常獨特的業務特點和使用者訴求,在底層依托阿裡系統的同時,在表現層和業務層需要探索适合閑魚的、并且更加快速靈活的研發體系。

從 2018 年開始,閑魚架構負責人王樹彬帶領閑魚技術團隊布局 Serverless。颠覆性創新往往是從邊緣性的地方出現,而向雲原生化/Serverless 化更新,對于閑魚是一條全新的路,但趟出了這條路,對于很多做線上交易的公司有着巨大的借鑒意義。

客戶痛點

  1. 用戶端互動層、服務端業務膠水層、領域層邊界劃分不清晰,這就導緻很小的業務需求就需要整條鍊路的同學參與,協同成本高,開發調試周期長。
  2. 服務端存在巨型應用,研發耦合、釋出耦合、運維耦合嚴重,甚至系統穩定性也受到很大挑戰,單個業務問題往往會影響整個應用。
  3. 運維成本極高。為了保障業務的穩定性和可用性,阿裡對每一個應用上線都有相應的規範和規則。哪怕是一個很小的内部應用,一天可能隻有一兩個通路量,上線也需要遵守既有的規範,這勢必會消耗一些固定資源。單個應用消耗的資源可能很有限,但所有應用消耗的資源累積起來也是一個不小的數字。而對于巨型應用,由于影響面巨大,釋出時要有更加嚴格的流程和步驟,一次釋出至少要耗時 6 小時,運維成本極高。

解決方案

Serverless 的出現,一方面使雲端一體化研發成為可能,很多小業務需求的協同成本可以大大降低。另一方面,Serverless 使業務膠水層的巨型應用,有了比微服務更加合理的拆分方式。

雲原生/Serverless 這些新技術的出現,可以使應用運維能力下沉,傳統巨型應用的成本(速度)、穩定、品質互相制約的瓶頸才有可能被打破。閑魚在落地新技術的過程中,先圍繞 Flutter 重點攻堅了 Flutter 混合工程體系、高性能元件庫。然後圍繞 Serverless 重點攻堅雲端一體化研發體系、服務端業務組裝層架構體系。

閑魚用戶端基于 Flutter 進行架構演進與創新,通過 Flutter 統一 Android 和 iOS 雙端提升研發效能之後,希望通過 Flutter+Serverless 解決各角色間存在的大量的協同問題,正是這些問題導緻整體研發效率低,移動端離業務越來越遠,服務端沒有時間做底層領域沉澱。通過 Serverless 的引入,閑魚會明顯看到整體研發效率的提升。

使用效果

  1. 雲端程式設計模型一體化架構(Nexus API)。這個架構的目标是使 Flutter、FaaS 的程式設計模型統一,打通UI、互動、資料、邏輯。王樹彬提到,一開始說要做 Flutter + FaaS 一體化的時候,我們對“一體化“這三個字的認知相對比較模糊,隻是知道端側的同學可以用 Dart 這門語言來寫 FaaS 函數,這其實還停留在語言上的一體化。對于 FaaS 所能做的事,也僅僅停留在前端實施已久的 BFF 層面。
  2. CLI 開發工具标準化。雲端一體化開發時,通過 CLI(指令行工具)屏蔽 FaaS 開發的一些細節,使用戶端開發 FaaS 時的開發體驗标準化,符合用戶端同學的本地開發習慣。
  3. 基礎服務 BaaS 化。過去兩年,我們在逐漸簡化基礎服務能力,如對象存儲、消息、搜尋。同時,建設業務領域層服務的中繼資料中心,這些簡化的基礎服務能力,再加上已有的業務領域層服務,使用戶端同學可以快速組裝業務。
  4. 雲端工程一體化,閑魚在成功引入 Flutter 後,在端側形成了以 Flutter 為主、H5為輔的跨端研發體系,使傳統的 Android 和 iOS 的兩端研發,合并成一端。在端上的生産力得到釋放時,我們發現端的同學有機會向下層走一點,使服務端面向簡單的資料組裝邏輯,由端的同學一人閉環完成,這套模式尤其适用于一些小業務的需求。
  5. 傳統巨型應用的 Serverless 化改造。Serverless 不是銀彈,但與業務膠水層的特點很比對,非常适用于解決膠水層的傳統巨型應用的拆分,這也是閑魚正在攻堅的下一個難題。

從最開始不被外界看好,甚至被調侃為“鹹魚”,到如今實作了千萬 DAU,盤活了一個萬億級市場,閑魚的出現,無論是對前端的電商生态,還是使用者在網際網路上的生活形式,都産生了重要的影響。

為了支撐起閑魚萬億的交易規模,王樹彬和技術團隊正在緊鑼密鼓地進行傳統巨型應用的 Serverless 化改造,“闖過了 Serverless 的這一關,才是我比較滿意的狀态。”

繼續閱讀