Escalabilidad vertical (máquina más grande) tiene límite. Escalabilidad horizontal (más máquinas) es donde escala real ocurre.
Aplicaciones stateless: la base de escalabilidad horizontal
Una aplicación stateless no guarda estado en la máquina. No hay session en memoria, no hay cache local. Todo estado vive en servicios centrales: base de datos, Redis, etc.
Eso significa que una petición puede ir a cualquier máquina sin importar cuál la procesó antes.
- Sin estado local, sin sesiones en memoria.
- Todo en BD, Redis, servicios centrales.
- Requests pueden rotar entre máquinas libremente.
Load Balancing: distribuye traffic entre máquinas
Un load balancer recibe requests y las distribuye entre múltiples instancias. Round-robin (alternando) es simple. Otras estrategias consideran carga actual de cada máquina.
El balancer debe also detectar cuándo una máquina cae y excluirla automáticamente.
- Round-robin: simple, cada máquina igual turno.
- Least connections: a la máquina con menos requests activos.
- Health checks: detecta máquinas caídas.
Replicación: múltiples copias del mismo servicio
Ejecutas la misma aplicación en 2, 5, 10 máquinas. El load balancer distribuye traffic. Si una cae, las otras siguen funcionando.
Eso es lo que permite escalar: agregar máquinas = más capacidad automáticamente.
- Misma aplicación en múltiples máquinas.
- Load balancer distribuye traffic.
- Pérdida de una máquina no afecta servicio.
Session sharing: cuando necesitas recordar usuario
Si la máquina 1 procesa login, la máquina 2 no sabe que ese usuario está autenticado. La solución es guardar sesión en lugar centralizado: Redis o base de datos.
Eso permite que cualquier máquina atienda al usuario después del login.
El punto más importante de escalabilidad horizontal es que no importa cuál máquina atiende un request. Todas ven los mismos datos.
Base de datos como cuello de botella
Cuando escala horizontalmente la aplicación pero la BD no, la BD se convierte en punto único de fallo. Eso es por qué replicación y sharding de BD también importan.
La arquitectura escalable necesita escalabilidad en todas las capas.