高德 Serverless 落地实践

简介: FaaS在高德复杂场景如何落地?

为什么选择 Serverless


image.png

早期,高德将所有资源逻辑都置于因此它是一个重端App。它在端上依赖于厂商,更新时涉及到发版。业务变化快,但迭代很慢,迭代生命周期长,因而导致用户体验受损代码堆积量很大时,测试成本非常高。因此,很小的改动会引起很多大的变化。因此,客户端瘦身迫在眉睫。


此外,低电量和端云一体化也是大势所趋。最终,为了加速迭代,强化用户体验,让出行变得更加美好,我们决定对架构进行调整。


image.png

Serverless的第一个特点为环境统一早期的容器化硬隔离,而硬隔离带来的问题在于环境的统一需要通过模板实现,构建模板时间很长,因此无法在短期内做变更。且需要维护多套模板,运维成本非常高。


此外,在环境统一的情况下,依赖的系统底层版本如何维护也需要解决。容器实现较为简单,但过程比较复杂,它依赖于安全级别隔离CG groupNameSpace,依然需要构建一套自己的环境。


Docker实现了软隔离,有了Docker可以通过编排将线上环境搬到本地,通过 IDE Docker 的挂载将线上环境完整带到本地,实现环境统一。而环境统一之后带来的好处在于运维更安全更方便,可以通过镜像直接拉起容器。同时,镜像还可以带来弹性伸缩的能力。


另外,Serverless能够根据业务的潮汐流量特点实现按需付费节省成本。


Serverless的架构多样化也与我们的业务需求相符。它提供了BaaSFaaS(粒度较小的函数,只代表请求中的点)、Sffserverless for front)以及BffBackend for front),其中SFFBff主要解决前端流量后端化的问题。


👉函数计算 FC :https://www.aliyun.com/product/fc?


image.png

我们将端和云区分开,将端上的计算和功能去放在云变为云端一体化。早期开发阶段的网关层基本 APIGateway聚合模式通过路由将接口聚合一起返回内容。随着服务越来越多,一个小的改动可能会对链路带来很大问题,测试成本也很高


而现在,我们通过Serverless替代了这一层,从端请求到云上运行FaaS 函数,将单一的点拆解运行,可以根据实际流量自动扩缩,无需担心下线或改动影响服务状态


未来,我们会将大量计算放在云端,使客户端越来越小,性能越来越快,不仅能够实现端云一体化,还能实现产研同频,加快产品迭代速度。


解决了架构问题后,我们还需面临运维成本较大的问题Serverless架构的免运维仅仅面向容器和函数,每个场景每个流程运维依然需要通过体系化的模式构建,需要完善的CICD


image.png

CICD解决了可观隔离性。可观主要用于快速发现问题,包括日志收集鹰眼监控等。随着架构的升级,其粒度越来越小服务治理和环境治理的成本越来越高,可观测性的重要性也日益凸显。


代码管理方面,底层机制保证了 tag 和代码管理可以走不一样的流程。通过代码管理发布到环境,通过环境隔离的角度进行验证,验证后再通过权限手段控制安全性,并通过环境的隔离实现了安全模式


完善的 CICD保证了产品的高效迭代,并且降低了试错成本。

image.png

有了完善的CICD后,即可进行通用型FaaS的平台架构设计。不同的团队之间相互调用FaaSSFF 通过调前端的 FaaS 进行请求解决了 API 聚合问题。业务场景往下是网关端上 FaaS(自己写逻辑)再往下是业务层,业务层存在相互的之间调用填充,最终到业务FaaS


image.png

FaaS的周期通过Runtime 进行约束。该套Runtime 设计可以实现小时级的FaaS 开发部署。


架构分为四层,最上层为User Faas通过 Runtime 叠加自己的逻辑即可;第二层为FaaS SDK 上行流量下行流量需要有统一的标准,否则会导致用户不稳定;第三层为Runtime实现并封装很多协议,比如长链接协议用于做中间件对外的代理,使用时只需要将 Runtime 引入即可;最底层FC 函数引擎, FaaS 最大的缺点在于冷启动需要加载状态、实例等,会耗费大量时间而有些状态可以进行屏蔽基于此,FC对其进行了优化,可以预留实例,实现秒起。


以上流程可以理解为有了一个 web server 入口实现函数,再通过平台调度,通过 CICD 流程发布,最终实现高效的迭代


image.png

稳定性保障负责保证日常情况下函数维护。上线三板斧分别为可灰度、可监控、可回滚。Serverless架构较轻,可以通过version控制其上线流程。比如优化前后的版本分别为version1version2,可以通过不同的流量机制进行分流,版本随时增加,增加版本时老版本依然可以正常运行


可观测性方面,可以通过完整的日志链路挖掘问题,也提供了智能化手段帮助发现业务问题。


预留实例解决冷启动问题,避免了冷启动对请求时长的影响。完备的流程化链路排查机制指可以在日志上打标签,通过日志在流程上快速挖掘问题定位问题以及大促保障

image.png

Serverless在高德的落地场景包括但不限于以上四个,能够保证弹起、开发较快,通过配置化保证卡片可以快速上下线。

image.png

FaaS带给我们的最终收益是降本提效,主要体现在以下三个方面:


  • 开发提效:Bff&runtime加速开发,快读迭代业务。
  • 运维提效:完备的生命周期,完全的弹性
  • 降低成本:潮汐流量,按需计费。


Q&A:


Q使用Serverless开发相关的功能时,功能的粒度拆分特别细。比如用户请求进来,可能后端有十几个 Serverless相互调用,Serverless之间的调用延时比较大,如何进行优化?


A:使用异步请求方式然后汇总元组,将元组再进行解析它依赖于最大短板在工具上我们实现了timeout,以异步超时的方式不必要的长耗时请求进行快速拦截,进行汇总并最终返回至端上。出于业务上的考虑,我们没有对长耗时请求直接熔断。


Q:函数本身执行速度较快,但函数之间的调用耗时较长,应如何解决?


A:需要平台解决。我们目前把它看作正常请求,暂未对该问题进行优化。此前,我们曾对另一种模式进行过优化依赖于平台提供函数的路由在资源重用和调度上做了很大优化。此外,在调用平台时,平台与函数之间的协议沟通也尤为重要比如慢连接时如何沟通滑动窗口满了后如何沟通。gRPC可以保障某一时刻不会慢,但启动的初始阶段依然耗时较长。


🌏更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。


👉点击直达函数计算官网!

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
4月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
4月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
8月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
778 69
|
8月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
475 12
|
10月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
11月前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
233 10
|
Serverless 开发工具 开发者
活动实践 | 西游再现,函数计算一键部署 Flux 超写实文生图模型部署
这些图片展示了阿里巴巴云开发者生态的多个方面,包括开发工具、技术文档、社区交流、培训认证等内容,旨在为开发者提供全方位的支持和服务。
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
452 12
|
存储 弹性计算 关系型数据库
活动实践 | 告别资源瓶颈,函数计算驱动多媒体文件处理测评
本方案介绍了一种高效处理文件的方法,适用于企业办公和社交媒体应用。通过阿里云的函数计算、对象存储OSS和轻量消息队列,实现文件的异步处理,如格式转换和水印添加,有效减轻了核心应用的负担,提高了业务稳定性和资源利用率。方案包括云服务器ECS、云数据库RDS、OSS存储等组件,支持快速部署和资源清理。

热门文章

最新文章

相关产品

  • 函数计算