Serverless
是什么
Serverless(无服务器)意味着你只编写一个个独立的函数,云服务商仅在有事件触发它们时才运行——一个 HTTP 请求、一次文件上传、一个定时器。底层仍然有服务器,但你永远看不到也无需管理它们。你只为代码实际运行的时间付费,往往精确到毫秒。
优势
- 无需预配、打补丁或维持服务器运行。
- 自动从零扩展到数千个并发运行实例。
- 按使用量计费;空闲代码不产生费用。
- 与云事件(队列、存储、数据库)干净地集成。
- 非常适合突发或不可预测的流量。
权衡取舍
- 冷启动:最近没有运行过的函数可能需要额外时间来唤醒。
- 执行时间限制(通常为几分钟)使其无法处理长时间任务。
- 在极高且稳定的流量下,相比一台普通服务器,成本可能让你吃惊。
- 本地测试和调试比普通应用更棘手。
- 厂商锁定——各服务商的事件模型和 API 各不相同。
何时使用
对于流量不均匀、又不想费心照看基础设施的 API、webhook、定时任务和事件驱动型任务,选择 serverless。它特别适合作为云服务之间的胶水代码。
与 vibe coding 的契合度
Serverless 与 AI 主导的开发配合得很好,因为工作单元是一个单一、自包含的函数——便于 agent 生成、测试和部署。AWS SAM、Serverless Framework 和 Vercel 等框架让 AI 可以在一个配置文件中定义函数、它的触发器以及权限。建议:要求 agent 明确设置合理的超时时间和内存大小,并尽量精简依赖——更少的包意味着更小的打包体积和更快的冷启动。
# serverless.yml — AWS Lambda 函数
service: my-api
provider:
name: aws
runtime: nodejs20.x
timeout: 10
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /hello
method: get
# 部署整个栈
npx serverless deploy