Saltar al contenido principal

Optimización Práctica de Costos AWS

Introducción​

La optimización de costos en AWS no es un evento puntual sino un proceso continuo. Este capítulo presenta técnicas prácticas e inmediatas para reducir sus facturas de AWS.

Los 7 Palancas de Optimización​

┌─────────────────────────────────────────────────────────────────┐
│ 7 PALANCAS DE OPTIMIZACIÓN AWS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. RIGHTSIZING Ajustar el tamaño de los recursos │
│ 2. SCHEDULING Apagar cuando no se usa │
│ 3. RESERVED/SAVINGS Compromiso para descuentos │
│ 4. SPOT INSTANCES Usar capacidad excedente │
│ 5. STORAGE TIERING Mover a almacenamiento más barato │
│ 6. DATA TRANSFER Optimizar las transferencias │
│ 7. ARCHITECTURE Diseñar para el costo │
│ │
└─────────────────────────────────────────────────────────────────┘

1. Rightsizing (Dimensionamiento)​

Identificar Recursos Sobredimensionados​

┌─────────────────────────────────────────────────────────────────┐
│ ANÁLISIS RIGHTSIZING │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Instancia actual : m5.xlarge (4 vCPU, 16 GB RAM) │
│ Costo : $140/mes │
│ │
│ Uso observado (30 días) : │
│ ┌────────────────────────────────────────────┐ │
│ │ CPU ████░░░░░░░░░░░░░░░░ 20% promedio │ │
│ │ RAM ██████░░░░░░░░░░░░░░ 30% promedio │ │
│ └────────────────────────────────────────────┘ │
│ │
│ Recomendación : t3.medium (2 vCPU, 4 GB RAM) │
│ Nuevo costo : $30/mes │
│ Ahorro : $110/mes (78%) │
│ │
└─────────────────────────────────────────────────────────────────┘

Métricas a Monitorear​

RecursoMétricaUmbral de sobredimensionamiento
EC2CPU promedio< 40% en 14 días
EC2Memoria< 40% en 14 días
RDSCPU promedio< 40% en 14 días
RDSConexiones< 20% del máximo
LambdaMemoria utilizada< 50% asignada

Acciones Recomendadas​

Sobredimensionado (CPU < 40%)     → Reducir un tamaño
Bien dimensionado (40-80%) → Conservar
Subdimensionado (> 80%) → Aumentar o Auto Scale

2. Scheduling (Planificación)​

Entornos No Productivos​

┌─────────────────────────────────────────────────────────────────┐
│ SCHEDULING NO-PROD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Entorno DEV/TEST : │
│ │
│ Horario oficina : 8h - 18h (10h/día) │
│ Días laborables : Lunes - Viernes (5 días) │
│ │
│ Horas ON : 10h × 5d = 50h/semana │
│ Horas OFF : 168h - 50h = 118h/semana │
│ │
│ Ahorro potencial : 70% ! │
│ │
│ Implementación : │
│ • AWS Instance Scheduler │
│ • Lambda + CloudWatch Events │
│ • Tags : Schedule=office-hours │
│ │
└─────────────────────────────────────────────────────────────────┘

Script de Scheduling Simple​

# Lambda para apagar instancias DEV por la noche
import boto3

def lambda_handler(event, context):
ec2 = boto3.client('ec2')

# Encontrar instancias con tag Environment=dev
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev', 'test']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)

instance_ids = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])

if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"Arrete {len(instance_ids)} instances")

3. Reserved Instances y Savings Plans​

Comparación de Opciones​

┌─────────────────────────────────────────────────────────────────┐
│ OPCIONES DE COMPROMISO │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ON-DEMAND (Sin compromiso) │
│ └── Precio completo, máxima flexibilidad │
│ Ideal para : workloads impredecibles │
│ │
│ RESERVED INSTANCES (1 o 3 años) │
│ └── Hasta -72% vs On-Demand │
│ Atado a : tipo de instancia + región │
│ Ideal para : workloads estables y previsibles │
│ │
│ SAVINGS PLANS (1 o 3 años) │
│ └── Hasta -72% vs On-Demand │
│ Más flexible que RI │
│ Compute SP : EC2, Fargate, Lambda │
│ EC2 SP : familia de instancia en una región │
│ │
│ SPOT INSTANCES │
│ └── Hasta -90% vs On-Demand │
│ Puede ser interrumpido con 2 min de aviso │
│ Ideal para : batch, CI/CD, workloads tolerantes │
│ │
└─────────────────────────────────────────────────────────────────┘

Estrategia de Cobertura​

┌─────────────────────────────────────────────────────────────────┐
│ ESTRATEGIA DE COBERTURA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Capacidad total necesaria : 100 unidades │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │████████████████████████████████████████░░░░░░░░░░░░░░░░░░░│ │
│ │ Reserved/Savings (60%) │ On-Demand │ Spot │ │
│ │ -60% │ (20%) │ (20%) │ │
│ │ Línea base estable │ Variable │ -90% │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ Ahorro global : ~50% │
│ │
└─────────────────────────────────────────────────────────────────┘

4. Optimización del Almacenamiento​

Clases de Almacenamiento S3​

┌─────────────────────────────────────────────────────────────────┐
│ CLASES DE ALMACENAMIENTO S3 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ S3 STANDARD $0.023/GB Acceso frecuente │
│ ↓ después de 30 días │
│ S3 INFREQUENT ACCESS $0.0125/GB Acceso < 1x/mes │
│ ↓ después de 90 días │
│ S3 GLACIER IR $0.004/GB Archivo, acceso rápido │
│ ↓ después de 180 días │
│ S3 GLACIER DA $0.00099/GB Archivo largo plazo │
│ │
│ Ahorro : Hasta 95% con lifecycle policies │
│ │
└─────────────────────────────────────────────────────────────────┘

Optimización EBS​

Problemas comunes :
• Volúmenes no adjuntos (huérfanos) → Eliminar
• Snapshots antiguos → Lifecycle policy
• gp2 en vez de gp3 → Migración (20% más barato)
• Volúmenes sobredimensionados → Reducir

5. Optimización Lambda​

┌─────────────────────────────────────────────────────────────────┐
│ OPTIMIZACIÓN LAMBDA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ANTES : 1024 MB, 500ms promedio │
│ Costo : 1M invocaciones × 0.5s × 1GB = $8.33/mes │
│ │
│ DESPUÉS : 512 MB, 600ms promedio (CPU más lento) │
│ Costo : 1M invocaciones × 0.6s × 0.5GB = $5.00/mes │
│ │
│ Ahorro : 40% │
│ │
│ O │
│ │
│ DESPUÉS : 2048 MB, 200ms promedio (CPU más rápido) │
│ Costo : 1M invocaciones × 0.2s × 2GB = $6.67/mes │
│ │
│ Ahorro : 20% + mejor rendimiento │
│ │
│ → ¡Pruebe diferentes configuraciones! │
│ │
└─────────────────────────────────────────────────────────────────┘

6. Checklist de Optimización Rápida​

Acciones Inmediatas (Quick Wins)​

AcciónAhorro potencialEsfuerzo
Eliminar recursos no utilizados10-30%Bajo
Apagar instancias DEV por la noche/fin de semana70% en DEVBajo
Eliminar volúmenes EBS huérfanosVariableBajo
Eliminar snapshots antiguosVariableBajo
Migrar gp2 a gp320% en EBSMedio

Acciones a Mediano Plazo​

AcciónAhorro potencialEsfuerzo
Rightsizing EC2/RDS20-50%Medio
Reserved Instances/Savings Plans30-60%Medio
S3 Lifecycle Policies50-90% en almacenamientoMedio
Spot Instances para batch60-90%Medio

Acciones a Largo Plazo​

AcciónAhorro potencialEsfuerzo
Arquitectura serverless30-70%Alto
Multi-región optimizadaVariableAlto
Contenerización (Fargate)20-40%Alto

7. Herramientas AWS para la Optimización​

┌─────────────────────────────────────────────────────────────────┐
│ HERRAMIENTAS AWS FINOPS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AWS COST EXPLORER │
│ └── Visualización de costos, tendencias, previsiones │
│ │
│ AWS BUDGETS │
│ └── Alertas cuando se supera el presupuesto │
│ │
│ AWS TRUSTED ADVISOR │
│ └── Recomendaciones automáticas │
│ │
│ AWS COMPUTE OPTIMIZER │
│ └── Rightsizing EC2, Lambda, EBS │
│ │
│ AWS COST ANOMALY DETECTION │
│ └── Detección automática de anomalías │
│ │
│ SAVINGS PLANS RECOMMENDATIONS │
│ └── Recomendaciones de compromiso │
│ │
└─────────────────────────────────────────────────────────────────┘

Ejercicio Práctico​

Escenario : Optimizar esta factura​

Factura mensual actual : $5,000

Distribución :
• EC2 (10 instancias m5.xlarge 24/7) : $1,400
• RDS (db.r5.large Multi-AZ) : $400
• EBS (500 GB gp2) : $50
• S3 (10 TB Standard) : $230
• Data Transfer (500 GB) : $45
• Lambda (50M invocaciones) : $100
• Otros : $2,775

Observaciones :
• 5 instancias EC2 son para DEV/TEST
• CPU promedio EC2 PROD : 35%
• 3 TB de datos S3 tienen > 1 año
• 100 GB EBS no adjuntos
Ver las recomendaciones

Optimizaciones recomendadas :

  1. Scheduling DEV/TEST : 5 instancias × 70% OFF = -$490/mes

  2. Rightsizing PROD : m5.xlarge → m5.large = -$350/mes

  3. Reserved Instances PROD : 5 instancias 1 año = -$280/mes

  4. EBS huérfanos : Eliminar 100 GB = -$10/mes

  5. gp2 → gp3 : 500 GB = -$10/mes

  6. S3 Lifecycle : 3 TB a Glacier = -$60/mes

Total ahorrado : ~$1,200/mes (24%)

Nueva factura : ~$3,800/mes

Resumen​

  • Rightsizing : Ajustar los recursos al uso real
  • Scheduling : Apagar los recursos no productivos
  • Compromiso : Reserved Instances o Savings Plans para lo estable
  • Spot : Usar para workloads tolerantes a interrupciones
  • Almacenamiento : Lifecycle policies para S3, eliminar huérfanos
  • Monitoreo : Usar las herramientas AWS (Cost Explorer, Trusted Advisor)

Próxima sección : Quiz de Validación