云成本优化
00:00
云成本管理框架、资源优化策略、预留与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 单位经济学
将云成本与业务指标关联:
常见单位经济学指标:
| 业务类型 | 业务指标 | 单位成本 |
|---|---|---|
| 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% | 按计算家族承诺 | 灵活承诺 |
预留实例购买决策:
例如:m5.large 按需 511($0.058/h):
1年全预付不适用,3年全预付 0.039/h):
3年承诺约 2 年回本。
2.3 Spot 实例
Spot 实例利用云厂商闲置容量,折扣高达 90%:
Spot 实例定价模型:
| 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 + 预测性伸缩
→ 平衡成本与性能
预测性伸缩:基于历史数据预测负载,提前扩容:
3. 存储成本优化
3.1 存储分层策略
根据访问频率自动分层:
┌──────────────────────────────────────────────────┐
│ 存储分层决策树 │
│ │
│ 数据访问频率? │
│ ├── 频繁 (>1次/天) → Standard │
│ ├── 偶尔 (>1次/月) → Standard-IA │
│ ├── 稀少 (>1次/年) → Glacier Instant │
│ ├── 极少 (<1次/年) → Glacier Deep Archive │
│ └── 未知 → Intelligent-Tiering │
└──────────────────────────────────────────────────┘
生命周期规则成本节省计算:
3.2 EBS 优化
| 优化措施 | 节省幅度 | 实施方式 |
|---|---|---|
| 删除未挂载卷 | 100% | 定期扫描未挂载 EBS |
| 缩减过大卷 | 30-60% | 监控磁盘利用率 |
| 快照清理 | 变化大 | 删除过期快照 |
| gp2 → gp3 | ~20% | gp3 更便宜且性能独立 |
| 降级冷数据卷 | 50%+ | 冷数据用 st1/sc1 |
gp2 vs gp3 成本对比:
300GB 卷,gp2 = 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 负载。
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 区域选择
不同区域价格差异:
| 区域 | EC2 系数 | S3 系数 | 数据传出系数 |
|---|---|---|---|
| us-east-1 | 1.00 | 1.00 | 1.00 |
| eu-west-1 | 1.05 | 1.00 | 1.00 |
| ap-northeast-1 | 1.10 | 1.00 | 1.00 |
| ap-southeast-1 | 1.15 | 1.02 | 1.00 |
| sa-east-1 | 1.25 | 1.05 | 1.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%,需审批"
异常检测:
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. 发送清理报告