Amazon SQS
Servicio de colas de mensajes completamente gestionado que desacopla componentes de aplicaciones distribuidas, ofreciendo colas estándar de alto rendimiento y colas FIFO con orden garantizado
Descripción general
Amazon Simple Queue Service (SQS) es un servicio de colas de mensajes completamente gestionado que permite desacoplar y escalar microservicios, sistemas distribuidos y aplicaciones serverless. Los mensajes se almacenan de forma duradera en la cola hasta que un consumidor los procesa y elimina. SQS ofrece dos tipos de colas: estándar (rendimiento prácticamente ilimitado con entrega al menos una vez) y FIFO (orden estricto con procesamiento exactamente una vez). La integración nativa con Lambda permite el procesamiento automático de mensajes sin gestionar infraestructura de polling.
Colas estándar vs FIFO y patrones de diseño
Las colas estándar ofrecen rendimiento prácticamente ilimitado con entrega de mejor esfuerzo y posible duplicación o reordenamiento de mensajes. Son ideales para cargas de trabajo que toleran procesamiento duplicado, como envío de notificaciones o procesamiento de imágenes. Las colas FIFO garantizan que los mensajes se procesen exactamente una vez y en el orden exacto de envío, con un límite de 3,000 mensajes por segundo con batching. El ID de grupo de mensajes permite procesamiento paralelo dentro de una cola FIFO manteniendo el orden dentro de cada grupo. El patrón más común es el desacoplamiento productor-consumidor: un servicio envía mensajes a la cola y otro los consume a su propio ritmo, absorbiendo picos de tráfico sin perder mensajes.
Visibilidad, reintentos y colas de mensajes muertos
El timeout de visibilidad es el período durante el cual un mensaje recibido por un consumidor es invisible para otros consumidores. Si el consumidor no elimina el mensaje antes de que expire el timeout, el mensaje vuelve a estar disponible para otro consumidor. Configurar el timeout apropiado es crítico: demasiado corto causa procesamiento duplicado, demasiado largo retrasa el reprocesamiento de fallos. Las colas de mensajes muertos (DLQ) reciben mensajes que han fallado el procesamiento después de un número configurable de intentos (maxReceiveCount). Esto previene que mensajes problemáticos bloqueen el procesamiento de mensajes válidos. La política de redrive permite mover mensajes de la DLQ de vuelta a la cola original después de resolver el problema subyacente. Long polling reduce costos y latencia al mantener la conexión abierta hasta que un mensaje esté disponible, eliminando respuestas vacías frecuentes.
Integración con Lambda y patrones serverless
La integración de SQS con Lambda como origen de eventos permite procesamiento automático de mensajes sin gestionar infraestructura de polling. Lambda escala automáticamente el número de invocaciones concurrentes según la profundidad de la cola, procesando hasta 1,000 mensajes por lote. Para colas FIFO, Lambda mantiene el orden procesando mensajes del mismo grupo secuencialmente. El manejo de errores parciales de lote permite reportar solo los mensajes fallidos para reprocesamiento, evitando reprocesar todo el lote. El patrón de throttling con SQS coloca una cola entre API Gateway y el servicio backend, protegiendo el backend de picos de tráfico. La retención de mensajes configurable (1 minuto a 14 días) y el cifrado con KMS proporcionan durabilidad y seguridad para mensajes en tránsito y en reposo.