手机淘宝轻店业务 Serverless 研发模式升级实践

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 我们在探索Serverless一体化研发模式的最佳提效实践。
作者 | 淘系-知曼

image.png
随着 Serverless 在业界各云平台落地,阿里内部Serverless研发平台、各种研发模式也在业务中逐步落地,如火如荼。在此契机下,我们启动了轻店Serverless研发模式升级战役,基于集团底层设施建设 上层技术体系,解决在淘系轻店业务场景下碰到的系列问题,并借此推动现有前后端协作模式转变。

背景

轻店业务是淘系新型业务,目前处于探索试错阶段,如何能以较低人力成本配合业务快速试错,是我们当前需要考虑的问题。Serverless重要的特点之一“only focus your business”。因此,拥抱Serverless,轻店业务势在必行。本篇主要介绍,Serverless技术在轻店前端团队如何落地,以及如何推动轻店研发模式升级,提升研发效率。在此基础上也探索前端职能转变成为应用开发的可能性。

研发模式升级

本文首先调研集团内外Serverless现状,结合自身业务特点做技术选型;随后在轻店域内进行业务落地,在落地过程中逐步落实以下能力:以sidecar&bottle作为底层支撑,以一体化研发模式结合公共服务层、原子能力层、基础SDK来提升研发效率,最后通过轻店标准研发链路来保障业务稳定性;最终形成轻店FaaS体系,初步实现研发模式提效升级。

技术现状

image.png
集团各BU过去一年里在Serverless领域做了很多工作,主要集中在,基础建设,研发模式,逻辑编排,稳定性建设、以及将FaaS链路打通并落地到B侧和C侧业务场景,如下图所示。各业务依赖的Serverless平台集中在C平台/F平台(PS:阿里内部Serverless平台)。

技术选型

当前集团Serverless平台和midway-faas团队深度合作,定制了基于阿拉丁FaaS方案,依托袋鼠为业务网关,承载请求分发的职责,并且有容灾,兜底等通用能力。袋鼠以天马体系(PS:指以统一模块规范为基础的搭建体系)为基础底座,但是轻店业务底层依赖装修体系。因此,我们需要重新选型实现基于轻店场景的FaaS解决方案。除此之外,轻店业务核心依赖各种中台服务。这些中台服务大部分是以富客户端(PS:指集成了本地能力的二方包)形式提供,如何在nodeFaaS体系中使用富客户端,是我们技术方案需要考虑的重点。下面是C平台方案(PS:阿里内部的Serverless平台) 和 G平台方案(PS:阿里内部的Serverless平台)的链路对比图。
image.png
其中, 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所示。
image.png
基于上述方案,轻店FaaS实现了满足轻店业务场景的能力图谱。中间件层面主要集中在消息队列(metaQ),运维(switch, diamond),服务(HSF,mtop, http),缓存(tair, redis),数据库(云RDS),调度(schedulerx)等。中台能力集中在商品,商户,门店,券,标,店铺,UIC等。随着业务发展,在逐步丰富中。
image.png

玳瑁FaaS能力

玳瑁在运行态,以G平台和 node rutime 为底层平台,通过原子层能力实现业务FaaS函数,并在公共层统一提供数据聚合,兜底等能力。在研发态,基于统一研发平台和小程序端实现轻店一体化研发链路,包含统一构建发布流程,UI配置化映射,FaaS函数自动补全等。如下图所示。
image.png

公共层

api请求过来,首先经过公共层(代号:羚羊)。公共层主要实现了轻店域内的基础通用能力。比如,自定义投放能力,兜底能力,聚合能力,配置能力。其中,自定义投放能力是打通了阿X丁(PS:阿X丁指集团内部通用投放平台),业务可以自定义配置定投规则项,比如按商家,人群,区域,业务维度定投数据;兜底能力,针对需要保障高可用的C端接口,即使接口挂了也可以通过备份数据进行兜底,让消费者对服务异常无感知;聚合能力是将轻店页面装修数据 和模块内部数据统一下发,提高页面性能,防止页面抖动。并且基于统一下发服务的基础上,实现页面级别,接口级别的兜底,模块插件灰度能力。

原子能力层

原子能力层,是沉淀轻店业务场景的各种中台能力封装(门店模型,商品模型,券模型...)。基于这些原子能力,轻店FaaS统一收敛外部依赖,业务可以减少外部对接成本,实现业务功能,同时也为映射补全能力提供基础。

FaaS-SDK

为了提升效率,轻店抽象出FaaS-SDK,包含各平台适配,缓存能力,日志规范,锁能力,数据库封装,通用工具等等。其中,平台场景的适配包含集团内各severless平台,让开发者对平台无感知,只需要关注业务逻辑本身;轻店体系下提供多级缓存能力,对RT要求高的高可用场景,提供技术支撑;通用日志规范,对FaaS场景的INFO,ERROR日志进行格式规范,并封装成独立包供业务使用。

一体化研发模式

在公共层能力层,原子层能力,SDK ,以及sidecar & bottle的基础上,我们打通小程序模块和FaaS研发链路,实现轻店一体化研发模式。

一体化研发模式是指,基于端开发小程序模块,同时在同一个项目中实现FaaS能力。在前端代码中直接引用FaaS代码作为函数调用,无需通过请求调用;并且在整个研发链路中,实现两端同步创建&发布。在轻店场景下,这种研发模式节省了前后端沟通联调成本,大大提升研发效率。

稳定性

最后,为了保障业务的可靠性和稳定性,轻店定义了 轻店FaaS的标准研发链路。从研发生命周期(研发态,待上线,上线中,上线后)各个阶段配置不同的措施来保障业务稳定性。如下图所示。
image.png
至此,轻店FaaS体系已介绍完,以sidecar支撑底层能力,一体化研发模式结合公共服务层、原子能力层,基础SDK来提升研发效率,最后通过标准研发链路来保障稳定性。
通过轻店FaaS体系支撑轻店业务,前端从前到后cover完整业务,后端同学更聚焦在业务中台能力建设。前端职能逐步转变,从前端到全栈,从资源到业务合伙人。对整体业务而言,以更少的协同沟通成本,更少的联调成本,让团队整体效率提升。自此,轻店团队初步实现研发模式升级。

业务落地现状

当前我们轻店FaaS,在多个轻店域内业务落地。
image.png

未来

我们继续在轻店FaaS体系的基础上,探索一体化研发模式的最佳提效实践。


image.png

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
27天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
74 1
|
2月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
59 3
|
3月前
|
运维 Kubernetes 前端开发
拥抱Knative, 合思加速Serverless化演进实践
合思信息基于阿里云容器服务Knative, 实现Serverless化演进的最佳实践。
拥抱Knative, 合思加速Serverless化演进实践
|
3月前
|
人工智能 架构师 容灾
函数计算 FC:首发 GPU 极速模式,更弹性、更降本
2024 云栖大会上,函数计算 FC 为 AI 加码,首发 GPU 极速模式,让 GPU 可以更弹性、更便宜。
237 14
|
4月前
|
弹性计算 运维 Kubernetes
Serverless 应用引擎 SAE 助力袋拉拉研发提效 70%
机汽猫的主要业务是通过部署 IoT 设备解决医院耗材管理问题。面对业务的潮汐特性带来的资源预留难题与运维压力,该公司选择将所有应用部署在阿里云 Serverless 应用引擎 SAE上。SAE 提供的微服务治理、自适应弹性伸缩及平台工程化能力,助力机汽猫研发效率提升了 70%。
|
4月前
|
弹性计算 关系型数据库 Serverless
函数计算驱动多媒体文件处理:高效、稳定与成本优化实践
本次测评的解决方案《告别资源瓶颈,函数计算驱动多媒体文件处理》展示了如何利用阿里云函数计算高效处理多媒体文件。文档结构清晰、内容详实,适合新客户参考。方案提供了一键部署与手动部署两种方式,前者简便快捷,后者灵活性高但步骤较多。通过部署,用户可体验到基于函数计算的文件处理服务,显著提升处理效率和系统稳定性。此外,测评还对比了应用内处理文件与函数计算处理文件的不同,突出了函数计算在资源管理和成本控制方面的优势。
22717 19
|
4月前
|
弹性计算 Kubernetes Serverless
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
Kubernetes 的架构问题之Serverless Container中不支持特权模式的问题如何解决
94 6
|
4月前
|
运维 Kubernetes Serverless
Serverless Argo Workflows荣获信通院标杆实践案例,引领大规模离线任务处理新方法
阿里云容器服务Serverless Argo Workflows大规模离线计算工作流平台荣获2024信通院Serveless实践标杆案例。本文介绍其应用场景、平台特性以及领域实践。
|
4月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
71 0
|
4月前
|
运维 Serverless 对象存储
函数计算产品使用问题之如何使用Flask框架支持Stream模式
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章

相关产品

  • 函数计算