前置知识: 云计算

云成本优化

9 minAdvanced2026/6/14

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

1. 云成本管理框架

1.1 FinOps 定义

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

FinOps 成熟度模型:

┌──────────────────────────────────────────────────┐
│              FinOps 成熟度                        │
│                                                   │
│  Crawl (爬行) → Walk (行走) → Run (奔跑)          │
│                                                   │
│  基础可见性     优化与治理     持续优化与自动化     │
│  成本分配       预留采购       智能伸缩            │
│  标签策略       异常检测       自动Right-sizing    │
│  预算告警       团队问责       单位经济学驱动      │
└──────────────────────────────────────────────────┘

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

1.3 单位经济学

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

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

常见单位经济学指标:

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

2. 计算资源优化

2.1 Right-sizing(规格调整)

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

当前: 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. 执行调整
   ├── 停机调整(简单)
   └── 蓝绿替换(零停机)

2.2 预留实例(Reserved Instances)

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

预留实例购买决策

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

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

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

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

盈亏平衡=10220.0960.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 组合
┌──────────────────────────────────────────────┐
│           Spot 混合策略                        │
│                                               │
│  按需实例 (N 个) ── 核心容量,保证基线         │
│  Spot 实例 (M 个) ── 弹性容量,可被中断        │
│                                               │
│  总容量 = N + M                               │
│  保证容量 ≥ N                                 │
└──────────────────────────────────────────────┘

2.4 自动伸缩优化

伸缩策略成本优化

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

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

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

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

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

3. 存储成本优化

3.1 存储分层策略

根据访问频率自动分层:

┌──────────────────────────────────────────────────┐
│              存储分层决策树                        │
│                                                   │
│  数据访问频率?                                     │
│  ├── 频繁 (>1次/天) → Standard                    │
│  ├── 偶尔 (>1次/月) → Standard-IA                 │
│  ├── 稀少 (>1次/年) → Glacier Instant             │
│  ├── 极少 (<1次/年) → Glacier Deep Archive        │
│  └── 未知          → Intelligent-Tiering          │
└──────────────────────────────────────────────────┘

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

月节省=数据量×(当前单价目标单价)检索费\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,IOPS3000)×$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 快照优化

快照管理策略:
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 节省

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

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

S3 传输加速

远距离上传: 用户(亚洲) → 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

5. FinOps 实践

5.1 FinOps 团队结构

┌──────────────────────────────────────────────────┐
│              FinOps 组织架构                      │
│                                                   │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │  财务    │  │  工程    │  │  业务    │      │
│  │  预算    │  │  优化    │  │  价值    │      │
│  │  预测    │  │  架构    │  │  优先级  │      │
│  │  报告    │  │  自动化  │  │  ROI     │      │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘      │
│       │              │              │            │
│  ┌────▼──────────────▼──────────────▼─────┐     │
│  │          FinOps 平台/流程               │     │
│  └────────────────────────────────────────┘     │
└──────────────────────────────────────────────────┘

5.2 成本告警与预算

多级预算告警

月度预算: $100,000

├── 50% ($50,000)  → 信息通知: "已使用50%预算"
├── 80% ($80,000)  → 警告通知: "已使用80%预算,请检查"
├── 100% ($100,000) → 严重告警: "预算已用完"
└── 120% ($120,000) → 紧急告警: "超预算20%,需审批"

异常检测

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

5.3 成本优化看板

关键指标:

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

5.4 持续优化循环

┌──────────────────────────────────────────────────┐
│              FinOps 持续优化循环                   │
│                                                   │
│  Inform (告知)                                    │
│  ├── 成本分配与可视化                             │
│  ├── 预算与告警                                   │
│  └── 异常检测                                     │
│       │                                           │
│       ▼                                           │
│  Optimize (优化)                                  │
│  ├── Right-sizing                                 │
│  ├── 预留采购                                     │
│  ├── 存储分层                                     │
│  └── 架构优化                                     │
│       │                                           │
│       ▼                                           │
│  Operate (运营)                                   │
│  ├── 自动化策略                                   │
│  ├── 治理与合规                                   │
│  └── 持续监控                                     │
│       │                                           │
│       └──────────► 回到 Inform                    │
└──────────────────────────────────────────────────┘

5.5 成本优化自动化

自动 Right-sizing

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

自动 Spot 中断处理

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

自动快照清理

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