1.3 一元环境:费用与免费额度

项目上线第三个月,我的账单突然从零变成了四块七。这在预算里微不足道,但足以说明一件事:免费额度不是无限的,你得知道它从哪里开始、在哪里结束。这一节把云开发的费用结构拆开讲清楚,并分享我们是怎么在免费额度内撑过冷启动期的。

先解释标题里的一元环境是什么。云开发里环境是资源隔离和计费的基本单位:一套环境自成一体,包含数据库、存储、云函数和静态托管,月账单上它就是一行。账单可以是零,也可以是一块、十几块,全看你的用量。新开通的同学可以从活动页领到额外权益,当时我们的第一个环境就是这么开的,地址是 https://cloud.tencent.com/act/cps/redirect?redirect=3996&cps_key=2886aaf7fd441c23ba682c6fda7a9aff&from=console ,领到的额度足够内测期挥霍。

之所以要把费用放在选型篇讲,而不是放到最后运维章节,是因为它在第一天就影响决策:很多人不敢选 Serverless,怕按量计费是个无底洞;也有人仗着免费额度随便造,上线后被账单教做人。两种极端的解药都是同一件事——把账算明白。下面所有数字都来自我们项目的实际账单和官方文档当前口径,目的只有一个:让你对每个月要花多少钱有体感。

围绕一个环境的费用清单

云开发的收费项其实就四块,每个环境一份账单:

计费项 计费方式 免费额度(参考值)
云函数 按调用次数和运行时长 每月固定次数与 GBs
数据库 按存储容量和读写次数 小容量起步免费
存储 CDN 按容量和下行流量 每月数 GB 流量免费
静态托管 按容量和请求次数 小流量免费

这张表的具体数字会随活动调整,最准的永远是官方文档 cloud.tencent.com/document/product/614 的计费页。记住一个原则:任何二手博客上的额度数字都别照抄,以控制台费用中心当下显示为准。

计费规则读起来就一句话:谁用资源谁付钱,用多少算多少:

云函数费用 ≈ 调用次数 × 单价 + 内存×时长×GBs单价
存储费用 ≈ 占用容量 × 单价 + 下行流量 × 单价
数据库费用 ≈ 容量 + 读写请求次数

没有固定月租、没有预留实例,这就意味着没有用户访问的时候账单真的不动。这是它和买服务器本质的区别。

我们早期做了一次粗算,把同样的图文应用放到两种计费模型下对比:

用量场景 月费(云开发按量) 月费(最低配服务器)
内测期,日活五十 0 元 五六十元
成长期,日活一千 一到三块 五六十元
活动峰值,日活一万 二十元上下 已撑不住需升配

差距一目了然:固定成本模型在小流量阶段是纯粹的浪费,而按量模型天然匹配增长的节奏。这就是一元环境成立的数学基础。

你可能会问:如果应用一直不涨呢?那你的服务器照样每个月吃掉五六十块,而按量的账单依然接近零。风险结构完全不同。

场景:前三个月的账单复盘

这是项目真实的月度变化:

月份 日活量级 月账单 超额原因
第一个月 亲友内测三十人 0 元 纯免费额度
第二个月 三五百人 0 元 额度仍够用
第三个月 上千小高峰 4.7 元 CDN 流量超额
第四个月 回落平稳 1 元上下 稳定在小额

发现规律了吗:费用大头是存储和 CDN 这类资源消耗型项目,而不是云函数调用。调用次数看着吓人,单价却极低,真正贵的是每天被反复刷新的图片流量。这也给我们后面的优化指明了方向。

还记得第三个月那次四块七的账单吗?排查到半夜才发现是一个小功能上线时忘了关调试日志,云函数每次调用都返回完整正文,流量悄悄翻了几倍。改掉之后账单回到一块出头。这种钱花得冤,但教得快,也是我们后来坚持每周看费用趋势的直接原因。

方案:怎么看自己的额度

控制台的费用中心比文档直观,每周花两分钟看一眼趋势就行,命令行也能配合着查:

# 看各环境状态与基础信息
tcb env list
# 看函数列表与部署情况
tcb fn list
# 查看指定函数的调用日志
tcb fn log list

更实用的是给云函数配并发上限。早期我们没配,结果有人写脚本刷接口,一晚上把当月免费造掉三分之一,第二天看趋势图直接心跳加速。配上单函数并发上限后,成本曲线立刻平滑下来。具体的监控手段在监控与成本一节展开。

顺带提一个救命配置:费用中心的账单告警。当日消费超过设定阈值就发通知,那一次脚本刷接口事件,我们就是半夜被告警短信叫醒的,五分钟就把并发上限改下去。等第二天早上再发现,可能一整个月的额度都保不住。告警不贵也不复杂,但关键时候能止损。

还有一个省钱的土办法:把列表接口的响应加上长缓存头,让 CDN 直接挡掉大部分回源。这个改动只花了半小时,当月 CDN 流量直接降了一个量级。相关的完整做法记在了云函数分页那一节。

优化效果我们做了前后对比,放在一张表里更直观:

优化措施 实施成本 账单变化
客户端压图 半小时 流量降四成
长缓存头 半小时 回源降九成
函数并发上限 十分钟 防刷后无异常
清闲置环境 五分钟 月省两块多

投入产出比一目了然。一共不到一小时的工作量,换来了账单从十几块回到个位数。这说明费用治理在项目早期就开始做,回报率最高。如果团队里有两个人,甚至可以定个规矩:谁发现一项新的省钱措施,当月账单省下的部分请他喝奶茶——一块钱也是心意,但账单文化就这么建立起来了。

顺带传递一个心态:账单从零变成几块钱的时候别焦虑,这是应用开始有真实流量的信号,是好事。你需要做的不是把费用压回零,而是确保每一分钱都花得明白、能解释清楚。

怎么把额度花在刀刃上

总结我们用过并且有效的几条做法。它们共同的特点是:实施成本都很低,但都需要在项目早期就养成习惯,等账单涨起来再做就来不及了:

  • 图片上传前在客户端压缩,别把原图往存储里塞
  • 响应头配长缓存,列表和图片都受益
  • 定时查费用中心,异常消耗当天发现
  • 闲置的测试环境随手清理,它是隐性小偷
  • 函数并发上限早配早心安,防刷必备
  • 打日志克制一点,结构化但不能淹没主信息

踩坑:三个用钱买的教训

第一坑是 CDN。图片存对象存储时一定要配好缓存策略,否则用户每刷一次列表都回源拉图,流量按 GB 走,肉疼。我们给图片加了长缓存头之后,回源请求降到原来的十分之一。另外 CDN 的刷新预热要谨慎使用,频繁刷新等于把缓存全推翻,一次误操作可能让当天流量翻两三倍。

第二坑是测试环境忘了关。开发联调用的测试环境随手建的,后来项目重构闲置了三个月,它的数据库容量还在慢慢长。清掉之后账单又降了一点。闲置环境定期清理这个原则,在腾讯云实践里也有同款忠告。再补一刀:多环境用完就关、不用就删,别留着过年。

第三坑是把免费额度当成商业承诺。活动会变、政策会调,你做成本规划时永远按官方文档的当前口径算,别信网上的二手数字。第二次被超额账单提醒的时候,我们就学乖了:每周日在日历上放一个看账单的提醒。

小结

到大流量的月份就主动做优化,平时就两个动作:每周看趋势图、每天扫一眼告警。剩下的精力拿去写业务,比抠几毛钱划算。费用的尽头不是零,而是可解释、可预期、可控制。

对小流量应用,云开发的费用基本上是友好的一元环境:免费额度起步,超出后按量小额扣费,四块七的一课远比买一年服务器便宜。核心就两句话:早期吃满免费额度、流量起来后盯住 CDN 和存储。等你哪天月账单稳定在两位数以上,说明应用真的长大了,到时候再回头按本书目录的监控章节做精细化治理。

下一节正式进入动手环节:把最小可用的功能范围定下来,跑通第一个带顶部导航栏的界面脚手架。那节代码不多,但跑完之后,你对这本书剩下的所有章节都会有路径感。

延伸阅读