Amazon SQS
Simple Queue Service
Colas de mensajes administradas que desacoplan a quien produce trabajo de quien lo procesa.
En palabras simples
Es el ticket de la panadería: quien llega deja su pedido y se va; quien atiende lo toma cuando puede. Si hay mucha gente, la fila crece, pero no se pierde ningún pedido.
Cuándo aplicarlo
Cuando el trabajo puede procesarse más tarde, cuando los picos de carga superan a la capacidad de proceso, o cuando un fallo del consumidor no debe perder peticiones.
- ▸Procesar en segundo plano los videos o imágenes que suben los usuarios
- ▸Absorber un pico de inscripciones sin tumbar el sistema que las registra
- ▸Separar el envío de correos de la petición web que lo origina
- ▸Reintentar automáticamente el trabajo que falló, sin perderlo
Vocabulario mínimo
- Cola estándar
- Rendimiento prácticamente ilimitado, con entrega al menos una vez y sin garantía estricta de orden.
- Cola FIFO
- Garantiza el orden y evita duplicados, a costa de un rendimiento menor.
- Tiempo de visibilidad
- El plazo en que un mensaje tomado queda oculto para los demás consumidores mientras se procesa.
- Cola de mensajes fallidos
- La cola aparte donde acaban los mensajes que fallaron demasiadas veces, para revisarlos sin bloquear la principal.
- Sondeo largo
- Esperar hasta veinte segundos por mensajes nuevos en vez de preguntar sin parar, lo que reduce costo y latencia.
Costo y capa gratuita
- Cómo se cobra
- Por millón de peticiones a la API. Cada envío, recepción y borrado cuenta como petición. Las colas FIFO cuestan algo más que las estándar.
- Capa gratuita
- Un millón de peticiones al mes de forma permanente, sin límite de 12 meses.
Cuidado con los créditos
- ⚠Sondeo corto en bucle: preguntar por mensajes cada pocos milisegundos genera millones de peticiones facturables sin trabajo real.
- ⚠No configurar una cola de mensajes fallidos: un mensaje envenenado se reintenta indefinidamente y consume peticiones e invocaciones.
- ⚠Tiempo de visibilidad menor que la duración real del proceso: el mismo mensaje se procesa dos veces y se paga dos veces.
Descripción
Una cola parece una pieza modesta y es una de las decisiones de arquitectura con mayor efecto. Sin ella, si el sistema que procesa se cae o se satura, las peticiones se pierden y quien las envió se queda esperando. Con ella, el trabajo se acumula y se procesa cuando hay capacidad.
SQS aporta además dos garantías que a mano cuestan mucho: un mensaje tomado por un consumidor queda invisible para los demás mientras se procesa, y si el proceso falla, el mensaje reaparece para que otro lo intente. Nada se pierde en silencio.
Cómo funciona
- Creas una cola, estándar si el orden no importa o FIFO si sí.
- El productor envía mensajes con
SendMessagey sigue con lo suyo. - El consumidor pide mensajes; los que recibe quedan ocultos durante el tiempo de visibilidad.
- Al terminar, el consumidor borra el mensaje. Si no lo borra, el mensaje reaparece y se reintenta.
- Tras varios intentos fallidos, el mensaje pasa a la cola de mensajes fallidos para revisarlo.
Manos a la obra
- Crea una cola estándar y envía tres mensajes desde la consola.
- Recíbelos con la CLI sin borrarlos y observa cómo reaparecen pasado el tiempo de visibilidad.
- Conecta una función Lambda como consumidor de la cola y comprueba que se invoca sola.
- Configura una cola de mensajes fallidos con un máximo de tres intentos y provoca un fallo a propósito.
- Activa el sondeo largo y compara el número de peticiones en las métricas de CloudWatch.
Ejemplo visual
La pregunta que resuelve la cola es siempre la misma: ¿qué pasa cuando llegan más peticiones de las que el sistema puede atender? Sin cola, se pierden; con cola, esperan.
Cuándo NO es la mejor opción
- Amazon SNS — si el mismo mensaje debe llegar a varios destinos a la vez, no a un único consumidor.
- Amazon EventBridge — si el enrutamiento depende del contenido y hay muchos productores y consumidores distintos.
- Amazon MQ — si la aplicación existente ya habla JMS o AMQP y no se quiere reescribir su capa de mensajería.
Se usa junto con
Aparece en certificaciones
- AWS Certified Cloud Practitioner
- AWS Certified Solutions Architect – Associate
- AWS Certified Developer – Associate
Para profundizar