5.6 云成本结构

一句话

云账单不是 “用了多少台机器”,而是四类计费维度的乘积——计算(规格 × 时长)、存储(容量 × 时长 + 请求数)、网络(出口 + 跨区)、请求与许可(次数 × 单价);优化顺序永远是先关闲置、再调规格、后买承诺折扣,最后才动架构。

四类计费维度:先知道钱花在哪

维度 计量单位 随什么增长 典型占比 优化杠杆
计算 vCPU·小时 / 实例·小时 实例数 × 规格 × 运行时长 30%–50% 规格降配、预留、Spot、闲置关停
存储 GB·月 + 请求数 数据量 + 访问次数 10%–25% 分层、生命周期、压缩、快照清理
网络 GB(出口 / 跨区 / 跨 AZ) 出网流量 + 副本同步 5%–30%(差异极大) CDN、同区闭环、压缩、边缘缓存
请求与许可 万次请求 / 席位 调用次数、日志摄取量、许可证 5%–20% 采样、批量、协议优化

占比差异极大的原因是业务形态:视频类出口费可能是计算费的 2 倍;日志密集型业务里 “指标与日志摄取” 常常是第二大项。判断自己的成本结构,唯一可靠的方法是按服务维度拆一次账单(标签 + 成本分配),而不是凭直觉。

三条最容易被忽略的账

项 为什么会漏 量级与修法
出口流量(egress) 潜意识里以为 “网络免费” 出公网按 GB 计费,跨地域专线另算;用 CDN 回源 + 压缩 + 边缘缓存压低
跨 AZ 流量 多 AZ 架构的 “固定税”,账单里是单独一行 每 GB 一分钱量级;靠同 AZ 优先路由减少
请求费 S3/对象存储、API 网关、日志摄取都按请求或按量收费 百万次请求起跳;批量合并、采样、TTL

一个具体例子:跨 AZ 的日志双写。每 GB 日志写两遍、查三遍,账单里可能出现 “存储费 < 请求费 < 跨区流量费” 的倒挂——这时最有效的优化不是换存储类型,而是把日志留在本 AZ、只跨区同步聚合指标。

闲置与影子成本清单

这些项金额不大但数量多,是 “没人认领的钱”:

影子成本 常见规模 处理
未挂载的云盘 每账号几十块,合计可观 按月扫描 available 状态的卷
旧快照与镜像 越滚越多,且按容量计费 设保留策略(如 30 天 + 每月 1 个全量)
未绑定的 EIP 闲置 IP 也收费 回收进池
空闲负载均衡 / NAT 网关 按小时计费,即使零流量 测试环境按需创建
无人用的测试环境 常年开机 定时开关机(工作时间外停机省 60%+)
日志保留 90 天但只查 7 天 存储费线性增长 热 7 天 + 冷归档 90 天

四种购买形态:把 “确定性” 折价买回来

形态 折扣量级 承诺 适合
按需 基准价 无 不可预测峰值、短期项目
预留实例 / 节省计划(1 年) 省 30%–40% 1 年 稳定基线
预留(3 年) 省 50%–60% 3 年 长期确定的核心负载
Spot / 抢占 省 60%–90% 无,可中断 批处理、CI、无状态可重试

折扣的具体数字随厂商、地域、付款方式(全预付 / 部分预付 / 无预付)变化,引用时必须说明 “以报价为准”。真正的方法论只有一条:把负载分成 “确定的基线” 与 “不确定的峰值”,基线买承诺、峰值买按需、可中断的买 Spot。基线的估计方法见 57.3 冗余系数。

单位经济:把账单变成可比较的数

账单总额无法判断 “贵不贵”,因为业务量也在涨。可比的指标是单位成本:

每订单成本 = 当月总成本 / 当月订单数
每租户成本 = 当月总成本 / 活跃租户数
每 GB 处理成本 = 当月数据链路成本 / 当月处理字节数
现象 含义 动作
账单涨 30%,单位成本不变 业务量涨了,健康 不用动
账单不变,单位成本涨 20% 效率在退化(冗余、闲置、架构劣化) 查闲置与规格
单位成本随规模下降后走平 到了当前架构的规模拐点 考虑架构调整(分片、缓存、存储分层)

单位成本的完整算法与折现口径见 4.2 成本-收益分析;存储层的分级策略见 39.3 存储分级。

优化顺序:按 “每投入 1 人日省多少钱” 排

顺序 动作 典型回报 风险
① 关停闲置、回收未挂载资源 立竿见影,1 人日可省 5%–15% 几乎为零
② 规格降配(rightsizing) 10%–30%,按实际 P95 用量 需留 30% 余量,避免打满
③ 承诺折扣(预留 / 节省计划) 20%–50%,无技术风险 承诺期绑定,需预测基线
④ 存储分层与生命周期 存储费降 40%–70% 取回延迟与请求费上升
⑤ 架构调整(缓存、合并、单元化) 幅度大但周期长 引入复杂度,需 ADR 记录

顺序的意义是先摘低垂果实:架构级优化往往要 1–3 个月,而第①步一天就能省出同等金额。反过来先上架构,会把 “闲置资源” 和 “架构低效” 混在一起,最后归因不清。FinOps 的组织化做法(成本分摊、预算、例会)见 57.4 FinOps 实践。

反模式

反模式 后果
不看账单,只看控制台估算 实际支出常是估算的 1.5–3 倍
只优化计算,不看出口流量 视频 / 下载类业务优化方向完全错
为省钱把副本挤到同一 AZ 省下的流量费远小于一次故障损失
预留买到峰值的 100% 业务下坡时承诺变成沉没成本
没有标签与成本分摊 没人认领的钱永远没人优化
用 “总账单” 判断成本效率 业务增长被误读为成本失控
过度 rightsizing 打满 CPU 延迟长尾恶化,稳定性换成本
先做架构优化再关闲置 浪费 1–3 个月,且效果被闲置掩盖

三条铁律

🔑 账单要按服务拆开看;拆不开的成本,既不能优化也不能归因。

🔑 单位成本是唯一可比的成本指标;总额只反映规模,不反映效率。

🔑 优化顺序:闲置 → 规格 → 承诺 → 架构;先摘低垂果实,再动结构。

自检

Q1 一个服务的账单三个月涨了 40%,但业务量只涨了 10%。先查哪三项?

▸ 答案:① 单位成本(账单 ÷ 业务量),确认是效率退化而不是统计口径变化;② 出口/跨区流量(这类费用常在一个架构变更后突增,比如把缓存与数据库分到了不同 AZ);③ 闲置与影子成本(新开的测试环境、未回收的云盘与快照)。先排除 “新增了什么” 再谈优化,否则会把业务增长当成浪费砍掉。

Q2 为什么 “把预留买到 100% 的峰值” 是危险的?

▸ 答案:因为预留是按承诺期付费,而峰值只出现在少数时段。买到峰值意味着:① 大部分时间你为闲置容量付钱;② 业务下坡或架构调整时,承诺无法退回,变成沉没成本。正确做法是基线(常态负载的 60%–70%)买预留,峰值买按需,可中断的买 Spot,把确定性折价买回来,把不确定性留给弹性。

Q3 团队把日志从 90 天改成 7 天,省了 40% 存储费,但第二个月总成本反而涨了。可能是什么原因?

▸ 答案:取回与查询成本转移。冷归档存储的读请求与检索(扫描)单价远高于热存储;如果团队为了排障频繁回捞历史日志,或把日志改成了 “按查询计费” 的模式,省下的容量费会被请求费吃掉。判断方法是按 “容量费 / 请求费 / 取回费” 三项分开看,而不是只看存储总额。

Q4 一个视频业务的成本里,出口流量占 60%。优化顺序应该怎么排?

▸ 答案:先动流量结构,再动计算:① CDN 命中率(回源量决定出口费);② 编码与封装(同画质码率降 20%–30%);③ 缓存键与 TTL(减少重复回源);④ 最后才看转码机器的规格。计算优化在这类业务里通常只能动 30% 的盘子,而流量能动的幅度更大——优化顺序必须跟着成本结构走。

Q5 为什么说 “优化闲置” 应该排在 “买预留” 之前?

▸ 答案:因为闲置资源也会被算进 “基线”,导致预留买多。先关掉闲置,基线才真实;在虚高的基线上买 3 年承诺,等于把浪费锁进合同。按投入产出比排:闲置清理通常 1 人日、回报 5%–15% 且无技术风险;预留需要准确的基线预测,且一旦买错无法退回。

跨篇相关:预留与 Spot 比例的容量依据见 57.3 冗余系数;成本优化的组织流程见 57.4 FinOps 实践;存储分层的取舍见 39.3 存储分级;TCO 与折现口径见 4.2 成本-收益分析;跨 AZ 流量的来源见 5.3 地域与可用区;出口费与锁定成本的关系见 5.7 云厂商锁定与迁移;弹性带来的峰值浪费见 5.4 弹性伸缩与自动扩缩容。