Arquitectura SaaS: Cómo diseñamos sistemas que soportan 10k usuarios concurrentes
Leidy Moreno
2024-02-10 · 5 min read

El Problema de los "Buenos Problemas"
TL;DR: Puntos Clave de Arquitectura
- El éxito repentino (10k usuarios) tumba servidores monolíticos tradicionales.
- Implementamos arquitectura "Event-Driven" con Redis para manejar picos de tráfico.
- Usamos "Optimistic UI" en Next.js para que la app se sienta instantánea.
- Optimización de base de datos con Vistas Materializadas redujo tiempos de carga de 12s a 120ms.
Tener éxito puede ser fatal para tu tecnología. Es la paradoja del crecimiento: lanzas tu producto, funciona increíble con 100 usuarios, la voz se corre, y de repente, BAM. Black Friday. Lanzamiento de producto. Viralidad. Tienes 10,000 personas intentando comprar o usar tu app al mismo tiempo.
Tu servidor se cae. La base de datos se bloquea (deadlock). Tus usuarios ven un error 500. Y peor aún, pierdes dinero y credibilidad en el momento exacto en que deberías estar celebrando. Esto le pasó a uno de nuestros clientes con su plataforma anterior antes de migrar a nuestra arquitectura.
El Desafío: Expert Advisor
Nuestro cliente necesitaba una plataforma para gestionar campañas masivas de WhatsApp Marketing. El requerimiento técnico era brutal:
- Envío de hasta 1 millón de mensajes en bloques concentrados.
- Procesamiento de respuestas en tiempo real (Webhooks).
- Dashboard de analítica en vivo para cientos de agentes simultáneos.
- Cero latencia perceptible en la interfaz de usuario.
La Arquitectura "Event-Driven" (Basada en Eventos)
Sabíamos que una arquitectura monolítica tradicional (donde el usuario hace clic y espera a que el servidor termine todo el trabajo) colapsaría. El servidor HTTP se bloquearía esperando a que WhatsApp confirmara el envío de 1,000 mensajes.
Diseñamos una solución asíncrona utilizando Colas de Mensajes.
Diagrama de Flujo Asíncrono
1. User Request (UI)
|
v
2. API Gateway (Next.js) ----> [Responde OK al usuario en 50ms]
|
| (En background)
v
3. Message Queue (Redis) <---- [Acolchonamiento de Tráfico]
|
v
4. Worker Service (Node.js) --> [Procesa 1 por 1 a alta velocidad]
|
v
5. Database / WhatsApp API
1. El Frontend: Next.js + Optimistic Updates
Usamos Next.js no solo por SEO, sino por su capacidad de "Optimistic UI". Cuando un agente envía un mensaje, la interfaz lo muestra como "Enviado" instantáneamente, sin esperar la confirmación del servidor. Esto hace que la app se sienta increíblemente rápida. Si el envío falla (menos del 0.01% de los casos), revertimos el estado y mostramos un error amigable.
2. El Middleman: Redis
Redis es nuestro salvavidas. Actúa como una sala de espera ultrarrápida. Si llegan 10,000 peticiones en un segundo, Redis las acepta todas instantáneamente y las pone en fila. El servidor principal no se satura intentan procesarlas, solo delega.
3. El Worker: Node.js "Scalable Consumers"
Tenemos servicios ocultos (Workers) que solo se dedican a leer de Redis y ejecutar el trabajo pesado. Lo genial es que podemos escalar esto horizontalmente. Si la fila de Redis crece mucho, automáticamente "encendemos" más Workers para vaciarla más rápido. Cuando la carga baja, los apagamos para ahorrar costos.
Optimización de Base de Datos: El Arte de los Índices
PostgreSQL es poderoso, pero si le pides contar 1 millón de filas cada vez que alguien carga el dashboard, va a sufrir. Implementamos:
- Optimización de Índices: Índices compuestos en columnas de búsqueda frecuente (fecha + estado + user_id).
- Vistas Materializadas: Pre-calculamos los reportes complejos cada 5 minutos. Cuando el usuario carga el dashboard, no estamos sumando 1 millón de registros, solo estamos leyendo 1 registro pre-calculado. El tiempo de carga pasó de 12 segundos a 120 milisegundos.
Resultados de Negocio
La tecnología es genial, pero ¿qué significó esto para el negocio?
- 99.9% Uptime: Incluso durante picos de tráfico de Black Friday.
- 40% Ahorro de Costos: Al usar una arquitectura eficiente, necesitamos servidores más pequeños que la competencia.
- Escalabilidad Infinita: El sistema está listo para multiplicar x10 su volumen sin reescribir una sola línea de código.
¿Listo para construir software escalable?
No dejes que la deuda técnica frene tu crecimiento. Hablemos de cómo Leading Solutions puede arquitectar tu próximo éxito.
Agendar Consultoría Gratis