手机淘宝轻店业务 Serverless 研发模式升级实践
一、前言
隨著 Serverless 在業(yè)界各云平臺(tái)落地,阿里內(nèi)部 Serverless 研發(fā)平臺(tái)、各種研發(fā)模式也在業(yè)務(wù)中逐步落地,如火如荼。在此契機(jī)下,淘系團(tuán)隊(duì)啟動(dòng)了輕店 Serverless 研發(fā)模式升級(jí)戰(zhàn)役,基于阿里集團(tuán)底層設(shè)施建設(shè)、上層技術(shù)體系,解決在淘系輕店業(yè)務(wù)場(chǎng)景下碰到的系列問(wèn)題,并借此推動(dòng)現(xiàn)有前后端協(xié)作模式轉(zhuǎn)變。
二、背景
輕店業(yè)務(wù)是淘系新型業(yè)務(wù),目前處于探索試錯(cuò)階段,如何能以較低人力成本配合業(yè)務(wù)快速試錯(cuò),是團(tuán)隊(duì)當(dāng)前需要考慮的問(wèn)題。Serverless 重要的特點(diǎn)之一“only focus your business”。因此,擁抱 Serverless,輕店業(yè)務(wù)勢(shì)在必行。本篇主要介紹,Serverless 技術(shù)在輕店前端團(tuán)隊(duì)如何落地,以及如何推動(dòng)輕店研發(fā)模式升級(jí),提升研發(fā)效率。在此基礎(chǔ)上,同時(shí)探索前端職能轉(zhuǎn)變成為應(yīng)用開(kāi)發(fā)的可能性。
三、研發(fā)模式升級(jí)
本文首先調(diào)研阿里集團(tuán)內(nèi)外 Serverless 現(xiàn)狀,結(jié)合自身業(yè)務(wù)特點(diǎn)做技術(shù)選型;隨后在輕店域內(nèi)進(jìn)行業(yè)務(wù)落地,在落地過(guò)程中逐步落實(shí)以下能力:以 sidecar&bottle 作為底層支撐,以一體化研發(fā)模式結(jié)合公共服務(wù)層、原子能力層、基礎(chǔ) SDK 來(lái)提升研發(fā)效率;最后通過(guò)輕店標(biāo)準(zhǔn)研發(fā)鏈路來(lái)保障業(yè)務(wù)穩(wěn)定性;最終形成輕店 FaaS 體系,初步實(shí)現(xiàn)研發(fā)模式提效升級(jí)。
1. 技術(shù)現(xiàn)狀
阿里集團(tuán)各 BU 過(guò)去一年里在 Serverless 領(lǐng)域做了很多工作,主要集中在基礎(chǔ)建設(shè)、研發(fā)模式、邏輯編排、穩(wěn)定性建設(shè)、以及將 faas 鏈路打通并落地到 B 側(cè)和 C 側(cè)業(yè)務(wù)場(chǎng)景,如下圖所示。各業(yè)務(wù)依賴(lài)的 Serverless 平臺(tái)集中在 C 平臺(tái) / F 平臺(tái)(PS:阿里內(nèi)部 Serverless 平臺(tái))。
2. 技術(shù)選型
當(dāng)前阿里集團(tuán) Serverless 平臺(tái)和 midway-faas 團(tuán)隊(duì)深度合作,定制了基于阿拉丁 FaaS 方案,依托袋鼠為業(yè)務(wù)網(wǎng)關(guān),承載請(qǐng)求分發(fā)的職責(zé),并且有容災(zāi)、兜底等通用能力。袋鼠以天馬體系(PS:指以統(tǒng)一模塊規(guī)范為基礎(chǔ)的搭建體系)為基礎(chǔ)底座,但是輕店業(yè)務(wù)底層依賴(lài)裝修體系。因此,我們需要重新選型實(shí)現(xiàn)基于輕店場(chǎng)景的 faas 解決方案。除此之外,輕店業(yè)務(wù)核心依賴(lài)各種中臺(tái)服務(wù)。這些中臺(tái)服務(wù)大部分是以富客戶(hù)端(PS:指集成了本地能力的二方包)形式提供,如何在 nodeFaaS 體系中使用富客戶(hù)端,是我們技術(shù)方案需要考慮的重點(diǎn)。下面是 C 平臺(tái)方案(PS:阿里內(nèi)部的 Serverless 平臺(tái)) 和 G 平臺(tái)方案(PS:阿里內(nèi)部的 Serverless 平臺(tái))的鏈路對(duì)比圖。
其中, G 平臺(tái)鏈路有 bottle 能力提供富客戶(hù)端方案,整體系統(tǒng)鏈路層級(jí)少,性能更優(yōu),因此我們最終技術(shù)選型為 G 平臺(tái)。作為業(yè)務(wù)方,和各平臺(tái)一起推動(dòng)&打通 G 平臺(tái)方案在前端 FaaS 場(chǎng)景落地。
3. 輕店 FaaS 體系
隨著業(yè)務(wù)落地,能力沉淀,輕店 FaaS 逐成體系。
輕店 FaaS(代號(hào):玳瑁),有基礎(chǔ)能力層,包含接口聚合、數(shù)據(jù)映射、函數(shù)兜底、灰度等。原子服務(wù)層,沉淀了輕店業(yè)務(wù)場(chǎng)景的各種中臺(tái)能力封裝,上層提供基礎(chǔ) SDK,將各種能力直接給到業(yè)務(wù)使用。輕店 FaaS 在業(yè)務(wù)落地時(shí),和前端模塊組成輕店的商業(yè) SaaS 能力,通過(guò)解決方案將商業(yè)能力組合,服務(wù)輕店各種業(yè)務(wù)場(chǎng)景。
1)SideCar & bottle
輕店業(yè)務(wù)核心依賴(lài)中臺(tái)和中間件能力。因此,首先要解決的問(wèn)題是,在 nodeFaaS 技術(shù)體系下如何調(diào)用富客戶(hù)端和中間件能力。
輕店與 G 平臺(tái)、midway FaaS 團(tuán)隊(duì)一起推進(jìn)基于 G 平臺(tái)開(kāi)發(fā) node FaaS 能力。G serverless 平臺(tái)中,一個(gè) pod 上面有兩個(gè)容器,sidecar 容器主要負(fù)責(zé)請(qǐng)求發(fā)現(xiàn)、分發(fā)、協(xié)議解析、提供各種服務(wù)能力(中間件、中臺(tái)服務(wù));function 容器運(yùn)行 node runtime 并且在上面跑業(yè)務(wù) faas 代碼。容器之間通過(guò) GRPC 進(jìn)行通信。最終,業(yè)務(wù)代碼可以通過(guò) bottle-SDK 調(diào)用富客戶(hù)端/中間件能力。如下圖所示:
基于上述方案,輕店 FaaS 實(shí)現(xiàn)了滿(mǎn)足輕店業(yè)務(wù)場(chǎng)景的能力圖譜。中間件層面主要集中在消息隊(duì)列(metaQ)、運(yùn)維(switch、diamond)、服務(wù)(HSF、mtop、http)、緩存(tair、redis)、數(shù)據(jù)庫(kù)(云 RDS)、調(diào)度(schedulerx)等。中臺(tái)能力集中在商品、商戶(hù)、門(mén)店、券、標(biāo)、店鋪、UIC 等。隨著業(yè)務(wù)發(fā)展,在逐步豐富中。
2)玳瑁 FaaS 能力
玳瑁在運(yùn)行態(tài),以 G 平臺(tái)和 node rutime 為底層平臺(tái),通過(guò)原子層能力實(shí)現(xiàn)業(yè)務(wù) Faas 函數(shù),并在公共層統(tǒng)一提供數(shù)據(jù)聚合、兜底等能力。在研發(fā)態(tài),基于統(tǒng)一研發(fā)平臺(tái)和小程序端實(shí)現(xiàn)輕店一體化研發(fā)鏈路,包含統(tǒng)一構(gòu)建發(fā)布流程、UI 配置化映射、FaaS 函數(shù)自動(dòng)補(bǔ)全等。如下圖所示:
公共層
api 請(qǐng)求過(guò)來(lái),首先經(jīng)過(guò)公共層(代號(hào):羚羊)。公共層主要實(shí)現(xiàn)了輕店域內(nèi)的基礎(chǔ)通用能力。比如,自定義投放能力、兜底能力、聚合能力、配置能力。其中:
- 自定義投放能力是打通了阿X丁(PS:阿X丁指阿里集團(tuán)內(nèi)部通用投放平臺(tái)),業(yè)務(wù)可以自定義配置定投規(guī)則項(xiàng),比如按商家、人群、區(qū)域、業(yè)務(wù)維度定投數(shù)據(jù);
- 兜底能力,針對(duì)需要保障高可用的 C 端接口,即使接口掛了也可以通過(guò)備份數(shù)據(jù)進(jìn)行兜底,讓消費(fèi)者對(duì)服務(wù)異常無(wú)感知;
- 聚合能力是將輕店頁(yè)面裝修數(shù)據(jù)和模塊內(nèi)部數(shù)據(jù)統(tǒng)一下發(fā),提高頁(yè)面性能,防止頁(yè)面抖動(dòng)。并且基于統(tǒng)一下發(fā)服務(wù)的基礎(chǔ)上,實(shí)現(xiàn)頁(yè)面級(jí)別、接口級(jí)別的兜底,模塊插件灰度能力。
原子能力層
原子能力層,是沉淀輕店業(yè)務(wù)場(chǎng)景的各種中臺(tái)能力封裝(門(mén)店模型、商品模型、券模型……)?;谶@些原子能力,輕店 FaaS 統(tǒng)一收斂外部依賴(lài),業(yè)務(wù)可以減少外部對(duì)接成本,實(shí)現(xiàn)業(yè)務(wù)功能,同時(shí)也為映射補(bǔ)全能力提供基礎(chǔ)。
FaaS-SDK
為了提升效率,輕店抽象出 FaaS-SDK,包含各平臺(tái)適配、緩存能力、日志規(guī)范、鎖能力、數(shù)據(jù)庫(kù)封裝、通用工具等等。其中:
- 平臺(tái)場(chǎng)景的適配包含阿里集團(tuán)內(nèi)各 Severless 平臺(tái),讓開(kāi)發(fā)者對(duì)平臺(tái)無(wú)感知,只需要關(guān)注業(yè)務(wù)邏輯本身;
- 輕店體系下提供多級(jí)緩存能力,對(duì) RT 要求高的高可用場(chǎng)景,提供技術(shù)支撐;
- 通用日志規(guī)范,對(duì) FaaS 場(chǎng)景的 INFO、ERROR 日志進(jìn)行格式規(guī)范,并封裝成獨(dú)立包供業(yè)務(wù)使用。
一體化研發(fā)模式
在公共層能力層、原子層能力、SDK 、以及 sidecar & bottle 的基礎(chǔ)上,我們打通小程序模塊和 FaaS 研發(fā)鏈路,實(shí)現(xiàn)輕店一體化研發(fā)模式。
一體化研發(fā)模式是指,基于端開(kāi)發(fā)小程序模塊,同時(shí)在同一個(gè)項(xiàng)目中實(shí)現(xiàn) FaaS 能力。在前端代碼中直接引用 FaaS 代碼作為函數(shù)調(diào)用,無(wú)需通過(guò)請(qǐng)求調(diào)用;并且在整個(gè)研發(fā)鏈路中,實(shí)現(xiàn)兩端同步創(chuàng)建&發(fā)布。在輕店場(chǎng)景下,這種研發(fā)模式節(jié)省了前后端溝通聯(lián)調(diào)成本,大大提升研發(fā)效率。
穩(wěn)定性
最后,為了保障業(yè)務(wù)的可靠性和穩(wěn)定性,輕店定義了輕店 FaaS 的標(biāo)準(zhǔn)研發(fā)鏈路。從研發(fā)生命周期(研發(fā)態(tài)、待上線(xiàn)、上線(xiàn)中、上線(xiàn)后)各個(gè)階段配置不同的措施來(lái)保障業(yè)務(wù)穩(wěn)定性。如下圖所示:
至此,輕店 FaaS 體系已介紹完,以 sidecar 支撐底層能力,一體化研發(fā)模式結(jié)合公共服務(wù)層、原子能力層、基礎(chǔ) SDK 來(lái)提升研發(fā)效率,最后通過(guò)標(biāo)準(zhǔn)研發(fā)鏈路來(lái)保障穩(wěn)定性。
通過(guò)輕店 FaaS 體系支撐輕店業(yè)務(wù),前端從前到后 cover 完整業(yè)務(wù),后端同學(xué)更聚焦在業(yè)務(wù)中臺(tái)能力建設(shè)。前端職能逐步轉(zhuǎn)變,從前端到全棧,從資源到業(yè)務(wù)合伙人。對(duì)整體業(yè)務(wù)而言,以更少的協(xié)同溝通成本,更少的聯(lián)調(diào)成本,讓團(tuán)隊(duì)整體效率提升。自此,輕店團(tuán)隊(duì)初步實(shí)現(xiàn)研發(fā)模式升級(jí)。
4. 業(yè)務(wù)落地現(xiàn)狀
當(dāng)前淘系輕店 FaaS,已在多個(gè)輕店域內(nèi)業(yè)務(wù)落地。
四、未來(lái)
未來(lái),淘系團(tuán)隊(duì)將繼續(xù)在輕店 faas 體系的基礎(chǔ)上,探索一體化研發(fā)模式的最佳提效實(shí)踐。
活動(dòng)推薦
2021 年,Serverless 來(lái)啦!4 月 24 日(周六),阿里云 Serverless Developer Meetup 即將亮相上海。我們邀請(qǐng)了來(lái)自阿里云、飛豬、高德的技術(shù)專(zhuān)家,共同探討過(guò)去一年 Serverless 在實(shí)際生產(chǎn)中待解決問(wèn)題及優(yōu)秀經(jīng)驗(yàn),披露 Serverless 在高德、飛豬以及其他企業(yè)的實(shí)戰(zhàn)過(guò)程,詳述 Serverless Devs 2.0,如何更有效解決 Serverless 應(yīng)用開(kāi)發(fā)的痛點(diǎn)。戳我立即報(bào)名!
原文鏈接:https://developer.aliyun.com/article/783687?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶(hù)自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶(hù)服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫(xiě)侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的手机淘宝轻店业务 Serverless 研发模式升级实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 会议更流畅,表情更生动!视频生成编码 V
- 下一篇: 走完线上 BUG 定位最后一公里