天天看點

飛豬 Serverless 體系從無到有,落地10餘個業務場景

作者:侑夕

飛豬 Serverless 體系從無到有,落地10餘個業務場景

飛豬 Serverless 技術體系建設從去年 4 月份立項到現在已經快 1 年,期間經曆過集團基設施調研和多 BU 溝通,圍繞飛豬前後端合作開發的痛點制定解決目标,到空島研發平台和網關的建設,試點業務的上線跑通,再到空島、Lander、DEF 合并共建統一 FaaS 研發平台,以及圍繞各種開發體驗、穩定性的建設,再到現在 14 個業務場景 Serverless 化,完成現在的一個初步階段。

有幸經曆之前 Serverless 的喧嘩到現在的平穩進行,在多阿裡多部門的共建參與下,慢慢讓阿裡 Serverless 朝着一個方向在奔跑,緻力于前端研發模式新更新,想通過此文給大家介紹一下飛豬現有建設情況,希望可以給有觀望狀态的同學以及目前正打算進行 Serverless 業務化的同學提供一些參考建議。

曆史的發展

12~13 年,飛豬核心業務主要基于 PC 平台,前後端研發協作核心痛點在于動态模闆的編寫,不同團隊前後端常圍繞 “套模闆” 工作的歸屬引發沖突。

到 14、15 年 All in 無線的過程中,為了解決從 PC 時代複雜行業資料到無線網關 Mtop 的快速轉換,飛豬成立了無線服務端團隊來完成資料到端側的膠水層工作,可很好解決系列問題,但是持續重複的包接口也讓無線服務端面臨的成長和沉澱問題,不太可持續的。

16、17 年無線服務端技術建設穩定後,也由于上述問題,Mtop 接口封裝的工作逐漸由下放到行業後端同學,随着 H5/Weex/iOS/Android 多端發展,各自對接口的訴求難以一緻,出現通過 Node BFF 層來承接膠水問題,但前端運維能力不強、長尾機器的浪費導緻很難全量 BFF 化。

到 18 年飛豬平台化改造完成,業務由縱向行業變成橫向平台承接,需求的落地需要經過多方的協作和排期,中間層的碎片化也更加嚴重,對前後端協作成本帶來了更大的挑戰,同時不能通過單領域問題的解決方案(如下單頁解決方案)來解決其他業務層問題,急需一輕量通用的方案來解決日益嚴重的膠水層的協作。

契機的出現

随着 Serverless 在業界各雲平台的落地,通過 FaaS 這一種“碎片化”函數方案可以很好解決上述那些很前後端協助碎片化問題;在财年初,在中間件團隊做的Serverless 容器基礎建設加上研發部門 FaaS平台側、Midway Runtime 支援,讓 Serverless 在集團可落地變有可能。

在此契機下,我們啟動了《天空之城 - Serverless 技術體系建設專項》,通過集團底層設施建設上層 Serverless 技術體系來解決在飛豬導購、互動、中背景領域碰到的系列問題,并借此推動現有前後端協作模式向下階段邁一步。

天空之城建設

方案圖

通過集團各方基礎設施團隊交流請教,我們圍繞飛豬目前痛點形成如下 Serverless 建設圖:

飛豬 Serverless 體系從無到有,落地10餘個業務場景

其中藍色為重點建設部分,綠色為集團側依賴,共建并推動發展,紅色部分為行業/平台已有能力;在半年的建設過程中,随着集團 Serverless 共建的發展推動,以及業務試點過程中訴求的逐漸清晰,技術方向上主要圍繞如下 4 點進行。

FaaS 研發平台建設

半年内,FaaS 研發平台建設累次經過 4 期,從最開始一期自建空島到後面 3 期和多 BU 同學共建統一研發平台滿足可遷移使用,宗旨一直都是 <借力集團底層能力,建構上層 Serverless 上層統一平台,滿足業務場景 Serverless 化的使用>

一期 自建空島滿足飛豬試點使用:在去年 6 月份,我們完成了飛豬 FaaS 統一管理平台空島的建設,底層對 Aone 基礎 API 高度封裝,打通函數開發、服務調用、部署、runtime 全流程,從租戶管理、業務場景再到函數組管理,打通 WebIDE,更加符合飛豬上層業務開發同學的使用習慣;在此基礎上,我們完成了 3 個業務場景試點使用,對研發資源投入、運作時性能、穩定性等名額形成部分定量及定性結論。

與此同時,Lancer 平台也開始賦能淘寶導購業務的使用,人工智能的 YaaS 平台在滿足中背景場景的使用,但缺少一個阿裡前端統一的 Serverless 研發平台,經過和阿裡不少團隊多次讨論和對焦,有了接來下的共建研發平台的規劃落地。

點選檢視視訊

二期 參與集團共建完成多方合并,支援飛豬、手淘可跑通:主要是前期合并和産品方案的梳理,一起制定解決方案,完成飛豬空島、手淘 Lancer、Def 的三方融合,同時在底層資料庫結構上和 Api 上面的統一打通,功能上支援非覆寫釋出和灰階切流方案,這個階段基本完成 FaaS 函數的可跑通,但是在易用性上還需改善;

三期 統一平台功能豐富,支援飛豬側好用可遷移:此期工作覆寫現有空島能力,也即現在上圖看到的DEF 2.0,在之前基礎上支援 BU、産品場景的聚合能力、研發閉環測試監控體驗、Http 通用網關支援中背景場景;完成統一對外Open-Api的梳理規範制定工作,提供輕量級的 Pipeline釋出流程給服務編排系統的使用;讓 Sandbox 以及服務市場對飛豬側的良好支援,共建産出 Rax + FaaS 一體化解決方案,滿足飛豬側在統一研發平台的使用。

飛豬 Serverless 體系從無到有,落地10餘個業務場景

四期 使用痛點優化,滿足 930 前可切流工作:在上期功能滿足使用後,此階段建設重點解決手淘、飛豬側使用者使用過程中的痛點,補充操作手冊,pipeline 釋出管控流程增強;同時支援了中背景 FaaS 一體化場景的使用,以及在函數詳情頁新增了函數測試、快速調用、Debug 3 合一功能讓大家友善使用;

空島網關建設

在 FaaS 函數被端側使用起來前,還需要網關來将下層 HSF 服務通路轉成通用 Mtop/HTTP 來可通路,并通過統一網關入口來為飛豬側所有 FaaS 函數提供鑒權、限流、容災、日志、監控的作用,目前建設進行到了第三期,後續重點以能力增強為主。

飛豬 Serverless 體系從無到有,落地10餘個業務場景

第一期:主要是用于和空島平台的對接,通過規範約定,提供基礎能力滿足業務側試點的使用,當時是通過通路空島資料庫方式擷取到函數對應的 FaaS 觸發資訊的方式來進行連接配接

第二期:恰逢研發平台在和集團共建,為了對接新平台的使用,我們在原來基礎上和業務平台還有淘寶等同學網關層配置标準,可滿足非覆寫式釋出和灰階切流的使用,在函數釋出時候,将資訊推送到對應遠端分組,網關側監控,在滿足标準的基礎上也解決了和平台資料耦合的問題

第三期:更多聚焦在可适配性參數規範、穩定性、能力擴充3 方面,目前規範、穩定性全完成,全鍊路日志、網關監控報警、防爬、釘釘定制報警接入,後續重心放到能力擴充上,解決部分由于地層 BaaS 能力不足的問題。

飛豬 Serverless 體系從無到有,落地10餘個業務場景

基礎支援

在滿足研發平台和網關側可被業務開發通過正常穩定支援業務外,對外需要和集團共同一起弄好上下遊的一些基礎設施支援,飛豬側在裡面像一個幫忙寫部分代碼以及提需求的”業務方“角色;對内做對應的穩定性保障以及一些優化讓業務開發同學更舒服的開發;對于新着手的 BU,可能也需要在 midway-faas runtime、Ginkgo 機器、穩定性、一體化上花上時間來支援防止出現遺漏;

  • FaaS Runtime:這一塊是函數運作時很關鍵一趴,由集團Node團隊小夥伴這邊提供,目前版本可很好滿足業務使用;期間主要幫忙提供中間件調用案例 demo,提升工具鍊路體驗,以及文檔補充的工作;包括在運作時的一些 Bug 排查通知溝通的工作,讓底層是可靠的防止對業務産生影響。
  • 穩定性事項:目前對于 Serverless 最重要的一趴就是穩定性保障,不産生線上問題也是建設的底線(防止出現線上問題->Serverless 現在不穩定->重要業務不使用連環反應);包括在上線大業務前的壓測工作(驚訝一單 Pod 可承受 300qps 的通路!)、前期合作方的準備工作(擴容、評估)、代碼自身容災檢查、網關層面容災配置、監控接入等事項;由于目前飛豬側隻在張北有部署,後續需推動上雲業務必須多單元部署來提升穩定性;
  • 函數遷移到張北雲:和函數運作容器相關的就是我們的中間件 CSE 團隊了,目前 ASI 雲上叢集可用,逐漸下線原有老張北中心,期間完成飛豬側函遷移事項,包括白名單函數梳理、遷移、檢查、訂正、驗證、全部遷移,有趣的是通過此推動集團監控完成監控以及 Debug 能力互通;
  • Rax + FaaS 一體化研發:屬于未來雲端一體化中比較重要的一環,目前多方制定了 client、cloud 的目錄結構,完成飛豬網關模拟SDK、前端請求SDK打通網關開發和合并到主幹,在腳手架中加入對飛豬 Rax+Faas 一體建立支援,滿足全流程可跑通本地調試調用和統一研發平台的釋出工作;目前正在和飛豬側工程體系 Clam 打通對應流程,期待可讓業務側真正可友好上線一體化項目
飛豬 Serverless 體系從無到有,落地10餘個業務場景

業務場景 Serverless 化支援

說起 Serverless 技術建設,其中很大一趴是技術可以滿足業務的訴求,讓其在業務場景落地的過程中探索一種新的研發方式;

目前累計完成完成高鐵遊、釋出器、簽證 wifi、門票、任意門、周邊遊、收藏、poi、發現、找相似、泰坦超管、資源位管理(中背景一體化)、交通側搜尋(開發完成待上線)等業務近 22 個函數的 FaaS 化支援,14 個業務試點場景,同時在導購域内每天産生 1000W+ 次函數調用**;

通過 Serverless 前端同學具備了服務開發能力,可以比較好解決在接口開發、分工上面邊界問題,同時可釋放一定 java 和人力資源,節約機器運維人力。

從試點效果上來說,目前判斷 Serverless 體系适宜資料源合并、資料協定轉換、中間層及資料透傳的業務場景,能夠以更優雅的方式承接膠水層邏輯抹平雲與端之間的鴻溝,但同時目前在開發體驗、穩定性方面還需加強協作方的合作,共同推動基礎設施往前走。

後續規劃

飛豬 Serverless 體系從無到有,落地10餘個業務場景

展望

很慶幸目前 Serverless 建設在跟着阿裡共建發展以及業務試點推動下,逐漸由當時的喧嚣變得現在的穩定進行,同時目前可以做的事情還很多,歡迎進入 Serverless 的世界,同時更好的促進她的發展!

如果你也對Serverless感興趣,歡迎直接郵件溝通讨論[email protected]

飛豬 Serverless 體系從無到有,落地10餘個業務場景

關注「Alibaba F2E」

把握阿裡巴巴前端新動向

繼續閱讀