高德 Serverless 落地实践

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 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 活动、直播,用户最佳实践。


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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
7天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
32 10
|
20天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
66 12
|
29天前
|
Serverless 开发工具 开发者
活动实践 | 西游再现,函数计算一键部署 Flux 超写实文生图模型部署
这些图片展示了阿里巴巴云开发者生态的多个方面,包括开发工具、技术文档、社区交流、培训认证等内容,旨在为开发者提供全方位的支持和服务。
|
29天前
|
存储 弹性计算 关系型数据库
活动实践 | 告别资源瓶颈,函数计算驱动多媒体文件处理测评
本方案介绍了一种高效处理文件的方法,适用于企业办公和社交媒体应用。通过阿里云的函数计算、对象存储OSS和轻量消息队列,实现文件的异步处理,如格式转换和水印添加,有效减轻了核心应用的负担,提高了业务稳定性和资源利用率。方案包括云服务器ECS、云数据库RDS、OSS存储等组件,支持快速部署和资源清理。
|
2月前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
2月前
|
弹性计算 算法 搜索推荐
活动实践 | 通过函数计算部署ComfyUI以实现一个AIGC图像生成系统
ComfyUI是基于节点工作流稳定扩散算法的新一代WebUI,支持高质量图像生成。用户可通过阿里云函数计算快速部署ComfyUI应用模板,实现个性化定制与高效服务。首次生成图像因冷启动需稍长时间,之后将显著加速。此外,ComfyUI允许自定义模型和插件,满足多样化创作需求。
|
2月前
|
弹性计算 自然语言处理 搜索推荐
活动实践 | 基于函数计算部署GPT-Sovits模型实现语音生成
通过阿里云函数计算部署GPT-Sovits模型,可快速实现个性化声音的文本转语音服务。仅需少量声音样本,即可生成高度仿真的语音。用户无需关注服务器维护与环境配置,享受按量付费及弹性伸缩的优势,轻松部署并体验高质量的语音合成服务。
|
2月前
|
运维 监控 Serverless
揭秘云计算中的Serverless架构:优势、挑战与实践
揭秘云计算中的Serverless架构:优势、挑战与实践
|
4月前
|
运维 Kubernetes 前端开发
拥抱Knative, 合思加速Serverless化演进实践
合思信息基于阿里云容器服务Knative, 实现Serverless化演进的最佳实践。
拥抱Knative, 合思加速Serverless化演进实践
|
5月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
80 0

相关产品

  • 函数计算