认识 Serverless:核心概念与主流平台

说实话,我刚接触 Serverless 那会儿,也被一堆新名词搞晕过。FaaS、BaaS、CaaS…… 这些缩写背后到底藏着什么?今天咱们就把这些概念掰开揉碎,再聊聊几个主流平台怎么选。

什么是 FaaS?说白了就是「只写函数」

FaaS,全称 Function as a Service。你想想看,传统开发你得买服务器、装环境、部署应用。FaaS 把这些全砍了——你只需要写一个函数,上传到云平台,剩下的它帮你搞定。

我举个例子。你写一个图片缩略图生成函数:

exports.handler = async (event) => {
  const image = event.body;
  const thumbnail = await resizeImage(image, 100, 100);
  return { statusCode: 200, body: thumbnail };
};

上传到 AWS Lambda 后,只要有图片上传事件触发,这个函数就自动跑起来。没人调用时,它不占任何资源。说白了,按需付费,用多少付多少。

核心特点:

  • 无服务器管理——你只管代码
  • 自动弹性伸缩——从 0 到 10000 并发瞬间完成
  • 按调用次数计费——没调用不花钱
  • 有冷启动问题——函数长时间不调用,首次执行会慢一点

我在项目中遇到过冷启动的坑。有一次做电商秒杀活动,函数平时没人用,结果活动一开始,第一批请求全卡在冷启动上。后来我用了预留并发,才把这个问题解决掉。

什么是 BaaS?后端服务化

BaaS,Backend as a Service。它提供的是现成的后端能力,比如数据库、用户认证、文件存储、推送通知。你不需要自己写这些基础设施代码。

举个例子。你想给 App 加个用户登录功能。传统做法:写注册接口、写登录接口、管理 Session、处理密码加密…… 用 BaaS 呢?直接调用一行代码:

const user = await auth.signIn(email, password);

剩下的认证逻辑、Token 管理、安全防护,BaaS 平台全包了。

我个人习惯把 BaaS 和 FaaS 搭配使用。FaaS 处理业务逻辑,BaaS 提供数据存储和认证能力。这样组合起来,后端开发效率能提升好几倍。

我的经验: 小团队或个人项目,优先考虑 BaaS。大项目或复杂业务,BaaS 可能不够灵活,这时候 FaaS + 自建后端更合适。

主流平台对比:怎么选?

市面上 Serverless 平台不少,我挑四个最有代表性的聊聊。

平台 核心产品 冷启动 计费方式 适用场景
AWS Lambda FaaS 中等(约 200-500ms) 按调用次数 + 执行时长 企业级、复杂业务
阿里云函数计算 FaaS 中等(约 300-600ms) 按调用次数 + 资源量 国内业务、阿里生态
Vercel FaaS + 静态托管 较快(约 100-300ms) 按调用次数 + 带宽 前端项目、Jamstack
Netlify FaaS + 静态托管 较快(约 100-300ms) 按调用次数 + 带宽 前端项目、个人站点

AWS Lambda:老大哥,功能最全

AWS Lambda 是 Serverless 的鼻祖。2014 年推出,到现在生态最成熟。支持的语言多——Node.js、Python、Java、Go、C#…… 几乎全覆盖。

它的优势在于和 AWS 其他服务的集成。比如 S3 触发、DynamoDB 触发、API Gateway 触发。你写一个函数,能跟几十种 AWS 服务联动。

但 Lambda 也有缺点。配置项太多,新手容易懵。我记得第一次用的时候,光 IAM 角色权限就折腾了半天。嗯,这里要注意——权限配置错了,函数根本跑不起来。

避坑指南: 我曾经在 Lambda 里直接连 RDS 数据库,结果连接数一多就报错。后来改用 RDS Proxy 才解决。Lambda 不适合长连接场景,切记。

阿里云函数计算:国内首选

如果你主要服务国内用户,阿里云函数计算是个好选择。它跟 AWS Lambda 类似,但更接地气。比如支持 HTTP 触发器,可以直接当 Web 服务用。

阿里云的计费方式也灵活。按资源量计费,你分配多少内存就按多少算。我做过一个图片处理服务,用 128MB 内存就够了,一个月才花几块钱。

不过阿里云的文档质量…… 嗯,还有提升空间。有些细节写得不够清楚,得自己试错。

Vercel:前端工程师的最爱

Vercel 是前端圈的明星。它把 Serverless 和静态托管结合得特别好。你写一个 Next.js 项目,部署到 Vercel,自动变成 Serverless 架构。

它的冷启动速度比 AWS Lambda 快不少。为什么?因为 Vercel 用了轻量级的运行时,启动时间控制在 100ms 左右。我做过测试,同样一个 Hello World 函数,Vercel 比 Lambda 快了一倍。

Vercel 的缺点也很明显——生态封闭。它跟 Next.js 绑定太紧,用其他框架体验就差一些。

Netlify:简单粗暴

Netlify 是 Vercel 的直接竞争对手。它的优势是简单。你上传一个静态网站,再写几个 Netlify Functions,一个完整的应用就出来了。

Netlify 的免费额度很慷慨。个人项目基本够用。我刚开始学 Serverless 时,就用 Netlify 练手,一分钱没花。

但 Netlify 不适合大型项目。函数执行时间限制 10 秒,内存限制 1024MB。复杂业务跑不起来。

我的建议:

  • 企业级项目 → AWS Lambda 或 阿里云函数计算
  • 前端项目 → Vercel 或 Netlify
  • 国内业务 → 阿里云函数计算
  • 个人练手 → Netlify 免费版

总结一下

FaaS 和 BaaS 是 Serverless 的两大支柱。FaaS 让你只写函数,BaaS 让你不用写后端基础设施。选平台时,别只看名气,要看你的业务场景。

我个人习惯先用 Netlify 或 Vercel 快速验证想法,等业务稳定了再迁移到 AWS 或阿里云。这样既省钱又灵活。

下一章,咱们聊聊怎么用 FaaS 写一个真正的线上服务。到时候我会分享一些实战中的坑和技巧。