阿里云 Serverless 产品横向对比: 应用引擎与函数计算

# 简介

大约在 2020 年年初, 公司后台接入了一个第三方服务, 在稳定运行了一段时间后, 己方服务突然出现大规模的不可用, 客户端访问超时.

基于 ECS 上挂载的监控 Agent 提供的信息推断, 可能是由于用户激增造成的, 于是便手动采购 ECS 实例, 手动部署应用进行扩容以应对压力. 起初能有效地缓解服务器压力, 但后来异常越发频繁, 于是开始考虑弹性伸缩与 Serverless 方案.

aliyun 2020 promotion (opens new window)

在一番仓促地对比后, 决定采纳操作简单的 Serverless 应用引擎 SAE (opens new window) 紧急应对此次事故.

经过简单的调试后, 顺利的将原本部署在 ECS 上的 Spring 应用迁移到了 SAE 中.

相比之前手动采购 ECS, 配置密钥, 安装 JRE, 推送 Jar 包, 命令行启动应用, SAE 操作之简单让我仿佛从石器时代一步跨进电气时代.

后来基于 SAE 的监控发现, 原来是由于第三方服务响应时间不稳定导致的此次故障, 最长 10s 的响应时长占用了 ECS 上大量的资源, 后台应用控制好超时时间后故障解除.

待服务稳定后, 我开始深入的了解 Serverless, 并在充分的了解 SAEFC 后, 总结了如下对比项.

以下内容为个人观点, 且部分对比项具有时效性, 仅作参考.

# 阿里云 Serverless 产品横向对比: 应用引擎与函数计算

对比项 SAE FC SAE 优劣 FC 优劣
最低规格 0.5core 1g 0.0625core 128mb 优势: 支持更低的实例规格
最高规格 32core 128g 8core 16g 优势: 支持更高的实例规格
部署方式 JAR/WAR/镜像 文件夹/压缩包 优势: 构建工具产物可直接用于部署 优势: 支持直接部署当前文件夹到云端
运行方式 部署完成后即可长时间运行 需要客户端访问才进入冷启动 优势: 可以完成长时间的拉取式消息处理.
可以用于完成批处理任务.
劣势: 长时间占用数据库链接, 过渡扩容时有耗尽数据库链接数的风险.
优势: 短时间占用数据库链接, 随同实例一起释放.
支持多种触发方式.
劣势: 最后一次调用 5 分钟后实例被销毁, 无法长时间拉取消息进行处理, 需要通过消息队列推送才行.
官方推荐的 MNS 队列暂不支持内网消息推送.
最低规格按量使用一个月价格 CPU: 0.0030864 x 60 x 24 x 30 x 0.5 = 66.67 元/月
Mem: 0.0007716 x 60 x 24 x 30 x 1 = 33.33 元/月
CPU + Mem = 100 元/月
预留实例CU: 0.00011108 x (128 / 1024) x 60 x 60 x 24 x 30 = 35.99 元/月 最低规格的实例原价相对较高, 但结合目前的 优惠策略 (opens new window) 以及 资源包 (opens new window), 最低可以拿到到54折. 优势: 每个自然月有 100 万次免费调用以及 400 万免费CU. (opens new window)
劣势: 最低规格实例在业务高峰期可能因为冷启动超时导致客户端大规模异常.
0.5core 1g 按量使用一个月价格 同上 预留实例CU: 0.00011108 x (512 / 1024) x 60 x 60 x 24 x 30 = 143.96 元/月 优势: 与同等规格的预留实例相比便宜约 30 % 优势: 每个自然月有 100 万次免费调用以及 400 万免费CU. (opens new window)
版本控制 发布版本时强制开发者输入不重复的版本号. 针对服务层面进行版本控制. 优势: 支持一键回退至最近的 10 个版本. 劣势: 无法针对单个函数进行版本控制.
必要时可以在函数更新时对整个服务进行一次版本快照, 勉强能实现单个函数的版本控制功能.
监控 优势: 基于 ARMS (opens new window) 提供强大的全面监控 劣势: 目前仅提供内存占用, 调用次数, 响应时长, 错误率监控
编程语言友好程度 JAVA, 以及其他可以制作成镜像的任何语言. Python, JavaScript 等解释型语言 劣势: JAVA 应用在启动时需要消耗大量 CPU, 因此需要规划较大的内存规格, 即便运行时只占用一小部分内存.

对于想把 Spring Boot 应用部署到函数计算的同学, 可以试试我写插件: 适用于阿里云函数计算自定义运行时的 Gradle 自动打包插件.

它能够自动将产物打包成符合规格的压缩包, 并支持指定 profile 启动.

# 参考

# 推广

欢迎加入 Spring Cloud 交流群: 617143034 (opens new window)

欢迎大家点击下方的图片领取限量 阿里云优惠券 (opens new window), 新购续费更优惠: 限量阿里云优惠券 (opens new window)