簡介: 隨着 Serverless 在業界各雲平台落地,阿里內部 Serverless 研發平台、各種研發模式也在業務中逐步落地,如火如荼。在此契機下,淘系團隊啟動了輕店 Serverless 研發模式升級戰役,基於阿里集團底層設施建設、上層技術體系,解決在淘系輕店業務場景下碰到的系列問題,並借此推動現有前后端協作模式轉變。
一、前言
隨着 Serverless 在業界各雲平台落地,阿里內部 Serverless 研發平台、各種研發模式也在業務中逐步落地,如火如荼。在此契機下,淘系團隊啟動了輕店 Serverless 研發模式升級戰役,基於阿里集團底層設施建設、上層技術體系,解決在淘系輕店業務場景下碰到的系列問題,並借此推動現有前后端協作模式轉變。
二、背景
輕店業務是淘系新型業務,目前處於探索試錯階段,如何能以較低人力成本配合業務快速試錯,是團隊當前需要考慮的問題。Serverless 重要的特點之一“only focus your business”。因此,擁抱 Serverless,輕店業務勢在必行。本篇主要介紹,Serverless 技術在輕店前端團隊如何落地,以及如何推動輕店研發模式升級,提升研發效率。在此基礎上,同時探索前端職能轉變成為應用開發的可能性。
三、研發模式升級
本文首先調研阿里集團內外 Serverless 現狀,結合自身業務特點做技術選型;隨后在輕店域內進行業務落地,在落地過程中逐步落實以下能力:以 sidecar&bottle 作為底層支撐,以一體化研發模式結合公共服務層、原子能力層、基礎 SDK 來提升研發效率;最后通過輕店標准研發鏈路來保障業務穩定性;最終形成輕店 FaaS 體系,初步實現研發模式提效升級。
1. 技術現狀
阿里集團各 BU 過去一年里在 Serverless 領域做了很多工作,主要集中在基礎建設、研發模式、邏輯編排、穩定性建設、以及將 faas 鏈路打通並落地到 B 側和 C 側業務場景,如下圖所示。各業務依賴的 Serverless 平台集中在 C 平台 / F 平台(PS:阿里內部 Serverless 平台)。
2. 技術選型
當前阿里集團 Serverless 平台和 midway-faas 團隊深度合作,定制了基於阿拉丁 FaaS 方案,依托袋鼠為業務網關,承載請求分發的職責,並且有容災、兜底等通用能力。袋鼠以天馬體系(PS:指以統一模塊規范為基礎的搭建體系)為基礎底座,但是輕店業務底層依賴裝修體系。因此,我們需要重新選型實現基於輕店場景的 faas 解決方案。除此之外,輕店業務核心依賴各種中台服務。這些中台服務大部分是以富客戶端(PS:指集成了本地能力的二方包)形式提供,如何在 nodeFaaS 體系中使用富客戶端,是我們技術方案需要考慮的重點。下面是 C 平台方案(PS:阿里內部的 Serverless 平台) 和 G 平台方案(PS:阿里內部的 Serverless 平台)的鏈路對比圖。
其中, G 平台鏈路有 bottle 能力提供富客戶端方案,整體系統鏈路層級少,性能更優,因此我們最終技術選型為 G 平台。作為業務方,和各平台一起推動&打通 G 平台方案在前端 FaaS 場景落地。
3. 輕店 FaaS 體系
隨着業務落地,能力沉淀,輕店 FaaS 逐成體系。
輕店 FaaS(代號:玳瑁),有基礎能力層,包含接口聚合、數據映射、函數兜底、灰度等。原子服務層,沉淀了輕店業務場景的各種中台能力封裝,上層提供基礎 SDK,將各種能力直接給到業務使用。輕店 FaaS 在業務落地時,和前端模塊組成輕店的商業 SaaS 能力,通過解決方案將商業能力組合,服務輕店各種業務場景。
1)SideCar & bottle
輕店業務核心依賴中台和中間件能力。因此,首先要解決的問題是,在 nodeFaaS 技術體系下如何調用富客戶端和中間件能力。
輕店與 G 平台、midway FaaS 團隊一起推進基於 G 平台開發 node FaaS 能力。G serverless 平台中,一個 pod 上面有兩個容器,sidecar 容器主要負責請求發現、分發、協議解析、提供各種服務能力(中間件、中台服務);function 容器運行 node runtime 並且在上面跑業務 faas 代碼。容器之間通過 GRPC 進行通信。最終,業務代碼可以通過 bottle-SDK 調用富客戶端/中間件能力。如下圖所示:
基於上述方案,輕店 FaaS 實現了滿足輕店業務場景的能力圖譜。中間件層面主要集中在消息隊列(metaQ)、運維(switch、diamond)、服務(HSF、mtop、http)、緩存(tair、redis)、數據庫(雲 RDS)、調度(schedulerx)等。中台能力集中在商品、商戶、門店、券、標、店鋪、UIC 等。隨着業務發展,在逐步豐富中。
2)玳瑁 FaaS 能力
玳瑁在運行態,以 G 平台和 node rutime 為底層平台,通過原子層能力實現業務 Faas 函數,並在公共層統一提供數據聚合、兜底等能力。在研發態,基於統一研發平台和小程序端實現輕店一體化研發鏈路,包含統一構建發布流程、UI 配置化映射、FaaS 函數自動補全等。如下圖所示:
公共層
api 請求過來,首先經過公共層(代號:羚羊)。公共層主要實現了輕店域內的基礎通用能力。比如,自定義投放能力、兜底能力、聚合能力、配置能力。其中:
- 自定義投放能力是打通了阿X丁(PS:阿X丁指阿里集團內部通用投放平台),業務可以自定義配置定投規則項,比如按商家、人群、區域、業務維度定投數據;
- 兜底能力,針對需要保障高可用的 C 端接口,即使接口掛了也可以通過備份數據進行兜底,讓消費者對服務異常無感知;
- 聚合能力是將輕店頁面裝修數據和模塊內部數據統一下發,提高頁面性能,防止頁面抖動。並且基於統一下發服務的基礎上,實現頁面級別、接口級別的兜底,模塊插件灰度能力。
原子能力層
原子能力層,是沉淀輕店業務場景的各種中台能力封裝(門店模型、商品模型、券模型……)。基於這些原子能力,輕店 FaaS 統一收斂外部依賴,業務可以減少外部對接成本,實現業務功能,同時也為映射補全能力提供基礎。
FaaS-SDK
為了提升效率,輕店抽象出 FaaS-SDK,包含各平台適配、緩存能力、日志規范、鎖能力、數據庫封裝、通用工具等等。其中:
- 平台場景的適配包含阿里集團內各 Severless 平台,讓開發者對平台無感知,只需要關注業務邏輯本身;
- 輕店體系下提供多級緩存能力,對 RT 要求高的高可用場景,提供技術支撐;
- 通用日志規范,對 FaaS 場景的 INFO、ERROR 日志進行格式規范,並封裝成獨立包供業務使用。
一體化研發模式
在公共層能力層、原子層能力、SDK 、以及 sidecar & bottle 的基礎上,我們打通小程序模塊和 FaaS 研發鏈路,實現輕店一體化研發模式。
一體化研發模式是指,基於端開發小程序模塊,同時在同一個項目中實現 FaaS 能力。在前端代碼中直接引用 FaaS 代碼作為函數調用,無需通過請求調用;並且在整個研發鏈路中,實現兩端同步創建&發布。在輕店場景下,這種研發模式節省了前后端溝通聯調成本,大大提升研發效率。
穩定性
最后,為了保障業務的可靠性和穩定性,輕店定義了輕店 FaaS 的標准研發鏈路。從研發生命周期(研發態、待上線、上線中、上線后)各個階段配置不同的措施來保障業務穩定性。如下圖所示:
至此,輕店 FaaS 體系已介紹完,以 sidecar 支撐底層能力,一體化研發模式結合公共服務層、原子能力層、基礎 SDK 來提升研發效率,最后通過標准研發鏈路來保障穩定性。
通過輕店 FaaS 體系支撐輕店業務,前端從前到后 cover 完整業務,后端同學更聚焦在業務中台能力建設。前端職能逐步轉變,從前端到全棧,從資源到業務合伙人。對整體業務而言,以更少的協同溝通成本,更少的聯調成本,讓團隊整體效率提升。自此,輕店團隊初步實現研發模式升級。
4. 業務落地現狀
當前淘系輕店 FaaS,已在多個輕店域內業務落地。
四、未來
未來,淘系團隊將繼續在輕店 faas 體系的基礎上,探索一體化研發模式的最佳提效實踐。
本文為阿里雲原創內容,未經允許不得轉載。