手機淘寶輕店業務 Serverless 研發模式升級實踐 一、前言 二、背景 三、研發模式升級 四、未來

簡介: 隨着 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 體系的基礎上,探索一體化研發模式的最佳提效實踐。

活動推薦

2021 年,Serverless 來啦!4 月 24 日(週六),阿里雲 Serverless Developer Meetup 即將亮相上海。我們邀請了來自阿里雲、飛豬、高德的技術專家,共同探討過去一年 Serverless 在實際生產中待解決問題及優秀經驗,披露 Serverless 在高德、飛豬以及其他企業的實戰過程,詳述 Serverless Devs 2.0,如何更有效解決 Serverless 應用開發的痛點。戳我立即報名!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章