1. Optimización de Costos (FinOps)
Prácticas para maximizar valor de inversión en cloud y recursos tecnológicos.
1.1 💰 FinOps (Financial Operations)
Qué: Disciplina de gestión financiera cloud que une finanzas, tecnología y negocio.
Por qué: Cloud = OpEx variable. Sin control, costos crecen exponencialmente.
Quién: DevOps, FinOps Engineers, CFO, engineering leads.
Cuándo: Desde día 1 en cloud, revisar mensualmente.
Esfuerzo: FinOps bien ejecutado ahorra 40% costos cloud.
1.2 📊 Fases FinOps
| Fase | Qué | Actividades |
|---|---|---|
| Inform | Visibilidad total | Tagging, dashboards, chargeback |
| Optimize | Reducir desperdicio | Right-sizing, RIs, eliminar recursos idle |
| Operate | Cultura continua | Alertas, governance, automation |
1.3 🏷️ Tagging Strategy
Qué: Etiquetar recursos cloud con metadata.
Por qué: Trackear costos por proyecto/equipo/ambiente, accountability.
Cuándo: Aplicar tags en creación de recursos (policy enforcement).
Tags obligatorios:
| Tag | Ejemplo | Uso |
|---|---|---|
Environment |
prod, staging, dev | Separar ambientes |
Project |
payments, analytics | Chargeback por proyecto |
Owner |
team-platform, alice@company.com | Ownership |
CostCenter |
engineering, marketing | Contabilidad |
Application |
api, frontend | Agrupar componentes |
Ejemplo AWS:
{
"Environment": "production",
"Project": "payments-api",
"Owner": "team-platform",
"CostCenter": "engineering",
"Application": "api"
}
Enforcement: Policies que rechazan recursos sin tags obligatorios.
1.4 📏 Right-Sizing
Qué: Ajustar tamaño de recursos al uso real.
Por qué: Ahorro 40% eliminando over-provisioning.
Cuándo: Revisar mensual, automatizar recomendaciones.
Proceso:
- Monitorear uso real (CPU, memoria, disk)
- Identificar recursos sobre-dimensionados (<40% uso)
- Cambiar a instancia más pequeña
- Validar performance
Ejemplo:
EC2 m5.4xlarge (16 vCPU, 64GB RAM)
Uso real: 20% CPU, 30% RAM
→ Cambiar a m5.xlarge (4 vCPU, 16GB)
Ahorro: $450/mes → $112/mes = $338/mes (75%)
Herramientas: AWS Compute Optimizer, Google Recommender, CloudHealth
1.5 💳 Reserved Instances & Savings Plans
Qué: Compromiso de uso 1-3 años a cambio de descuento.
| Tipo | Compromiso | Descuento | Flexibilidad | Cuándo |
|---|---|---|---|---|
| On-Demand | Ninguno | 0% | Total | Carga variable |
| Savings Plans | $/hora, 1-3 años | 50% | Alta (tipo instancia) | Carga estable |
| Reserved Instances | Instancia específica, 1-3 años | 70% | Baja | Carga muy predecible |
| Spot Instances | Puede terminar | 90% | Ninguna | Workloads tolerantes |
Estrategia recomendada:
- 60% Savings Plans (baseline predecible)
- 20% On-Demand (flexibilidad)
- 20% Spot (batch jobs, dev)
ROI Ejemplo:
Workload: 10 instancias m5.large 24/7
On-Demand: $700/mes × 10 = $7,000/mes
Con Savings Plan 1 año:
$7,000 × 0.6 (40% descuento) = $4,200/mes
Ahorro: $2,800/mes = $33,600/año
1.6 ⚡ Spot Instances
Qué: Capacidad no utilizada con descuento masivo pero puede interrumpirse.
Por qué: 90% descuento para workloads fault-tolerant.
Cuándo: Batch processing, CI/CD, big data, testing.
Patrones:
| Pattern | Qué | Ejemplo |
|---|---|---|
| Stateless apps | Sin estado local | Workers procesando cola |
| Checkpointing | Guardar estado periódicamente | ML training con S3 checkpoints |
| Spot Fleet | Mezcla tipos instancias | Diversificar para disponibilidad |
| Fallback a On-Demand | Si no hay Spot disponible | ECS con Spot + On-Demand |
Interrupción:
- AWS da 2 min warning
- Handler: checkpoint, guardar estado, shutdown graceful
1.7 📉 Eliminar Desperdicio (Waste)
| Desperdicio | Qué | Cómo detectar | Solución |
|---|---|---|---|
| Recursos idle | Recursos sin uso | CPU <5%, network mínimo | Apagar fuera horario, auto-stop |
| Snapshots antiguos | Backups obsoletos | >90 días | Lifecycle policy automático |
| EBS unattached | Discos sin instancia | Filter: available | Eliminar tras verificar |
| Load Balancers vacíos | LBs sin targets | 0 registered targets | Eliminar |
| IPs elásticas sin usar | IPs no asociadas | Charges por IP sin asociar | Release IPs |
Ejemplo savings:
10 snapshots viejos × $0.05/GB × 100GB = $50/mes
5 EBS unattached × 100GB × $0.10/GB = $50/mes
3 IPs elásticas × $3.6/mes = $10.8/mes
Total: $110.8/mes eliminado ✅
1.8 ⏰ Scheduling (Apagar recursos)
Qué: Apagar recursos en horarios sin uso.
Por qué: Ahorro 70% en ambientes no-prod.
Cuándo: Dev, staging, QA (no 24/7 necesarios).
Ejemplo:
Ambiente Dev:
- 20 instancias
- Uso: Lunes-Viernes 8am-8pm (12h/día = 60h/semana)
- Apagar: Noches + weekends (108h/semana)
Ahorro: 108/168 = 64% del costo
$5,000/mes → $1,800/mes = $3,200/mes ahorro
Automatización:
- AWS Instance Scheduler
- Lambda con CloudWatch Events
- Tags:
AutoStop: true,Schedule: business-hours
1.9 📦 Storage Optimization
1.9.1 S3 Storage Classes
| Class | Latency | Costo | Uso |
|---|---|---|---|
| Standard | ms | $0.023/GB | Acceso frecuente |
| Intelligent-Tiering | ms | Auto-optimiza | Patrón desconocido |
| Infrequent Access | ms | $0.0125/GB | Acceso mensual |
| Glacier | minutos-horas | $0.004/GB | Archivos long-term |
| Deep Archive | horas | $0.00099/GB | Compliance 7+ años |
Lifecycle Policy:
{
"Rules": [{
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555}
}]
}
1.9.2 EBS Optimization
- Cambiar GP2 → GP3 (20% cheaper, mismo performance)
- Eliminar snapshots >90 días
- Resize volumes over-provisioned
1.10 🌐 Network Costs
Qué: Data transfer OUT es costoso (típicamente $0.09/GB).
Por qué: Puede ser 30% de bill total.
Optimización:
| Técnica | Qué | Ahorro |
|---|---|---|
| CloudFront CDN | Cache assets, reduce origin requests | 80% |
| S3 Transfer Acceleration | Optimiza uploads globales | Variable |
| VPC Endpoints | Tráfico privado AWS (sin internet) | Evita $0.09/GB |
| Compress responses | Gzip/Brotli | 80% menos datos |
| Same region | Mantener recursos en misma región | Free intra-region |
1.11 📊 Cost Monitoring & Alerting
1.11.1 Dashboards
Secciones clave:
- Spend by Service: EC2, RDS, S3, etc.
- Spend by Environment: prod, staging, dev
- Spend by Team: Chargeback
- Trend: MoM growth, forecasts
- Anomalies: Spikes inesperados
1.11.2 Alertas
Alert: Daily spend > $1,000
Alert: MoM growth > 20%
Alert: New service > $100/día
Alert: Recursos sin tags
Herramientas: AWS Cost Explorer, CloudWatch Billing Alarms, Datadog Cloud Cost
1.12 🎯 FinOps KPIs
| Métrica | Target | Fórmula |
|---|---|---|
| Savings Rate | >20% | (Savings / Total Spend) × 100 |
| RI/SP Coverage | >70% | Horas covered / Total horas |
| Sin Etiquetar | 0% | Recursos sin tags / Total |
| Idle Resource % | <5% | Costo recursos idle / Total |
| Cost per Customer | ↓ Over time | Total Spend / Active Customers |
1.13 🔄 FinOps Culture
1.13.1 Shared Responsibility
| Stakeholder | Responsabilidad |
|---|---|
| Engineers | Write efficient code, right-size, apagar recursos |
| Architects | Diseñar cost-effective, usar managed services |
| Finance | Budgets, forecasting, chargeback |
| Leadership | Priorizar cost optimization, KPIs |
1.13.2 Best Practices
- Showback/Chargeback: Equipos ven su gasto
- Cost in PRs: Estimar costo de cambios
- Budget alerts: Notificar cuando se acerca límite
- Regular reviews: Mensual por equipo
- Gamification: Reconocer equipos que más ahorran
1.14 🚫 Anti-patrones
| Anti-patrón | Problema | Solución |
|---|---|---|
| Lift & shift sin optimizar | Migrar infra sin cambios | Modernizar para cloud-native |
| No monitorear costos | Sorpresas en bill | Alertas, dashboards diarios |
| Over-provisioning "por las dudas" | Pagar capacidad no usada | Auto-scaling, right-sizing |
| No usar managed services | Mantener DBs propias | RDS, Aurora vs self-managed |
| Ignorar dev/staging costs | 40% del spend en no-prod | Scheduling, Spot instances |