认识 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 写一个真正的线上服务。到时候我会分享一些实战中的坑和技巧。