超越边界FaaS的应用实践和未来展望
如果无法正常显示,请先停止浏览器的去广告插件。
1. 超越边界:FaaS 的应
用实践和未来展望
蚂蚁集团 邢奇 2023/07
2. FaaS 概述
3. FaaS 的崛起
01 02
应用研发模式面临的困境 FaaS 的适用场景和价值
03
FaaS 落地面临的问题和挑战
4. 应用研发模式面临的困境
代码耦合严重,复杂度高;运维流程繁琐,效率低;资源利用率低,存在浪费
5. FaaS 研发模式的优势
• 提升研发效能:快写快发
• 提高运维效率:免运维
• 降低成本和资源消耗
6. FaaS 的适用场景和价值
让研发者更专注于业务
适合场景
•
•
•
•
•
•
胶水代码
短生命周期
事件驱动
波峰波谷明显
多语言
高隔离性
适合业务
•
•
•
•
•
H5/小程序
聚合服务/BFF
推荐/营销平台
音/视频转码平台
算法/ AI
7. FaaS 落地面临的问题和挑战
性能
安全
成本
体验
• 函数调用的性能问题 • 资源如何隔离 • 资源利用率如何提升 • 函数研发体验优化
• 弹性扩缩容反应时间慢 • 容器逃逸如何防御 • 用户成本如何降低 • 函数如何运维
• 容器启动速度慢 • 免鉴权怎么支持
8. 深入蚂蚁 FaaS 技术架构
01 02
蚂蚁FaaS技术实践说明 蚂蚁FaaS高性能实践详解
03
蚂蚁FaaS安全能力建设
9. 蚂蚁 FaaS 技术实践原则
冷启
动
流量
模型
安全
隔离
one request per instance
10. 蚂蚁 FaaS 技术实践说明
函数网关
负责函数请求的转发和控制,并且为每个请求发起一次容
器调度任务
容器调度引擎( huse )
负责容器的调度,对容器的生命周期进行管理,并且可以
控制函数的并发度和复用等状态。并且对函数pod资源池
进行管理
函数Pod资源池
函数容器运行的环境,一个集群有N个Pod资源
容器运行时
负责实现OCI标准,快速启动函数容器,对容器的
runtime进行有效控制
函数容器
用户的函数代码运行在函数容器中,仅作为客户端拉取请
求并处理,返回结果
11. 蚂蚁 FaaS 性能优化实践
函数网关
函数网关
负责统一接收函数请求,进行认证授权,并且发起
容器调度,最后将请求转发给函数节点网关
函数节点网关
接收并缓存函数请求,并且将请求进行实例级别的
分发,同时等待函数容器启动并开始处理请求
函数容器
函数代码运行的容器,启动之后会作为客户端拉取
请求并进行业务处理
12. 蚂蚁 FaaS 性能优化实践
CPU资源消耗下降了50%以上
函数网关
请求耗时下降了30%左右
13. 蚂蚁 FaaS 性能优化实践
容器调度引擎
HUSE调度引擎,即Hyper-elastic
Unified Serverless Engine,蚂蚁容器调
度引擎的下一代架构
特性
蚂蚁容器调度引擎的下一代架构,是专门面向高吞吐低延迟、低
成本、极速启动的Serverless场景而设计的。
场景
目前HUSE不仅在FaaS场景进行实践,同时也应用在batch job等
场景,是一个通用的serverless任务调度引擎。
14. 蚂蚁 FaaS 性能优化实践
容器调度引擎
全集群10000 QPS调度吞吐下,HUSE可以实现平均21ms的容器调度延迟
15. 蚂蚁 FaaS 性能优化实践
容器冷启动
Warm Pool 冷启动
(100%资源冗余) (0资源冗余)
容器资源分配 容器资源缓存
(分钟级别) (0ms)
传统文件系统 ROFS
(性能+安全隔离差) (性能提升一倍+安全)
create
+start checkpoint
+restore
16. 蚂蚁 FaaS 性能优化实践
容器冷启动
NanoVisor
轻量级Hypervisor,进行syscall interception和
host syscall加速
多平台支持
ARM(鲲鹏)、Hygon/AMD
性能
火焰图热点分析、Go runtime增强、引入高性
能用户态协议栈(TLDK/DPDK,引入CGO)
应用场景
FaaS、增强基础设施安全、增强容器平台安
全、快速扩缩容
17. 蚂蚁 FaaS 性能优化实践
容器冷启动
Read Only File System (ROFS)
容器镜像文件不再需要解压为一个 host 上的目录并 bindmount 到容器内,而是使用 ROFS 可以解析的格式。
容器创建的时候,镜像文件在 runsc-sandbox 进程之外打开,并在 sandbox 进程内直接 mmap,对镜像中文件的所有操作直接变成内存操作,而
不需要调用系统调用操作 host 上的文件。
18. 蚂蚁 FaaS 性能优化实践
容器冷启动
Create+Start容器
符合 OCI 标准的容器运行时包含 create 和 start 两个容器启动相关的接口
create 是根据容器镜像和配置文件创建容器运行的环境,对应 NanoVisor 容器沙箱的创建和应用程序内核的初始化;
start 则是启动容器,对应 NanoVisor 容器沙箱内一号进程(Nodejs Runtime)的创建和启动。
19. 蚂蚁 FaaS 性能优化实践
容器冷启动
制作checkpoint种子
首先按照传统方式创建、启动一个容器,等待容器内的 Nodejs Runtime 初始化完成之后,使用 checkpoint 技术对
Nodejs Runtime 进程和应用程序内核 sentry 进行状态、数据的保存。
20. 蚂蚁 FaaS 性能优化实践
容器冷启动
Restore容器
在容器启动阶段,我们使用 restore 来进行容器启动,直接利用之前保存好的进程、内核状态和数据进行恢复,不再需要重新
初始化 Nodejs Runtime。
在恢复完成之后,Nodejs Runtime 就可以立刻进行业务逻辑处理。
21. 蚂蚁 FaaS 性能优化实践
容器冷启动
FaaS函数容器落地开销
- 启动速度 < 90ms
- 内存开销 < 1MB
蚂蚁对第三代容器运行时的期待:安全容器发于安全,而归于性能成本——10x
22. 蚂蚁 FaaS 安全建设
容器和网络架构
Runsc( NanoVisor )
负责实现函数生命周期的管理,快速启动函数容器
函数容器(runsc sandbox)
函数容器是一个完全隔离的runsc沙箱环境,配置有
ACL规则和虚拟的veth pair网卡
Bridge+eBPF
函数容器的veth pair挂在bridge上,通过eBPF进行
高效网络过滤、控制和转发
23. 蚂蚁 FaaS 安全建设
容器纵向安全防逃逸
函数程序
运行在虚拟化的 guest 态,它的系统调用会被
sentry(运行在 guest kernel 态和 host kernel 态)
处理和响应。
NanoVisor
提供了一个 Go 语言编写的应用程序内核 sentry,
它会处理所有函数实例的系统调用。
sentry 本身的系统调用由 seccomp 进行限制。
nanovm虚拟化
轻量级的 vmm 管理,它是 host 上的一个内核模
块。
24. 蚂蚁 FaaS 安全建设
容器横向安全
• 网络行为审计(网络相关的操作,如
connect, accept, recvmsg 等)
• DNS 请求审计、拦截
• 端口监听管控
• 基于五元组的信息的四层网络管控
25. 蚂蚁 FaaS 安全建设
免鉴权访问
• 代理服务访问
(func2func、DB、
OSS、云服务等)
• 公网访问
• 用户租户VPC访问
• 其它出口网络
26. 蚂蚁 FaaS 的体验优化
01 02
研发体验 运维体验
27. 蚂蚁 FaaS 的体验优化
创建
函数
发布
函数
研发效能
测试
函数
FaaS 研发体验:代码快写快发,10S内完成一个函数上线
28. 蚂蚁 FaaS 的体验优化
研发效能
6年级小朋友5分钟现场完成字支付宝小程序+FaaS云函数研发
29. 蚂蚁 FaaS 的体验优化
运维效能
链路
日志
指标
告警
FaaS研发效能:Serverless一站式平台、免运维、自动集成监控告警
30. 蚂蚁 FaaS 的改变和优势
低成
本
安全
保障
研发
效能
运维
效率
• 内存开销 < 1MB • 下一代安全容器 • 纯业务、快写开发 • Serverless一站式平台
• 启动速度 < 90ms • 免鉴权调用 • 无应用申请流程 • 免运维
• 无碎片代码和版本 • 自动集成监控告警等
• 用户只为流量付费
31. FaaS 的实践和收益
01
典型 FaaS 实践案例
02
FaaS 带来的收益和改变
32. 典型 FaaS 实践案例
MaaS 面临的问题
• 定制化监控分析及使用场景多,对于差异化诉求,难以平台化
支持及快速响应。
• 监控数据抽象不足,用户难以标准化、便捷的使用监控实体模
型 及 时序数据。
• 监控及风险领域的 AIOps 平台架构缺少重要一环,即 单场景
及 多个单场景 运维模块串联的流程化 AI 运维能力
MaaS On FaaS
33. 典型 FaaS 实践案例
MaaS On FaaS
体系无缝整合
与现有应用框架及中间件打通
函数式运维能力升级
支持流量调拨、金丝雀发布等
风险平台能力整合
函数监控,灰度、流量、
变更等平台能力整合
MaaS 通用模块下沉,业务部分重构为垂直样板间,快速构建标准化 FaaS 研发平台
34. 典型 FaaS 实践案例
洛克公园
研发团队情况
• 4位前端同学,同时维护前后端 及 函数代码;相对编程
能力较弱。
• 一位后端同学,维护阿里云应用
业务痛点
• 业务需求多:客户业务快速发展,业务需求频繁,但现在后
端服务发布或者小程序发布流程都比较复杂,难于快速响应
业务需求。
• 研发门槛较高:希望尽量降低研发门槛,比如更简单便捷的
监控,业务链路的自动串联等等。
• 云成本较高:希望尽量降低研发成本,希望支付宝小程序云
能够进一步降低服务器的成本。
35. 典型 FaaS 实践案例
核心诉求
• 统一技术栈以及较低的研发门槛
• 快速业务研发与发布
• 运维托管和流量波动下的动态扩缩容
成果收益
• 研发迭代速度显著提升
• 新需求的发布时间从原来需要数
天时间,成功缩短至仅需数小时
即可全部完成
• 计费成本更低
洛克公园
36. 未来展望
01
极致性能
02
极致效能
37. 未来展望
极致性能 极致效能
FORK AIGC
38. 极致性能:毫秒级的冷启动
Checkpoint
+restore runtime
fork runtime+code
fork
(90ms) (3.5ms) (3.5ms)
39. 极致效能:AIGC + FaaS
AI 函数开发
自然语言对话 业务代码生成
语义式检索 模版及组件导购
风险托管 流程自动化
蚂蚁 NLPGPT, CodeGPT, OpsGPT,……
40. 极致效能:AIGC + FaaS
41.