无服务器部署与 CI CD 自动化
11.1 Serverless详解
Tip
在云时代,最昂贵的不是计算,而是"空转"。
1. 为什么要学这个?
传统服务器是"租房"逻辑:你租了一台云服务器 (ECS),无论你是一个人用,还是没人用,你每分每秒都在付钱。 更可怕的是,你需要自己修水管(打补丁)、搞卫生(清日志)、扩建(服务器炸了手动升级)。
Serverless 是"点外卖"逻辑: 你不需要拥有厨房。你只需要下单(发送请求)。 平台负责做饭(执行代码)、洗碗(销毁实例)。 最大的好处:如果没人点单,你一分钱都不用花(Scale to Zero)。
2. 核心概念:Serverless = FaaS + BaaS
1. FaaS (Function as a Service)
你的后端不再是一个一直运行的 Node.js 进程。 它变成了一个个独立的函数。
- 有人访问
/api/user-> 此函数瞬间醒来 -> 执行 -> 返回数据 -> 立即自杀。 - 生命周期可能只有 100 毫秒。
2. Stateless (无状态)
因为函数每次执行完就销毁了,所以你不能在全据变量里存东西。
- ❌
let count = 0; count++(下次请求来时,count 还是 0)。 - ✅ 存到 Redis 或数据库里。
3. 解决方案 (HOW)
架构对比
1. 传统架构 (ECS / VPS)
像一家24小时营业的餐厅。
- 成本:$20/月 (固定)。
- 维护:你需要自己装 Linux, Nginx, Node.js。
- 风险:半夜流量激增,服务器直接挂掉,你需要起床升级配置。
graph TD
User1["用户"] --> Nginx["Nginx 负载均衡"]
Nginx --> Node1["Node.js 进程 (7x24h 运行)"]
Node1 --> OS["操作系统 (你需要维护)"]
2. Serverless 架构 (Vercel)
像一个云厨房。
- 成本:$0 (没人访问) ~ 按量付费。
- 维护:0 (Vercel 全包)。
- 弹性:1个人访问,它起1个实例;1万个人访问,它瞬间起1万个实例。
graph TD
User2["用户"] --> Gateway["Vercel 网关"]
Gateway -->|请求 A| Func1["函数 A (用完即走)"]
Gateway -->|请求 B| Func2["函数 B (用完即走)"]
style Gateway fill:#e1bee7,stroke:#8e24aa
style Func1 fill:#c8e6c9,stroke:#2e7d32
4. 真实案例
Story
那个价值一百万美元的"空转"
某大型企业在进行云成本审计时发现,他们有 40% 的 EC2 实例在过去一年里的 CPU 使用率低于 1%。 这些服务器是开发环境、测试环境,或者是一些早就废弃但忘了关的项目。 损失:光是这些"僵尸服务器",一年就烧掉了 100 万美元。
Vibe 心法: 对于初创项目和独立开发者,Serverless 是唯一的正解。 它可以让你把成本降到 $0,直到你真正开始赚钱。 Scale to Zero (缩容到零) 是云时代对开发者最大的温柔。
5. 本章小结
- 按需付费:只为计算付费,不为时间付费。
- 无状态:习惯"用完即走"的代码风格,状态交给数据库。
- 零运维:忘掉 SSH,忘掉 Nginx,专注写代码。