无服务器部署与 CI CD 自动化
11.13 成本优化策略
Tip
云计算是按量计费的。如果不加节制,"云计算"就会变成"云算计"。
1. 为什么要学这个?
新手惨案: 你写了一个死循环,或者被 DDoS 攻击了。 一个月后,你收到的不是用户的感谢信,而是亚马逊 (AWS) 发来的 $5,000 账单。 对于独立开发者来说,这可能是毁灭性的打击。 FinOps (云成本优化) 不仅仅是为了省钱,更是为了生存。
2. 核心概念:按量 vs 包年包月
1. Pay-as-you-go (按量付费)
- 水龙头模式:用多少水交多少钱。
- 风险:忘关水龙头(死循环),或者水管爆了(流量攻击),房子能给你冲没了。
- 适用:Serverless Function, S3 存储, CDN 流量。
2. Fixed Pricing (包月/固定)
- 宽带模式:不管你用不用,每个月固定交 100 块。
- 风险:用得少也是亏(但不会破产)。
- 适用:VPS (Coolify), 数据库 (Railway/Render)。
3. 解决方案 (HOW) - 省钱大法
策略 1:Billing Alert (保命符)
在写第一行代码之前,先去云平台设置账单告警。
- Vercel: Spend Cap (消费上限)。
- AWS: Budgets (当账单预计超过 $10 时发短信)。 这一步能救你的命。
策略 2:Free Tier (白嫖)
利用好大厂的免费额度 (薅羊毛是美德):
- Vercel: 100GB 流量/月 (个人项目根本用不完)。
- Cloudflare: 免费 CDN + WAF (良心企业,必须套在最前面)。
- MongoDB Atlas / Neon: 512MB 免费数据库。
策略 3:资源清理 (TTL)
不要存垃圾。
- 日志: 设置 30 天自动删除。
- 图片: 使用 Next.js
<Image />组件,自动把 5MB 的 PNG 压缩成 50KB 的 WebP。图片流量通常占带宽费的 80%。
成本构成图
pie
title "典型 Serverless 应用成本构成"
"数据库 (最贵)" : 50
"流量/CDN (不可控)" : 30
"计算 (Function)" : 15
"存储 (S3)" : 5
4. 真实案例
Story
"无限循环的 3000 美刀"
2022 年,一个 React 新手在 useEffect 里请求 API,但忘了写依赖数组 []。
导致组件每渲染一次就请求一次 API。
这个页面正好是首页。
他的 Firebase 数据库读操作在一天内达到了 2 亿次。
账单:$3,000。
虽然 Google 最后出于对新手的同情免除了这笔单子(One-time refund),但他吓得差点当场退圈。
Vibe 心法:
手抖一下,云上就是真金白银的流失。
每一个 useEffect,每一个 while(true),每一张高清大图,都是在向你的研发预算发起掠夺。
代码不仅要跑得通,还要跑得便宜。
5. 本章小结
- 告警:Billing Alert 是第一道防线。
- CDN:是最好的省钱工具 (Cloudflare 帮你挡流量)。
- 敬畏:在绑定信用卡的那一刻,就要对每一行代码的性能负责。