天天看點

手機淘寶輕店業務 Serverless 研發模式更新實踐

作者 | 淘系-知曼
手機淘寶輕店業務 Serverless 研發模式更新實踐

随着 Serverless 在業界各雲平台落地,阿裡内部Serverless研發平台、各種研發模式也在業務中逐漸落地,如火如荼。在此契機下,我們啟動了輕店Serverless研發模式更新戰役,基于集團底層設施建設 上層技術體系,解決在淘系輕店業務場景下碰到的系列問題,并借此推動現有前後端協作模式轉變。

背景

輕店業務是淘系新型業務,目前處于探索試錯階段,如何能以較低人力成本配合業務快速試錯,是我們目前需要考慮的問題。Serverless重要的特點之一“only focus your business”。是以,擁抱Serverless,輕店業務勢在必行。本篇主要介紹,Serverless技術在輕店前端團隊如何落地,以及如何推動輕店研發模式更新,提升研發效率。在此基礎上也探索前端職能轉變成為應用開發的可能性。

研發模式更新

本文首先調研集團内外Serverless現狀,結合自身業務特點做技術選型;随後在輕店域内進行業務落地,在落地過程中逐漸落實以下能力:以sidecar&bottle作為底層支撐,以一體化研發模式結合公共服務層、原子能力層、基礎SDK來提升研發效率,最後通過輕店标準研發鍊路來保障業務穩定性;最終形成輕店FaaS體系,初步實作研發模式提效更新。

技術現狀

手機淘寶輕店業務 Serverless 研發模式更新實踐

集團各BU過去一年裡在Serverless領域做了很多工作,主要集中在,基礎建設,研發模式,邏輯編排,穩定性建設、以及将FaaS鍊路打通并落地到B側和C側業務場景,如下圖所示。各業務依賴的Serverless平台集中在C平台/F平台(PS:阿裡内部Serverless平台)。

技術選型

目前集團Serverless平台和midway-faas團隊深度合作,定制了基于阿拉丁FaaS方案,依托袋鼠為業務網關,承載請求分發的職責,并且有容災,兜底等通用能力。袋鼠以天馬體系(PS:指以統一子產品規範為基礎的搭建體系)為基礎底座,但是輕店業務底層依賴裝修體系。是以,我們需要重新選型實作基于輕店場景的FaaS解決方案。除此之外,輕店業務核心依賴各種中台服務。這些中台服務大部分是以富用戶端(PS:指內建了本地能力的二方包)形式提供,如何在nodeFaaS體系中使用富用戶端,是我們技術方案需要考慮的重點。下面是C平台方案(PS:阿裡内部的Serverless平台) 和 G平台方案(PS:阿裡内部的Serverless平台)的鍊路對比圖。

手機淘寶輕店業務 Serverless 研發模式更新實踐

其中, G平台鍊路有bottle能力提供富用戶端方案,整體系統鍊路層級少,性能更優,是以我們最終技術選型為G平台。作為業務方,和各平台一起推動&打通G平台方案在前端FaaS場景落地。

輕店 FaaS 體系

随着業務落地,能力沉澱,輕店FaaS逐成體系。

輕店FaaS(代号:玳瑁),有基礎能力層,包含接口聚合,資料映射,函數兜底,灰階等。原子服務層,沉澱了輕店業務場景的各種中台能力封裝,上層提供基礎SDK,将各種能力直接給到業務使用。輕店FaaS在業務落地時,和前端子產品組成輕店的商業SaaS能力,通過解決方案将商業能力組合,服務輕店各種業務場景。

SideCar & bottle

輕店業務核心依賴中台和中間件能力。是以,首先要解決的問題是,在nodeFaaS技術體系下如何調用富用戶端和中間件能力。

輕店與G平台、midway FaaS團隊一起推進基于G平台開發node FaaS能力。G serverless平台中,一個pod上面有兩個容器,sidecar容器主要負責請求發現,分發,協定解析,提供各種服務能力(中間件,中台服務);function 容器運作node runtime 并且在上面跑業務faas代碼。容器之間通過GRPC進行通信。最終,業務代碼可以通過bottle-SDK調用富用戶端/中間件能力。如圖1所示。

手機淘寶輕店業務 Serverless 研發模式更新實踐

基于上述方案,輕店FaaS實作了滿足輕店業務場景的能力圖譜。中間件層面主要集中在消息隊列(metaQ),運維(switch, diamond),服務(HSF,mtop, http),緩存(tair, redis),資料庫(雲RDS),排程(schedulerx)等。中台能力集中在商品,商戶,門店,券,标,店鋪,UIC等。随着業務發展,在逐漸豐富中。

手機淘寶輕店業務 Serverless 研發模式更新實踐

玳瑁FaaS能力

玳瑁在運作态,以G平台和 node rutime 為底層平台,通過原子層能力實作業務FaaS函數,并在公共層統一提供資料聚合,兜底等能力。在研發态,基于統一研發平台和小程式端實作輕店一體化研發鍊路,包含統一建構釋出流程,UI配置化映射,FaaS函數自動補全等。如下圖所示。

手機淘寶輕店業務 Serverless 研發模式更新實踐

公共層

api請求過來,首先經過公共層(代号:羚羊)。公共層主要實作了輕店域内的基礎通用能力。比如,自定義投放能力,兜底能力,聚合能力,配置能力。其中,自定義投放能力是打通了阿X丁(PS:阿X丁指集團内部通用投放平台),業務可以自定義配置定投規則項,比如按商家,人群,區域,業務次元定投資料;兜底能力,針對需要保障高可用的C端接口,即使接口挂了也可以通過備份資料進行兜底,讓消費者對服務異常無感覺;聚合能力是将輕店頁面裝修資料 和子產品内部資料統一下發,提高頁面性能,防止頁面抖動。并且基于統一下發服務的基礎上,實作頁面級别,接口級别的兜底,子產品插件灰階能力。

原子能力層

原子能力層,是沉澱輕店業務場景的各種中台能力封裝(門店模型,商品模型,券模型...)。基于這些原子能力,輕店FaaS統一收斂外部依賴,業務可以減少外部對接成本,實作業務功能,同時也為映射補全能力提供基礎。

FaaS-SDK

為了提升效率,輕店抽象出FaaS-SDK,包含各平台适配,緩存能力,日志規範,鎖能力,資料庫封裝,通用工具等等。其中,平台場景的适配包含集團内各severless平台,讓開發者對平台無感覺,隻需要關注業務邏輯本身;輕店體系下提供多級緩存能力,對RT要求高的高可用場景,提供技術支撐;通用日志規範,對FaaS場景的INFO,ERROR日志進行格式規範,并封裝成獨立包供業務使用。

一體化研發模式

在公共層能力層,原子層能力,SDK ,以及sidecar & bottle的基礎上,我們打通小程式子產品和FaaS研發鍊路,實作輕店一體化研發模式。

一體化研發模式是指,基于端開發小程式子產品,同時在同一個項目中實作FaaS能力。在前端代碼中直接引用FaaS代碼作為函數調用,無需通過請求調用;并且在整個研發鍊路中,實作兩端同步建立&釋出。在輕店場景下,這種研發模式節省了前後端溝通聯調成本,大大提升研發效率。

穩定性

最後,為了保障業務的可靠性和穩定性,輕店定義了 輕店FaaS的标準研發鍊路。從研發生命周期(研發态,待上線,上線中,上線後)各個階段配置不同的措施來保障業務穩定性。如下圖所示。

手機淘寶輕店業務 Serverless 研發模式更新實踐

至此,輕店FaaS體系已介紹完,以sidecar支撐底層能力,一體化研發模式結合公共服務層、原子能力層,基礎SDK來提升研發效率,最後通過标準研發鍊路來保障穩定性。

通過輕店FaaS體系支撐輕店業務,前端從前到後cover完整業務,後端同學更聚焦在業務中台能力建設。前端職能逐漸轉變,從前端到全棧,從資源到業務合夥人。對整體業務而言,以更少的協同溝通成本,更少的聯調成本,讓團隊整體效率提升。自此,輕店團隊初步實作研發模式更新。

業務落地現狀

目前我們輕店FaaS,在多個輕店域内業務落地。

手機淘寶輕店業務 Serverless 研發模式更新實踐

未來

我們繼續在輕店FaaS體系的基礎上,探索一體化研發模式的最佳提效實踐。

手機淘寶輕店業務 Serverless 研發模式更新實踐