La escalabilidad en Amazon DynamoDB es una de sus características más potentes y se refiere a la capacidad del servicio para aumentar o disminuir automáticamente su rendimiento y capacidad de almacenamiento conforme cambian las necesidades de tu aplicación. Aquí te explico cómo funciona y qué debes tener en cuenta:
🚀 ¿Qué significa que DynamoDB sea escalable?
DynamoDB está diseñado para manejar:
- Millones de solicitudes por segundo.
- Almacenamiento desde unos pocos KB hasta cientos de TB.
- Escalado automático y sin interrupciones.
⚙️ Tipos de escalabilidad en DynamoDB
1. Escalabilidad horizontal
- DynamoDB divide automáticamente las tablas grandes en particiones físicas.
- Cada partición puede manejar una cantidad específica de lecturas, escrituras y almacenamiento.
- Si superas los límites de una partición, DynamoDB crea nuevas para repartir la carga.
2. Escalado automático (Auto Scaling)
DynamoDB puede ajustar automáticamente la capacidad provisionada (si no usas el modo On-Demand):
aws application-autoscaling register-scalable-target \
--service-namespace dynamodb \
--resource-id table/MiTabla \
--scalable-dimension dynamodb:table:WriteCapacityUnits \
--min-capacity 5 \
--max-capacity 100
Puedes establecer políticas para que se escale según métricas como ConsumedWriteCapacityUnits.
3. Modo On-Demand
- No necesitas definir capacidad de lectura o escritura.
- Paga solo por las solicitudes que haces.
- Escala automáticamente sin configuración adicional.
Ideal para cargas variables o impredecibles.
aws dynamodb update-table \
--table-name MiTabla \
--billing-mode PAY_PER_REQUEST
🔥 Evitar particiones calientes (Hot Partitions)
- Una partición caliente ocurre cuando muchas operaciones se concentran en una sola clave de partición.
- Esto afecta el rendimiento y limita la escalabilidad.
✅ Buenas prácticas:
- Usa claves de partición con alta cardinalidad y distribución uniforme.
- Evita usar atributos como fechas fijas (
2025-05-22) como partición primaria.
📊 ¿Cómo saber si necesitas escalar?
Monitorea métricas como:
ConsumedReadCapacityUnits
ThrottledRequests
ProvisionedThroughputExceeded
Con estos datos puedes ajustar tus políticas de escalado.