Saltar al contenido principal

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​

RecursoCPU PromMem PromHoras activas
Web (prod)35%45%24/7
API (prod)40%50%24/7
DB (prod)65%70%24/7
Staging15%20%9h-18h días laborables
Batch80%60%2h/día (noche)
Dev10%15%9h-18h días laborables
CI/CD25%30%Variable

Parte 1 : Análisis de Costos​

Ejercicio 1.1 : Identificación de Problemas​

Identifique las 5 principales fuentes de desperdicio:

#RecursoProblemaImpacto Estimado
1??$?/mes
2??$?/mes
3??$?/mes
4??$?/mes
5??$?/mes
💡 Solución
#RecursoProblemaImpacto Estimado
1Staging 24/7Debería estar detenido fuera de horario$250/mes
2Dev 24/7Igual, desperdicio noche/fin de semana$180/mes
3Batch 24/7Solo corre 2h/día$900/mes
4Web sobredimensionadoCPU 35% → right-size$400/mes
5Sin RI/SPTodo On-Demand$2,500/mes

Ejercicio 1.2 : Análisis por Tag​

El tagging actual es incompleto. Proponga una estrategia de tagging:

TagObligatorioValores Posibles
?Sí/No?
?Sí/No?
?Sí/No?
?Sí/No?
💡 Solución
TagObligatorioValores Posibles
EnvironmentSíproduction, staging, development
ProjectSíweb-app, api, batch, infra
OwnerSíteam-frontend, team-backend, team-data
CostCenterSíCC-PROD, CC-DEV, CC-OPS
AutoShutdownNotrue, false
ExpiryDateNoYYYY-MM-DD

Parte 2 : Plan de Optimización​

Ejercicio 2.1 : Right-Sizing​

Proponga nuevos tipos de instancias:

ActualNuevoJustificaciónAhorro
m5.xlarge (web)??$?
m5.large (staging)??$?
t3.large (dev)??$?
💡 Solución
ActualNuevoJustificaciónAhorro
10x m5.xlarge (web)10x m5.largeCPU 35% OK con large$700/mes
5x m5.large (staging)3x t3.mediumStaging poco usado, burstable OK$280/mes
4x t3.large (dev)4x t3.mediumDev 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)❌ NoCrí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:

ClaseDespuésDatosAhorro
Standard0 díasActivosReferencia
????
????
💡 Solución
ClaseDespuésDatosCosto/GB
Standard0 días< 30 días$0.023
Standard-IA30 días30-90 días$0.0125
Glacier90 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íaAcciónAhorro/mes%
ComputeRight-sizing$??%
ComputeScheduling$??%
ComputeSpot$??%
ComputeSavings Plans$??%
Storagegp2→gp3$??%
StorageS3 Lifecycle$??%
TOTAL$??%
💡 Solución
CategoríaAcciónAhorro/mes% del total
ComputeRight-sizing$1,0807.2%
ComputeScheduling$3702.5%
ComputeSpot (batch+CI)$9506.3%
ComputeSavings Plans$5853.9%
Storagegp2→gp3$1000.7%
StorageS3 Lifecycle$1981.3%
TOTAL$3,28321.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​

  1. Análisis del estado actual con identificación de desperdicios
  2. Estrategia de tagging completa
  3. Plan de optimización detallado con cálculos
  4. Tabla resumen de ahorros
  5. Recomendaciones prioritarias (quick wins vs largo plazo)

Criterios de Evaluación​

CriterioPuntos
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