Servicios SQS
Clase 65 de 75 • Curso de AWS Certified Solutions Architect Associate
Resumen
El servicio SQS (Simple Queue Service) de AWS representa una solución fundamental para arquitecturas modernas basadas en microservicios y eventos. Este servicio completamente administrado permite desacoplar componentes de sistemas complejos, facilitando la comunicación asíncrona entre diferentes partes de una aplicación. Comprender cómo funciona SQS y sus diferentes configuraciones es esencial para diseñar arquitecturas escalables y resilientes en la nube.
¿Qué es AWS SQS y por qué es importante para arquitecturas desacopladas?
AWS Simple Queue Service (SQS) es un servicio de colas completamente administrado que permite almacenar mensajes de forma segura y persistente. Este servicio resulta fundamental cuando necesitamos desacoplar componentes de nuestra infraestructura, especialmente en arquitecturas basadas en microservicios o eventos.
En estas arquitecturas encontramos dos actores principales:
- Productores de mensajes: Se encargan de generar los mensajes y enviarlos a las colas SQS.
- Consumidores de mensajes: Recuperan los mensajes de las colas y realizan acciones basadas en su contenido.
El servicio SQS almacena estos mensajes de forma redundante en diferentes zonas de disponibilidad dentro de una región, garantizando alta disponibilidad y durabilidad. Cada mensaje puede contener una carga útil de hasta 256 KB.
Tipos de colas en SQS
AWS SQS ofrece dos tipos principales de colas, cada una con características específicas:
-
Cola estándar:
- Proporciona capacidad casi ilimitada de llamadas API.
- No garantiza el orden de entrega de los mensajes.
- Puede haber duplicación ocasional de mensajes.
- Ideal para casos donde el orden no es crítico pero se necesita alto rendimiento.
-
Cola FIFO (First-In-First-Out):
- Garantiza que los mensajes se procesen exactamente una vez y en el orden en que se recibieron.
- Limitada a 300 transacciones por segundo en llamados API.
- Perfecta para situaciones donde el orden de procesamiento es crucial.
La elección entre estos tipos dependerá de los requisitos específicos de nuestra arquitectura. Si necesitamos mantener un orden estricto en el procesamiento de mensajes, la cola FIFO será la opción adecuada, mientras que si priorizamos el rendimiento sobre el orden, la cola estándar será más apropiada.
¿Cómo configurar y utilizar colas SQS en AWS?
Para implementar SQS en nuestras arquitecturas, necesitamos comprender cómo configurar correctamente las colas y sus parámetros. Veamos el proceso paso a paso:
Creación de una cola SQS
- Accedemos a la consola de AWS y navegamos al servicio SQS.
- Seleccionamos "Crear cola" y elegimos el tipo (estándar o FIFO).
- Asignamos un nombre descriptivo a nuestra cola.
- Configuramos los parámetros según nuestras necesidades.
Entre los parámetros más importantes que podemos configurar se encuentran:
-
Visibility Timeout: Define cuánto tiempo un mensaje permanece invisible para otros consumidores después de que un consumidor lo ha recuperado. Puede configurarse desde 0 segundos hasta 12 horas, con un valor predeterminado de 30 segundos.
-
Período de retención de mensajes: Determina cuánto tiempo SQS conservará un mensaje no procesado. Puede configurarse desde 1 minuto hasta 14 días, con un valor predeterminado de 4 días.
-
Tamaño máximo del mensaje: Puede configurarse hasta 256 KB.
Configuración del sondeo (polling)
SQS ofrece dos métodos de sondeo para recuperar mensajes:
-
Short Polling (Sondeo corto):
- El consumidor realiza una solicitud con
WaitTimeSeconds
establecido en 0. - SQS consulta inmediatamente un subconjunto de servidores y devuelve los mensajes disponibles.
- Puede resultar en respuestas vacías si no hay mensajes en los servidores consultados.
- El consumidor realiza una solicitud con
-
Long Polling (Sondeo largo):
- Se establece un valor positivo para
WaitTimeSeconds
(por ejemplo, 20 segundos). - SQS espera hasta que haya mensajes disponibles o hasta que expire el tiempo especificado.
- Reduce las respuestas vacías y mejora la eficiencia en la recuperación de mensajes.
- Recomendado para reducir costos y mejorar la eficiencia.
- Se establece un valor positivo para
Dead Letter Queues (DLQ)
Una característica importante de SQS es la posibilidad de configurar colas de mensajes fallidos o Dead Letter Queues:
- Permiten manejar mensajes que no pueden ser procesados correctamente por los consumidores.
- Cuando un mensaje no puede ser procesado después de un número determinado de intentos, se transfiere a la DLQ.
- En la DLQ, podemos configurar consumidores especializados (como funciones Lambda) para procesar estos mensajes problemáticos.
- Si los consumidores especializados tampoco pueden procesar el mensaje, podemos intervenir manualmente.
¿Cómo integrar SQS con otros servicios de AWS?
SQS se integra perfectamente con varios servicios de AWS, lo que amplía sus capacidades y casos de uso:
- Amazon SNS: Permite enviar notificaciones a colas SQS.
- AWS Lambda: Las funciones Lambda pueden consumir mensajes de SQS o enviar resultados a colas.
- AWS KMS: Proporciona cifrado para los mensajes en tránsito y en reposo.
- Amazon EventBridge: Permite dirigir eventos a colas SQS.
Políticas de acceso
SQS soporta políticas basadas en recursos que permiten definir quién puede enviar o recibir mensajes:
- Método básico: Ofrece plantillas predefinidas para configuraciones comunes.
- Método avanzado: Permite definir políticas personalizadas en formato JSON.
Estas políticas son fundamentales para garantizar la seguridad de nuestras colas y controlar qué entidades pueden interactuar con ellas.
Prueba de funcionamiento
La consola de AWS proporciona una interfaz gráfica para probar nuestras colas SQS:
- Podemos enviar mensajes de prueba directamente desde la consola.
- Realizar sondeos para recuperar mensajes.
- Examinar los detalles de los mensajes, incluyendo metadatos.
Para implementaciones en producción, utilizaremos el SDK de AWS para integrar SQS en nuestras aplicaciones, en lugar de la consola.
El servicio SQS de AWS es una herramienta poderosa para construir arquitecturas desacopladas y resilientes. Comprender sus características, tipos de colas y métodos de configuración nos permitirá diseñar sistemas más robustos y escalables. ¿Has utilizado SQS en alguno de tus proyectos? ¿Qué tipo de cola elegirías para una aplicación de procesamiento de pagos? Comparte tu experiencia en los comentarios.