DEV Community

Cover image for Guía práctica de colas: el secreto para sobrevivir picos de tráfico
Hazel Saenz for AWS

Posted on

Guía práctica de colas: el secreto para sobrevivir picos de tráfico

Construir servicios en la nube es emocionante… hasta que llega el primer pico de tráfico serio. Ese día, un servicio que funcionaba perfecto durante semanas, de pronto empieza a fallar, a lanzar timeouts y a colapsar sin piedad.

Cuando lo viví la primera vez, pensé:

"¿Qué hice mal? ¿Por qué si el sistema está bien diseñado… simplemente no aguanta?"

Con el tiempo descubrí que el problema no era el código, ni la infraestructura, ni la configuración. Era algo mucho más básico:

No todos los servicios procesan trabajo al mismo ritmo.

Y cuando un servicio produce más de lo que otro puede consumir… algo truena. Ahí es donde entran las colas. Y una vez las entiendes, te preguntas cómo viviste sin ellas tanto tiempo.

El problema real: servicios que no respiran igual

Imagina un sistema donde un proceso genera miles de operaciones por segundo. Pero el servicio que las recibe sólo puede procesar una parte antes de saturarse. Si no hay nada entre ellos, ocurre el desastre perfecto: el servicio receptor se ahoga, se detiene, entra en cascada el resto de la arquitectura, y llega el apagón.

🔴 El servicio se satura sin un buffer intermedio

Servicio saturándose por exceso de solicitudes

Tal como vemos en el gráfico: cuando el proceso genera miles de operaciones por segundo, pero el servicio tiene un límite de procesamiento. Si le llegan más solicitudes de las que puede manejar, colapsa. No hay nada que absorba el impacto, no hay espacio para respirar.

Los tres pilares: eventos, mensajes y colas

Antes de hablar de colas es importante entender tres piezas que siempre trabajan juntas y forman la base de cómo se comunican los sistemas distribuidos: los eventos, los mensajes y las colas.

Vamos de uno en uno.

¿Qué es un evento?

Un evento es algo que ocurrió en tu sistema y que podría ser relevante para otros componentes o servicios, como por ejemplo:

  • Se registró un usuario
  • Se pagó una orden
  • Se generó una factura
  • Se cargó un archivo

Un evento representa un cambio de estado.

¿Qué es un mensaje y cómo se relaciona con un evento?

El evento no se mueve solo: lo empaquetamos dentro de un mensaje.

  1. El mensaje es el sobre/contenedor
  2. El evento es el contenido que va dentro

Un mensaje suele tener:

  • body: contiene el evento serializado (generalmente JSON)
  • metadata: información útil (correlationId, timestamps, tipo de evento, origen)

Relación entre eventos y mensajes

¿Qué es una cola?

Una cola es un lugar intermedio donde los mensajes esperan hasta que alguien los procese. Si lo llevamos a la vida real, es como la fila del banco o del súper:

Las personas (mensajes) llegan, se forman, avanzan cuando les toca y, cuando las atienden, salen de la fila.

En software pasa lo mismo:

  1. El productor envía mensajes a la cola
  2. La cola los almacena de forma temporal
  3. Uno o varios consumidores los van tomando para procesarlos

Lo importante de una cola no es solo "guardar cosas", sino lo que habilita en tu arquitectura:

  • Desacopla al que envía del que procesa
  • Protege a tu sistema de picos de tráfico, actuando como un buffer
  • Permite escalar consumidores sin cambiar la forma en que los mensajes llegan
  • Puede ofrecer garantías de orden (como las colas FIFO) o priorizar la velocidad (como las colas estándar)

Si lo vemos en nuestro ejemplo se vería de la siguiente forma:

Sistema con cola protegiendo el servicio

¿Qué significa enviar un evento a una cola?

El flujo conceptual siempre es el mismo:

  1. Algo ocurre
  2. Se construye un evento
  3. Se crea un mensaje
  4. El mensaje se envía a la cola
  5. La cola lo almacena
  6. Un consumidor lo procesa
  7. Tras procesarlo, el mensaje se elimina

Flujo completo de colas

Tipos de colas

Cola FIFO (First In First Out)

Garantizan que el primer mensaje en entrar es el primero en salir. Características:

  • ✅ Deduplicación automática
  • ⚠️ Throughput menor
  • 🎯 Perfectas para flujos secuenciales: pagos, órdenes, pasos obligatorios

Cola FIFO

Cola estándar (Standard)

No garantiza orden estricto. Características:

  • ✅ Alta velocidad
  • ✅ Throughput masivo
  • 🎯 Ideales para procesamiento masivo: logs, telemetría, tareas repetitivas

Cola estándar (Standard Queue)

Restricciones importantes

⚠️ Restricciones de tamaño

Toma en cuenta que las colas no están diseñadas para transportar información pesada como por ejemplo:

  • ❌ Videos
  • ❌ PDFs enormes
  • ❌ Imágenes grandes
  • ❌ Binarios

El mensaje debe ser pequeño.

Si necesitas manejar algo grande, envía solo una referencia, por ejemplo una URL a un archivo en Amazon Simple Storage Service (Amazon S3):

{
  "fileUrl": "https://s3.com/bucket/reporte.pdf",
  "action": "PROCESS_FILE"
}
Enter fullscreen mode Exit fullscreen mode

Este patrón es universal en casi todos los sistemas de colas.

¿Por qué usar colas? ¿Cuándo sí y cuándo no?

✅ Cuándo SÍ usar colas

Las colas resuelven problemas concretos como el que comenté al inicio, pero existen más casos donde son una buena idea:

  • ✅ Cuando tu backend tarda más de lo que el cliente puede esperar
  • ✅ Cuando necesitas reintentos automáticos
  • ✅ Cuando una dependencia es lenta o poco confiable
  • ✅ Cuando quieres desacoplar partes del sistema

❌ Cuándo NO usar colas

Pero ten cuidado, como todo, existen casos donde no las necesitas y es mejor evitarlas:

  • ❌ Chats o videojuegos en tiempo real
  • ❌ Procesos que requieren respuesta inmediata
  • ❌ Lógica que depende del orden exacto en escenarios donde este no puede garantizarse
  • ❌ Situaciones donde necesitas sincronización estricta entre servicios

Implementación práctica con Amazon Simple Queue Service (Amazon SQS)

Para entender en la vida real cómo una cola puede salvar tu arquitectura de un colapso durante picos de tráfico, preparé un demo completo que compara ambos escenarios: con y sin colas.

🔗 Queue 101 Demo - Repositorio en GitHub

El demo incluye ejemplos de código funcional, configuración de infraestructura con AWS CDK, y una comparación práctica que demuestra cómo las colas protegen tu sistema durante picos de tráfico. Incluye instrucciones paso a paso para reproducir ambos escenarios y ver la diferencia en acción.

Conclusión

Las colas no son un detalle técnico opcional. Son una herramienta esencial cuando buscas construir aplicaciones confiables, escalables y resilientes.

No importa si usas AWS, RabbitMQ, Kafka o cualquier otra plataforma: los conceptos son los mismos. Y con esto en mente ya dominas el superpoder de evitar que tus servicios colapsen durante un pico de tráfico.


🌟 Sigue explorando, sigue aprendiendo y disfruta del proceso.

Top comments (0)