账单上的四行
一句话总结
云成本归根结底可以归纳为四个维度——运行了多长时间、存储了多少数据、 传输了多少数据、调用了多少次。 确认费用来自哪个维度,优化方向也就确定了。
为什么需要理解成本构成
云账单并不是单一的服务器价格,而是运行时间、存储容量与请求、数据 传输以及托管功能的总和。只降低一个维度,可能导致另一个维度的成本上升, 因此,阅读账单时不应只按资源类型划分,而应按费用产生的原因进行分析。
它是如何工作的
四个维度
| 维度 | 计费依据 | 降低成本的方法 |
|---|---|---|
| 计算 | 实例 × 时间 | 缩小规格、不使用时关闭、承诺折扣 |
| 存储 | GB × 月 | 生命周期策略、低价层级、删除 |
| 数据传输 | GB(主要是出站方向) | 重新设计路径、缓存、压缩 |
| 请求/作业 | 调用次数 | 批处理、缓存 |
关键在于第一行就写着**“不使用时关闭”**。如果开发与预发布环境只在 工作日的办公时间开启,仅这一项就能减少约 70% 的成本 (每周 24×7 = 168 小时,而实际只使用 9×5 = 45 小时)。
承诺折扣的结构
同一种实例,购买方式不同,价格也可能相差很大。
| 方式 | 折扣 | 条件 |
|---|---|---|
| 按需 | 无 | 随时启动或关闭 |
| 承诺使用(1~3 年) | 30~60% | 承诺使用期限,即使不用也要付费 |
| Spot / 抢占式 | 60~90% | 随时可能被回收 |
Spot 的折扣幅度非常大,但资源可能突然被回收。因此,它只能用于允许中断的 作业,例如批处理、CI Runner、可以重试的队列消费者。把它用于有状态 服务,就会引发事故。
承诺使用恰好相反。标准做法是只对**最低基线(baseline)**部分做出承诺, 波动部分使用按需资源补齐。如果按峰值做出承诺,闲置多少就会损失多少。
存储层级
根据访问频率不同,价格可能相差十倍以上。
자주 접근 → 가끔 → 드묾 → 보관용(아카이브)
비쌈 가장 쌈, 꺼내는 데 시간·요금
通过生命周期策略自动迁移数据,例如“超过 30 天转到低频层,超过 90 天转到 归档层,超过 365 天删除”。如果没有设置策略,数年的日志会不断积累, 而且始终留在最昂贵的存储层。
注意:从归档层取回数据既需要时间,也会产生费用。把经常访问的数据 放进去,反而会更加昂贵。
隐藏的费用
第一次查看账单时,通常会看到几项难以理解的费用。
- 已经分配但未使用的资源——与实例分离的卷、没有绑定的静态 IP。 两者只要存在就会计费。
- 快照累积——自动快照如果没有保留策略,就会持续堆积。
- 日志存储——启用日志采集后,把保留期设置为无限。
- NAT 网关——前面的课程已经讲过。
- 跨区域复制——启用后很容易忘记。
没有标签,就什么也做不了
要降低成本,首先必须知道谁为了什么创建了哪些资源,而标签承担的正是 这个职责。
Owner = platform-team
Env = prod | stage | dev
Service = payments
CostCenter = 1042
标签规则必须在资源数量还少时建立,才有可能真正执行。等数百个资源在没有标签的 情况下积累之后,事后补齐实际上几乎不可能。如果再通过策略禁止创建没有标签的资源, 规则就能自动得到遵守。
实际工作中会遇到的情况
- 开发环境夜间仍在运行,导致计算成本接近生产环境 → 首先检查运行计划。
- 无法删除已分离的卷 → 缺少所有者标签,无法判断它是否还在使用。
- 移入归档层后成本反而上升 → 没有按照包含恢复频率在内的总成本进行评估。
接下来要看什么
四个维度中最常被低估的一项——数据传输。