前置知识: 云计算

云成本优化

6 min高级

云成本管理框架、资源优化策略、预留与Spot实例、存储成本优化、网络成本优化、FinOps实践。

1. 云成本管理框架

1.1 FinOps 定义

FinOps(Financial Operations)是将财务、技术和业务团队结合在一起,通过数据驱动的决策来优化云成本的实践。

FinOps 成熟度模型:

Crawl 爬行

基础可见性、成本分配、标签策略、预算告警

Walk 行走

优化与治理、预留采购、异常检测、团队问责

Run 奔跑

持续优化与自动化、智能伸缩、自动 Right-sizing、单位经济学驱动

Crawl 爬行

基础可见性、成本分配、标签策略、预算告警

Walk 行走

优化与治理、预留采购、异常检测、团队问责

Run 奔跑

持续优化与自动化、智能伸缩、自动 Right-sizing、单位经济学驱动

mermaid diagram

1.2 成本可见性

成本分配标签:

标签键描述示例
Environment环境production / staging / dev
Team团队backend / frontend / data
Service服务user-service / order-service
CostCenter成本中心CC-001 / CC-002
Project项目project-alpha

成本分析维度:

总成本

按服务: EC2 / S3 / RDS / CloudFront ...

按团队: 后端 / 前端 / 数据 / 运维

按环境: 生产 / 测试 / 开发

按区域: us-east-1 / eu-west-1 / ap-northeast-1

按账户: 账户A / 账户B / 账户C

总成本

按服务: EC2 / S3 / RDS / CloudFront ...

按团队: 后端 / 前端 / 数据 / 运维

按环境: 生产 / 测试 / 开发

按区域: us-east-1 / eu-west-1 / ap-northeast-1

按账户: 账户A / 账户B / 账户C

mermaid diagram

1.3 单位经济学

将云成本与业务指标关联:

单位成本=云总成本业务指标\text{单位成本} = \frac{\text{云总成本}}{\text{业务指标}}

常见单位经济学指标:

业务类型业务指标单位成本
SaaS活跃用户数$/MAU
电商订单数$/订单
流媒体观看时长$/小时
API 服务API 调用数$/百万调用

2. 计算资源优化

2.1 Right-sizing(规格调整)

Right-sizing 是将实例规格匹配实际工作负载需求:

plaintext
当前: m5.2xlarge (8 vCPU, 32GB)
实际使用: CPU 15%, 内存 40%
推荐: m5.large (2 vCPU, 8GB)
节省: ~75%

Right-sizing 分析流程:

1. 收集 CloudWatch 指标(14-30天)

CPU 利用率

内存利用率(需 CloudWatch Agent)

网络吞吐

磁盘 I/O

2. 识别低利用率实例

CPU < 40% 持续 14 天

内存 < 40% 持续 14 天

3. 推荐合适规格

基于峰值利用率 + 安全余量

考虑突发需求

4. 执行调整

停机调整(简单)

蓝绿替换(零停机)

1. 收集 CloudWatch 指标(14-30天)

CPU 利用率

内存利用率(需 CloudWatch Agent)

网络吞吐

磁盘 I/O

2. 识别低利用率实例

CPU < 40% 持续 14 天

内存 < 40% 持续 14 天

3. 推荐合适规格

基于峰值利用率 + 安全余量

考虑突发需求

4. 执行调整

停机调整(简单)

蓝绿替换(零停机)

mermaid diagram

2.2 预留实例(Reserved Instances)

类型折扣灵活性适用场景
标准预留最高 72%不可更改实例族稳定工作负载
可转换预留最高 66%可更改实例族需灵活调整
节省计划最高 72%按计算家族承诺灵活承诺

折扣为 AWS 官方口径的相对按需价上限,实际折扣随实例族/区域/付款方式浮动, 采购前以官方定价计算器为准。

预留实例购买决策:

盈亏平衡点=预付费用按需小时价−预留小时价\text{盈亏平衡点} = \frac{\text{预付费用}}{\text{按需小时价} - \text{预留小时价}}

例如:m5.large 按需 0.096/h,1年全预付预留0.096/h,1年全预付预留 511($0.058/h):

盈亏平衡=5110.096−0.058=13,447 小时≈560 天\text{盈亏平衡} = \frac{511}{0.096 - 0.058} = 13{,}447 \text{ 小时} \approx 560 \text{ 天}

1年全预付不适用,3年全预付 1,022(1{,}022(0.039/h):

盈亏平衡=10220.096−0.039=17,930 小时≈747 天\text{盈亏平衡} = \frac{1022}{0.096 - 0.039} = 17{,}930 \text{ 小时} \approx 747 \text{ 天}

3年承诺约 2 年回本。

2.3 Spot 实例

Spot 实例利用云厂商闲置容量,折扣高达 90%:

Spot 实例定价模型:

Spot 价格=市场供需决定\text{Spot 价格} = \text{市场供需决定} 中断概率∝Spot 价格按需价格\text{中断概率} \propto \frac{\text{Spot 价格}}{\text{按需价格}}
Spot 价格/按需价格中断概率风险等级
< 30%< 5%/周低
30%-50%5-10%/周中
> 50%> 10%/周高

Spot 实例最佳实践:

  • Spot Fleet:多实例类型 + 多 AZ 分散风险
  • Spot 中断通知:2 分钟预警,优雅处理
  • 检查点机制:定期保存计算状态
  • 混合策略:按需 + Spot 组合

按需实例 N 个

核心容量,保证基线

Spot 实例 M 个

弹性容量,可被中断

总容量 = N + M

保证容量 ≥ N

按需实例 N 个

核心容量,保证基线

Spot 实例 M 个

弹性容量,可被中断

总容量 = N + M

保证容量 ≥ N

mermaid diagram

2.4 自动伸缩优化

伸缩策略成本优化:

plaintext
保守策略: min=5, max=20, target=70% CPU
  → 响应快,但可能过度配置

激进策略: min=2, max=20, target=85% CPU
  → 成本低,但可能影响性能

推荐: min=3, max=20, target=75% CPU + 预测性伸缩
  → 平衡成本与性能

预测性伸缩:基于历史数据预测负载,提前扩容:

预测负载(t)=α×历史负载(t−7d)+(1−α)×趋势(t)\text{预测负载}(t) = \alpha \times \text{历史负载}(t - 7d) + (1-\alpha) \times \text{趋势}(t)

3. 存储成本优化

3.1 存储分层策略

根据访问频率自动分层:

频繁 >1次/天

偶尔 >1次/月

稀少 >1次/年

极少 <1次/年

未知

数据访问频率?

Standard

Standard-IA

Glacier Instant

Glacier Deep Archive

Intelligent-Tiering

频繁 >1次/天

偶尔 >1次/月

稀少 >1次/年

极少 <1次/年

未知

数据访问频率?

Standard

Standard-IA

Glacier Instant

Glacier Deep Archive

Intelligent-Tiering

mermaid diagram

生命周期规则成本节省计算:

月节省=数据量×(当前单价−目标单价)−检索费\text{月节省} = \text{数据量} \times (\text{当前单价} - \text{目标单价}) - \text{检索费}

3.2 EBS 优化

优化措施节省幅度实施方式
删除未挂载卷100%定期扫描未挂载 EBS
缩减过大卷30-60%监控磁盘利用率
快照清理变化大删除过期快照
gp2 → gp3~20%gp3 更便宜且性能独立
降级冷数据卷50%+冷数据用 st1/sc1

gp2 vs gp3 成本对比:

Cgp2=容量(GB)×$0.10/GBC_{\text{gp2}} = \text{容量(GB)} \times \$0.10/\text{GB} Cgp3=容量(GB)×$0.08/GB+max⁡(0,IOPS−3000)×$0.005+max⁡(0,吞吐−125)×$0.04C_{\text{gp3}} = \text{容量(GB)} \times \$0.08/\text{GB} + \max(0, \text{IOPS} - 3000) \times \$0.005 + \max(0, \text{吞吐} - 125) \times \$0.04

300GB 卷,gp2 = 30/月,gp3=30/月,gp3 = 24/月,节省 20%。

3.3 快照优化

plaintext
快照管理策略:
1. 保留策略: 日快照保留7天,周快照保留4周,月快照保留12月
2. 删除孤立快照: 无关联 AMI 的快照
3. 压缩快照: 使用第三方工具压缩
4. 跨区域复制: 仅复制必要快照

4. 网络成本优化

4.1 数据传输费用

数据传输是云成本中容易被忽视的部分:

传输方向费用
入站到 AWS免费
同区域 EC2 之间免费
跨区域 EC2 之间$0.02/GB
出站到互联网$0.09/GB (前10TB)
S3 跨区域复制$0.02/GB

4.2 网络优化策略

CDN 卸载:

CDN 节省=可缓存流量×(EC2 出站费−CloudFront 费)\text{CDN 节省} = \text{可缓存流量} \times (\text{EC2 出站费} - \text{CloudFront 费}) =可缓存流量×($0.09−$0.085)=$0.005/GB= \text{可缓存流量} \times (\$0.09 - \$0.085) = \$0.005/\text{GB}

虽然单价差异小,但 CDN 还减少了 EC2 负载。

VPC Endpoint 节省:

plaintext
无 Endpoint: EC2 → NAT Gateway → 互联网 → S3
  费用: NAT 数据处理费 $0.045/GB + NAT 小时费

有 Endpoint: EC2 → VPC Gateway Endpoint → S3
  费用: 免费 (Gateway Endpoint 对 S3/DynamoDB 免费)

S3 传输加速:

plaintext
远距离上传: 用户(亚洲) → S3(美国)
  直接上传: 高延迟,可能超时
  Transfer Acceleration: 用户 → 边缘节点 → 优化路径 → S3
  额外费用: $0.04/GB (但减少失败重传)

4.3 区域选择

不同区域价格差异:

区域价格系数=目标区域价格us-east-1 价格\text{区域价格系数} = \frac{\text{目标区域价格}}{\text{us-east-1 价格}}
区域EC2 系数S3 系数数据传出系数
us-east-11.001.001.00
eu-west-11.051.001.00
ap-northeast-11.101.001.00
ap-southeast-11.151.021.00
sa-east-11.251.051.00

上表为量级示意,各区域具体单价与折扣随时间调整,选区前以官方定价页为准; 区域间价差通常在 10-30%,真正的大头往往在跨区/出站流量而不是单价本身。

5. FinOps 实践

5.1 FinOps 团队结构

财务

预算/预测/报告

FinOps 平台/流程

工程

优化/架构/自动化

业务

价值/优先级/ROI

财务

预算/预测/报告

FinOps 平台/流程

工程

优化/架构/自动化

业务

价值/优先级/ROI

mermaid diagram

5.2 成本告警与预算

多级预算告警:

月度预算: $100,000

50% ($50,000) → 信息通知: '已使用50%预算'

80% ($80,000) → 警告通知: '已使用80%预算,请检查'

100% ($100,000) → 严重告警: '预算已用完'

120% ($120,000) → 紧急告警: '超预算20%,需审批'

月度预算: $100,000

50% ($50,000) → 信息通知: '已使用50%预算'

80% ($80,000) → 警告通知: '已使用80%预算,请检查'

100% ($100,000) → 严重告警: '预算已用完'

120% ($120,000) → 紧急告警: '超预算20%,需审批'

mermaid diagram

异常检测:

异常分数=∣实际成本−预测成本∣标准差\text{异常分数} = \frac{|\text{实际成本} - \text{预测成本}|}{\text{标准差}} 若异常分数>3⇒触发告警\text{若异常分数} > 3 \Rightarrow \text{触发告警}

5.3 成本优化看板

关键指标:

指标计算目标
浪费率未使用资源成本 / 总成本< 10%
预留覆盖率预留实例覆盖的支出 / 可预留支出> 70%
单位成本趋势当月单位成本 vs 上月下降或持平
Spot 利用率Spot 支出 / 总计算支出> 20%
标签覆盖率有标签资源 / 总资源> 95%

5.4 持续优化循环

Inform 告知

成本分配与可视化/预算与告警/异常检测

Optimize 优化

Right-sizing/预留采购/存储分层/架构优化

Operate 运营

自动化策略/治理与合规/持续监控

Inform 告知

成本分配与可视化/预算与告警/异常检测

Optimize 优化

Right-sizing/预留采购/存储分层/架构优化

Operate 运营

自动化策略/治理与合规/持续监控

mermaid diagram

5.5 成本优化自动化

自动 Right-sizing:

plaintext
CloudWatch 指标 → Lambda 分析 → 生成建议 →
  自动执行(开发环境)或
  人工审批(生产环境)

自动 Spot 中断处理:

plaintext
Spot 中断通知 → EventBridge → Lambda →
  1. 标记实例为 draining
  2. 从负载均衡器移除
  3. 在新 Spot 实例启动替代
  4. 等待优雅关闭

自动快照清理:

plaintext
每日定时 → Lambda →
  1. 列出所有快照
  2. 检查关联 AMI
  3. 删除超过保留期的孤立快照
  4. 发送清理报告

小结

  • 初学者要点:成本优化三板斧——右置(规格对齐实际用量)、预留(稳定负载 换折扣)、竞价(可中断负载薅闲置算力);标签是成本归因的前提,没有标签 一切优化都无从谈起。
  • 进阶注意:网络出站流量是最隐蔽的成本黑洞,跨区复制与公网出站都要进 预算模型;Spot 必须设计好 2 分钟中断处理(检查点 + 多实例类型池); FinOps 的本质是把成本变成工程团队的日常指标(单位成本趋势),而不是财务 月底的”账单惊吓”。