Auto Scaling
📘 ¿Qué es AWS Auto Scaling?
Auto Scaling es un conjunto de servicios que permite ajustar automáticamente la capacidad de recursos (como EC2, ECS, DynamoDB o Aurora) según la demanda real, garantizando disponibilidad y optimización de costos.
🧠 Escala horizontal automática: Aumenta o reduce el número de recursos.
🔧 Tipos de Auto Scaling
| Tipo de servicio | Nombre | Qué escala |
|---|---|---|
| EC2 | EC2 Auto Scaling Groups | Número de instancias EC2 |
| ECS | ECS Service Auto Scaling | Número de tareas |
| DynamoDB | DynamoDB Auto Scaling | Throughput (Read/Write Capacity) |
| Aurora | Aurora Auto Scaling | Número de réplicas |
| Application Scaling | AWS Application Auto Scaling | Escala personalizado (EMR, Sagemaker, etc.) |
🧱 EC2 Auto Scaling Groups (ASG)
🔹 Componentes clave:
| Componente | Descripción |
|---|---|
| Launch Template | Define configuración de instancias (AMI, tipo, user data) |
| ASG (Auto Scaling Group) | Grupo de instancias EC2 gestionadas automáticamente |
| Scaling Policies | Reglas para aumentar/disminuir la capacidad |
| Lifecycle Hooks | Ejecuta acciones cuando una instancia entra/sale del grupo |
| Health Checks | Detecta instancias no saludables |
| Cooldown Period | Espera entre acciones de escalado |
📈 Tipos de escalado (EC2 ASG)
| Tipo de escalado | Descripción |
|---|---|
| Manual | El usuario ajusta el tamaño del grupo |
| Programado | Basado en fecha/hora (cron) |
| Dinámico | Basado en métricas como CPU, tráfico, etc. |
| Predictivo | Usa machine learning para predecir necesidades futuras (EC2 solo) |
📊 Ejemplo de política de escalado dinámico
Escalar si CPU > 70% durante 5 minutos → +1 instancia
Reducir si CPU < 30% durante 5 minutos → -1 instancia
🚀 Cómo funciona EC2 Auto Scaling
1. Creas un Launch Template (tipo de instancia, AMI, etc.)
2. Definís un Auto Scaling Group (min, max, desired capacity)
3. Asociás políticas de escalado (dinámicas, programadas o predictivas)
4. El grupo lanza/termina instancias según demanda o eventos
🛠️ Ejemplo básico de ASG (CLI)
# Crear Launch Template
aws ec2 create-launch-template \
--launch-template-name myTemplate \
--version-description v1 \
--launch-template-data file://template.json
# Crear Auto Scaling Group
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name myASG \
--launch-template LaunchTemplateName=myTemplate,Version=1 \
--min-size 1 --max-size 5 --desired-capacity 2 \
--vpc-zone-identifier subnet-xxxx,subnet-yyyy
# Añadir política de escalado
aws autoscaling put-scaling-policy \
--auto-scaling-group-name myASG \
--policy-name ScaleOut \
--scaling-adjustment 1 \
--adjustment-type ChangeInCapacity
🌐 Load Balancers + Auto Scaling
-
Auto Scaling se integra directamente con ELB (ALB, NLB).
-
Instancias nuevas se registran automáticamente al balanceador.
-
Usa health checks de ELB o EC2 para reemplazar instancias fallidas.
🔐 Seguridad
-
IAM Roles para Auto Scaling (acceso a EC2, CloudWatch, ELB)
-
Security Groups para instancias
-
Launch Templates con claves de acceso y políticas adecuadas
🔄 Auto Scaling vs. Elastic Load Balancing (ELB)
| Servicio | Función principal |
|---|---|
| Auto Scaling | Escala el número de instancias |
| Elastic Load Balancer | Distribuye tráfico entre instancias |
Trabajan juntos para garantizar alta disponibilidad y balanceo de carga.
📈 Métricas comunes para escalar
| Servicio | Métrica usada comúnmente |
|---|---|
| EC2 | CPUUtilization, NetworkIn/Out |
| ECS | MemoryUtilization, CPUUtilization |
| DynamoDB | ConsumedReadCapacityUnits |
| Aurora | CPU, conexión, latencia de lectura |
📊 Auto Scaling Predictivo (EC2)
-
Usa machine learning para prever carga futura
-
Requiere al menos 24h de datos de métricas
-
Activado desde consola o CLI con opción
predictive-scaling-mode
💡 Buenas prácticas
-
Usa métricas relevantes para la app (CPU, latency, RPS, etc.)
-
Siempre usar ELB para distribuir tráfico
-
Define
CooldownPeriodpara evitar ciclos de escalado repetidos -
Usa
termination policiespara definir qué instancia terminar primero -
Activa
instance protectionen instancias críticas
⚖️ Comparación rápida
| Servicio Autoescalado | Escala qué | Coste | Comentario |
|---|---|---|---|
| EC2 Auto Scaling | Nº de instancias | Por EC2 | Ideal para backend/frontends |
| ECS Auto Scaling | Nº de tareas | Por Fargate | Escala microservicios |
| DynamoDB | Capacidad de lectura/escritura | Incluido | Requiere modo on-demand o provisioned |
| Aurora Replica | Réplicas | Por uso | Sólo para Aurora |
| Redshift Concurrency Scaling | Slots de ejecución adicionales | Por segundo | Sólo cuando hay carga alta |
🎓 Preguntas tipo certificación
-
¿Qué necesitas para que una instancia EC2 escale automáticamente?
- ✅ Launch Template y Auto Scaling Group
-
¿Cuál es la diferencia entre Scaling Policy y Scheduled Action?
- ✅ Una responde a métricas, la otra a tiempo
-
¿Auto Scaling puede integrarse con ALB?
- ✅ Sí, para distribuir tráfico automáticamente
-
¿Qué función cumple el cooldown period?
- ✅ Evita escalado excesivo tras una acción reciente
-
¿Cuál es la forma más rentable de escalar cargas variables?
- ✅ Auto Scaling dinámico o predictivo