Lab : Optimización de Costos
Objetivo
Analizar una infraestructura AWS y proponer recomendaciones de optimización con justificaciones y estimaciones de ahorros.
Escenario
Contexto
TechStartup Inc. gasta $15,000/mes en AWS y desea reducir sus costos en un 30% sin afectar el rendimiento.
Infraestructura Actual
┌─────────────────────────────────────────────────────────────┐
│ INFRASTRUCTURE TECHSTARTUP │
├─────────────────────────────────────────────────────────────┤
│ │
│ COMPUTE ($8,500/mes) │
│ ───────────────────── │
│ • 10x m5.xlarge (producción web) 24/7 $1,400 │
│ • 5x m5.large (producción API) 24/7 $350 │
│ • 3x r5.2xlarge (producción DB) 24/7 $900 │
│ • 5x m5.large (staging) 24/7 $350 │
│ • 8x c5.xlarge (batch processing) 24/7 $1,100 │
│ • 4x t3.large (dev) 24/7 $250 │
│ • 2x m5.xlarge (CI/CD runners) 24/7 $280 │
│ Otros (Lambda, misc) $3,870 │
│ │
│ STORAGE ($3,000/mes) │
│ ───────────────────── │
│ • EBS gp2 volumes 5 TB $500 │
│ • S3 Standard 20 TB $460 │
│ • EBS Snapshots 10 TB $500 │
│ • RDS Storage 2 TB $200 │
│ • Backup/Archive $1,340 │
│ │
│ NETWORK ($2,500/mes) │
│ ───────────────────── │
│ • NAT Gateways (3x) $300 │
│ • Data Transfer $2,000 │
│ • Load Balancers (5x) $200 │
│ │
│ OTROS ($1,000/mes) │
│ ─────────────────── │
│ • CloudWatch, Secrets Manager, etc. │
│ │
│ TOTAL : $15,000/mes │
│ │
└─────────────────────────────────────────────────────────────┘
Métricas de Uso
| Recurso | CPU Prom | Mem Prom | Horas activas |
|---|---|---|---|
| Web (prod) | 35% | 45% | 24/7 |
| API (prod) | 40% | 50% | 24/7 |
| DB (prod) | 65% | 70% | 24/7 |
| Staging | 15% | 20% | 9h-18h días laborables |
| Batch | 80% | 60% | 2h/día (noche) |
| Dev | 10% | 15% | 9h-18h días laborables |
| CI/CD | 25% | 30% | Variable |
Parte 1 : Análisis de Costos
Ejercicio 1.1 : Identificación de Problemas
Identifique las 5 principales fuentes de desperdicio:
| # | Recurso | Problema | Impacto Estimado |
|---|---|---|---|
| 1 | ? | ? | $?/mes |
| 2 | ? | ? | $?/mes |
| 3 | ? | ? | $?/mes |
| 4 | ? | ? | $?/mes |
| 5 | ? | ? | $?/mes |
💡 Solución
| # | Recurso | Problema | Impacto Estimado |
|---|---|---|---|
| 1 | Staging 24/7 | Debería estar detenido fuera de horario | $250/mes |
| 2 | Dev 24/7 | Igual, desperdicio noche/fin de semana | $180/mes |
| 3 | Batch 24/7 | Solo corre 2h/día | $900/mes |
| 4 | Web sobredimensionado | CPU 35% → right-size | $400/mes |
| 5 | Sin RI/SP | Todo On-Demand | $2,500/mes |
Ejercicio 1.2 : Análisis por Tag
El tagging actual es incompleto. Proponga una estrategia de tagging:
| Tag | Obligatorio | Valores Posibles |
|---|---|---|
| ? | Sí/No | ? |
| ? | Sí/No | ? |
| ? | Sí/No | ? |
| ? | Sí/No | ? |
💡 Solución
| Tag | Obligatorio | Valores Posibles |
|---|---|---|
| Environment | Sí | production, staging, development |
| Project | Sí | web-app, api, batch, infra |
| Owner | Sí | team-frontend, team-backend, team-data |
| CostCenter | Sí | CC-PROD, CC-DEV, CC-OPS |
| AutoShutdown | No | true, false |
| ExpiryDate | No | YYYY-MM-DD |
Parte 2 : Plan de Optimización
Ejercicio 2.1 : Right-Sizing
Proponga nuevos tipos de instancias:
| Actual | Nuevo | Justificación | Ahorro |
|---|---|---|---|
| m5.xlarge (web) | ? | ? | $? |
| m5.large (staging) | ? | ? | $? |
| t3.large (dev) | ? | ? | $? |
💡 Solución
| Actual | Nuevo | Justificación | Ahorro |
|---|---|---|---|
| 10x m5.xlarge (web) | 10x m5.large | CPU 35% OK con large | $700/mes |
| 5x m5.large (staging) | 3x t3.medium | Staging poco usado, burstable OK | $280/mes |
| 4x t3.large (dev) | 4x t3.medium | Dev muy subutilizado | $100/mes |
Ejercicio 2.2 : Scheduling
Configure el apagado automático de entornos no productivos:
# Complete el script de scheduling
# Staging : apagado 18h, encendido 9h (días laborables)
# Dev : apagado 19h, encendido 8h (días laborables)
# EventBridge rule para apagar staging a las 18h
aws events put-rule \
--name stop-staging-evening \
--schedule-expression "cron(_______________)" \
--state ENABLED
# Lambda o SSM Automation target
# ...
💡 Solución
# Apagar staging a las 18h UTC, Lun-Vie
aws events put-rule \
--name stop-staging-evening \
--schedule-expression "cron(0 18 ? * MON-FRI *)" \
--state ENABLED
# Encender staging a las 9h UTC, Lun-Vie
aws events put-rule \
--name start-staging-morning \
--schedule-expression "cron(0 9 ? * MON-FRI *)" \
--state ENABLED
# Apagar dev a las 19h UTC, Lun-Vie
aws events put-rule \
--name stop-dev-evening \
--schedule-expression "cron(0 19 ? * MON-FRI *)" \
--state ENABLED
# Encender dev a las 8h UTC, Lun-Vie
aws events put-rule \
--name start-dev-morning \
--schedule-expression "cron(0 8 ? * MON-FRI *)" \
--state ENABLED
Ahorro staging: 14h/día × 5 días × 4 semanas = 280h/mes (vs 720h) → Reducción ~60% = $210/mes
Ahorro dev: 13h/día × 5 días × 4 semanas = 260h/mes → Reducción ~65% = $160/mes
Ejercicio 2.3 : Spot Instances
Identifique los workloads candidatos para Spot:
| Workload | ¿Candidato Spot? | Justificación |
|---|---|---|
| Web (prod) | ? | ? |
| Batch processing | ? | ? |
| CI/CD runners | ? | ? |
💡 Solución
| Workload | ¿Candidato Spot? | Justificación |
|---|---|---|
| Web (prod) | ❌ No | Crítico, no puede ser interrumpido |
| Batch processing | ✅ Sí | Ejecución corta, puede reanudarse, 60-90% ahorro |
| CI/CD runners | ✅ Sí | Tolerante a interrupciones, jobs pueden reintentarse |
Ahorros Spot:
- Batch: $1,100 × 70% = $770/mes de ahorro
- CI/CD: $280 × 65% = $180/mes de ahorro
Ejercicio 2.4 : Reserved Instances / Savings Plans
Calcule la cobertura óptima:
Workload estable 24/7 (candidato RI/SP) :
- Producción web : 10 instancias → ?
- Producción API : 5 instancias → ?
- Producción DB : 3 instancias → ?
Cálculo ahorro con 1-year Savings Plan (-30%) :
💡 Solución
Workload estable (después de right-sizing):
- Web: 10x m5.large = ~$700/mes
- API: 5x m5.large = ~$350/mes
- DB: 3x r5.2xlarge = ~$900/mes
Total elegible RI/SP: $1,950/mes
Con Compute Savings Plan 1-year (-30%):
- Ahorro: $1,950 × 30% = $585/mes
Compromiso mensual: $1,365/mes (vs $1,950)
Parte 3 : Optimización Storage
Ejercicio 3.1 : Migración gp2 → gp3
EBS gp2 actual: 5 TB = $500/mes
Migración a gp3: cálculo de ahorro
💡 Solución
gp2 pricing: $0.10/GB/mes = 5000 × $0.10 = $500/mes
gp3 pricing: $0.08/GB/mes = 5000 × $0.08 = $400/mes
Ahorro: $100/mes (20%)
Además: gp3 ofrece 3000 IOPS base gratis vs gp2 que escala con el tamaño.
Ejercicio 3.2 : S3 Lifecycle Policies
Proponga reglas de lifecycle para S3:
| Clase | Después | Datos | Ahorro |
|---|---|---|---|
| Standard | 0 días | Activos | Referencia |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
💡 Solución
| Clase | Después | Datos | Costo/GB |
|---|---|---|---|
| Standard | 0 días | < 30 días | $0.023 |
| Standard-IA | 30 días | 30-90 días | $0.0125 |
| Glacier | 90 días | > 90 días | $0.004 |
Estimación con 20 TB:
- Si 30% activo, 40% IA, 30% archivo
- Standard: 6 TB × $0.023 = $138
- IA: 8 TB × $0.0125 = $100
- Glacier: 6 TB × $0.004 = $24
- Total: $262/mes vs $460 = $198 ahorro (43%)
Parte 4 : Síntesis
Ejercicio 4.1 : Tabla Resumen
Complete la tabla de ahorros:
| Categoría | Acción | Ahorro/mes | % |
|---|---|---|---|
| Compute | Right-sizing | $? | ?% |
| Compute | Scheduling | $? | ?% |
| Compute | Spot | $? | ?% |
| Compute | Savings Plans | $? | ?% |
| Storage | gp2→gp3 | $? | ?% |
| Storage | S3 Lifecycle | $? | ?% |
| TOTAL | $? | ?% |
💡 Solución
| Categoría | Acción | Ahorro/mes | % del total |
|---|---|---|---|
| Compute | Right-sizing | $1,080 | 7.2% |
| Compute | Scheduling | $370 | 2.5% |
| Compute | Spot (batch+CI) | $950 | 6.3% |
| Compute | Savings Plans | $585 | 3.9% |
| Storage | gp2→gp3 | $100 | 0.7% |
| Storage | S3 Lifecycle | $198 | 1.3% |
| TOTAL | $3,283 | 21.9% |
Costo inicial: $15,000/mes Costo optimizado: $11,717/mes Ahorro: $3,283/mes es decir ~22%
Para alcanzar 30%, acciones adicionales:
- Revisar arquitectura (¿serverless?)
- Negociar EDP con AWS
- Optimizar data transfer
Entregable Final
Documento a Producir
- Análisis del estado actual con identificación de desperdicios
- Estrategia de tagging completa
- Plan de optimización detallado con cálculos
- Tabla resumen de ahorros
- Recomendaciones prioritarias (quick wins vs largo plazo)
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| Análisis correcto de desperdicios | /20 |
| Estrategia de tagging | /15 |
| Cálculos de ahorros | /25 |
| Plan accionable | /25 |
| Calidad del documento | /15 |
| Total | /100 |
Semana siguiente: MODULE 15 - CloudFormation