Saltar al contenido principal

SQS vs SNS: Entender los servicios de mensajería de AWS

Conoce las diferencias entre Amazon SQS y SNS y descubre cuándo utilizar cada servicio para crear arquitecturas escalables en la nube.
Actualizado 23 oct 2024  · 15 min de lectura

Dominar AWS puede ser un reto, especialmente cuando se trata de entender sus dos servicios principales: Amazon Simple Queue Service (SQS) y Amazon Simple Notification Service (SNS). 

Aunque ambos servicios forman parte integrante de las soluciones en la nube, a menudo se malinterpretan y se utilizan incorrectamente.

En este artículo, desglosaré las funciones de SQS y SNS, identificaré sus similitudes y diferencias, y demostraré cómo estos servicios pueden utilizarse juntos para construir arquitecturas en la nube de alto rendimiento.

SQS vs SNS: Respuesta corta

Si tienes prisa, aquí tienes las principales diferencias:

  • SQS es un servicio de cola de mensajes basado en sondeo para desacoplar servicios, compatible con la comunicación A2A y la retención de mensajes.
  • SNS es un servicio de notificaciones push para mensajería en tiempo real, compatible con la comunicación A2A y A2P.

Sigue leyendo para obtener una explicación más detallada, incluidos casos de uso, diagramas de arquitectura y mejores prácticas.

¿Qué es Amazon SQS?

Amazon Simple Queue Service (SQS) es un servicio de colas de mensajes totalmente administrado que facilita la comunicación entre componentes de software. SQS utiliza colas para desacoplar microservicios, permitiéndote crear flujos de trabajo asíncronos en tus aplicaciones. 

El SQS consta de tres componentes básicos:

  • Productores: Son aplicaciones que envían mensajes a la cola.
  • Colas: Una cola almacena mensajes hasta que se procesan. El periodo de retención de estos mensajes puede fijarse entre 60 segundos y 14 días. 
  • Consumidores: Son servicios que reciben los mensajes de la cola. 

Diagrama de arquitectura de Amazon SQS

Diagrama de la arquitectura de Amazon SQS, incluidos los componentes principales. Imagen del autor.

SQS ofrece dos tipos de colas de mensajes:

  • Las colas estándar ofrecen rendimiento ilimitado, entrega al menos una vez (es decir, siempre se entrega un mensaje) y orden de mejor esfuerzo.
  • Colas FIFO ofrecen un alto rendimiento, procesamiento exactamente una vez y entrega según el orden de llegada (es decir, los mensajes se reciben en el orden exacto en que se envían).

Para más información sobre estas colas, visita la documentación de AWS.

Amazon SQS está diseñado con persistencia de mensajes para almacenar de forma segura todos los mensajes hasta que se procesen, garantizando que no se pierdan mensajes. SQS permite primero varios reintentos para procesar un mensaje determinado. Si un mensaje no se puede procesar tras agotar todos los intentos, puedes almacenar los mensajes no procesados en unacola de mensajes muertos , que luego se pueden revisar y volver a procesar .

Al desacoplar las aplicaciones, Amazon SQS ofrece una serie de ventajas. Admite un alto caudal de mensajes, garantizando un alto rendimiento incluso con mayores cargas de tráfico. Además, proporciona un escalado independiente, garantizando que cada servicio obtenga recursos suficientes en función de sus necesidades individuales. También mejora la seguridad y la durabilidad encriptando los mensajes y almacenándolos en varios servidores.

Para saber más sobre este sistema de colas, puedes consultar nuestro tutorial completo sobre SQS.

Conviértete en Ingeniero de Datos

Conviértete en un ingeniero de datos mediante el aprendizaje avanzado de Python
Empieza a aprender gratis

¿Qué es Amazon SNS?

Amazon Simple Notification Service (SNS) es un servicio de mensajería totalmente administrado que admite la comunicación de aplicación a aplicación (A2A) y de aplicación a persona (A2P). Está diseñado para notificaciones en tiempo real y envía mensajes a aplicaciones y usuarios finales de forma escalable y eficaz. 

De forma similar a SQS, Amazon SNS soporta la persistencia de mensajes permitiendo a los usuarios crear colas de mensajes muertos para almacenar mensajes que no se pueden procesar.

Amazon SNS utiliza un modelo de mensajería de publicación/suscripción (pub/sub) y consta de 3 partes:

  • Editorial: Un editor es un sistema que crea y envía mensajes a un tema SNS.
  • Tema: Un tema es un punto de acceso que permite la entrega de mensajes a múltiples puntos finales.
  • Abonado: Un suscriptor, o consumidor, es un punto final que recibe un mensaje del tema.

Esquema de la arquitectura del sistema Pub-sub

Diagrama de arquitectura del modelo de mensajería SNS. Fuente de la imagen: AWS

SNS tiene un alto rendimiento y puede enviar mensajes a varios suscriptores simultáneamente. Para la comunicación A2A, SNS puede enviar mensajes a AWS Lambda, Amazon Kinesis Firehose e incluso Amazon SQS. Para la comunicación A2P, los SNS pueden enviar mensajes directamente a los usuarios mediante texto, correo electrónico o notificaciones push. 

Si quieres dominar AWS y ser capaz de integrar muchos de sus servicios para crear soluciones óptimas, considera la posibilidad de realizar el curso de Tecnología y Servicios en la Nube de AWS

Algunas características, como los sistemas de alerta, las arquitecturas en abanico y las notificaciones en tiempo real, contribuyen a la gran solidez y fiabilidad de Amazon SNS. Debido a su alto rendimiento de mensajes y a su capacidad para la comunicación A2A y A2P, el SNS suele ser un componente integral en las arquitecturas basadas en eventos.

Diferencias fundamentales entre SQS y SNS

Elegir entre SQS y SNS requiere una sólida comprensión de las diferencias entre estos servicios de mensajería. En este apartado se exponen los principales criterios que distinguen a unos de otros. 

Push vs. basado en encuestas

Amazon SQS utiliza un sistema de sondeo en el que los consumidores sondean periódicamente la cola para comprobar si hay mensajes nuevos.

Amazon SNS, un sistema basado en push, envía automáticamente mensajes a los suscriptores en cuanto se publican sobre un tema.

Tipos de destinatarios

Amazon SQS sólo admite la comunicación A2A, lo que permite enviar mensajes a otros servicios de AWS, como AWS EC2, AWS Lambda, AWS RDS y AWS Redshift. 

Amazon SNS soporta la comunicación A2A y A2P, enviando mensajes a los servicios de AWS (por ejemplo, AWS S3, AWS EC2) y a los contactos de usuario (por ejemplo, SMS y correo electrónico) como suscriptores.

Retención de mensajes

Amazon SQS puede almacenar mensajes hasta 14 días, dando a los consumidores tiempo suficiente para procesarlos. Por otro lado, Amazon SNS no retiene ningún mensaje, entregando los mensajes a los suscriptores tan pronto como se publican.

Modelo de entrega de mensajes

Amazon SQS utiliza un modelo uno a uno, en el que sólo un consumidor procesa cada mensaje. Aunque varios consumidores soliciten mensajes al mismo tiempo, sólo uno de ellos recibirá un mensaje determinado. Mientras el consumidor dado procesa un mensaje, SQS utiliza la función de tiempo de espera de visibilidad para que ese mensaje sea invisible para otros consumidores .

Amazon SNS admite un patrón fan-out, en el que el mismo mensaje sobre un tema se envía a todos los suscriptores simultáneamente. Estos abonados procesan el mensaje recibido de forma independiente.

Dosificación

Amazon SQS permite a los usuarios enviar mensajes por lotes, lo que implica enviar mensajes a los consumidores en grupos. El tamaño del lote se puede configurar en AWS. 

Amazon SNS no admite el procesamiento por lotes, sólo permite procesar un mensaje cada vez. 

La siguiente tabla resume estas diferencias clave:

Criterios

Amazon SQS

Amazon SNS

Push frente a encuesta

Basado en encuestas: Los consumidores sondean la cola en busca de nuevos mensajes

Basado en el empuje: Envía mensajes automáticamente a los suscriptores 

Tipos de destinatarios

Admite la comunicación A2A

Admite comunicación A2A y A2P

Retención de mensajes

Almacena los mensajes hasta 14 días

No almacena mensajes

Modelo de entrega de mensajes

Admite mensajes uno a uno

Admite mensajería "fan-out" (de uno a muchos)

Dosificación

Admite la agrupación de mensajes

No admite la dosificación de mensajes

Cuándo utilizar el SQS

SQS es la opción preferida para una arquitectura en la nube cuando el sistema de entrega de mensajes necesita:

  • Un sistema de sondeo - los consumidores pueden elegir cuándo sondear los mensajes.
  • Procesamiento asíncrono - Los servicios pueden procesar mensajes de forma independiente.
  • Retención de mensajes - Los mensajes pueden almacenarse hasta 14 días.
  • Entrega de mensajes garantizada - no se pierde ningún mensaje de la cola.
  • Agrupar - Los servicios procesan los mensajes en grupos.

Considera el siguiente ejemplo de la vida real: Una plataforma de comercio electrónico quiere procesar los pedidos de los clientes, lo que implica almacenar los datos relativos al pedido en una base de datos RDS. 

Diagrama de arquitectura de un sistema que utiliza Amazon SQS para procesar datos

Diagrama de arquitectura de un sistema que utiliza Amazon SQS para procesar datos-imagen de Autor.

En este flujo de trabajo, los clientes envían pedidos, que entran en la cola de SQS. La función lambda (es decir, el consumidor) sondea la cola, recibe los mensajes y, a continuación, escribe los datos en la base de datos RDS.

Utilizar SQS para este caso de uso tiene varias ventajas. Como SQS desacopla el proceso, los clientes pueden enviar pedidos aunque la base de datos no esté operativa. Dado que SQS ofrece entrega a la primera, todos los pedidos se procesarán sin riesgo de pérdida de mensajes. Por último, SQS admite el procesamiento por lotes, que permite procesar los mensajes en grupos, mejorando así la eficacia.

Amazon SNS no funcionaría en este caso, ya que no retiene los mensajes, sino que los enviaría inmediatamente a la función lambda, independientemente del estado de la base de datos. Por tanto, si la base de datos deja de estar disponible, los mensajes pueden perderse. Además, como el SNS no admite el procesamiento por lotes, procesaría los mensajes de uno en uno, lo que supondría una solución menos óptima. 

Cuándo utilizar SNS

SNS es la opción preferida para una arquitectura en la nube cuando el sistema de entrega de mensajes necesita:

  • Notificaciones en tiempo real - Los mensajes se envían inmediatamente a los suscriptores con baja latencia.
  • Distribución en abanico - Varios abonados pueden recibir el mismo mensaje simultáneamente.
  • Múltiples suscriptores de notificaciones - pueden enviar mensajes a aplicaciones (por ejemplo, AWS Lambda) y a usuarios finales (por ejemplo, correo electrónico).

Considera un escenario en el que un desarrollador monitoriza el uso de CPU de su instancia EC2. Para asegurarse de que el uso sigue siendo bajo, quieren controlar la métrica de utilización de la CPU en Cloudwatch y recibir una notificación cada vez que supere un umbral determinado.

Amazon SNS ayudaría mucho al desarrollador a crear una solución, ya que envía notificaciones en tiempo real y admite procesos A2A y A2P. Utilizando su patrón fan-out, SNS puede enviar inmediatamente notificaciones a funciones lambda que pueden trabajar para paliar el problema y al desarrollador por correo electrónico para informarle de la alarma activada. 

Diagrama de arquitectura de un sistema que utiliza Amazon SNS para la monitorización

Diagrama de arquitectura de un sistema que utiliza Amazon SNS para la monitorización-imagen del Autor. 

Amazon SQS sería una herramienta menos eficaz para este trabajo debido a su retención de mensajes. Si los desarrolladores desean responder a las violaciones de los umbrales, necesitarían recibir alertas en tiempo real, lo que no sería posible si los mensajes se almacenaran en colas. Además, como SQS utiliza un sistema de sondeo, sólo se accede a los mensajes cuando son sondeados por los consumidores, lo que aumenta la latencia. 

Utilizar conjuntamente SQS y SNS: Lo mejor de los dos mundos

Amazon SQS y Amazon SNS tienen características y rasgos distintos, pero los usuarios de AWS pueden obtener lo mejor de ambos servicios combinándolos para crear un sistema de mensajería eficiente, escalable y tolerante a fallos. 

Integrar los dos servicios es fácil, ya que las colas SQS pueden ser suscriptores de temas SNS. Así, SNS puede enviar notificaciones en tiempo real a las colas de SQS, tras lo cual SQS desacoplará todos los procesos garantizando la entrega de los mensajes. 

Considera el siguiente ejemplo: Un desarrollador de AWS está creando un sistema de envío de documentos que extrae el contenido de los documentos enviados por los usuarios finales. Este sistema debe realizar dos tareas para cualquier documento presentado:

  1. Procesa el documento utilizando una aplicación de tratamiento de textos.
  2. Envía un correo electrónico de confirmación al usuario final.

El desarrollador puede combinar SQS y SNS para crear una solución eficaz:

Diagrama de arquitectura de un sistema que utiliza SNS junto con SQS

Esquema de arquitectura de un sistema que utiliza SNS junto con SQS-imagen del Autor.

En este flujo de trabajo, se envía un mensaje al tema SNS cuando un usuario envía un documento, que inmediatamente empuja el mensaje a la función lambda y a la cola SQS. La función lambda se encarga de enviar el correo electrónico de confirmación, mientras que la cola SQS gestionará los mensajes, que serán sondeados por la instancia EC2 que aloja la aplicación de procesamiento de texto. 

Conclusión

Amazon SQS y SNS son servicios básicos dentro del ecosistema de AWS, y cada uno de ellos ofrece ventajas distintas. SNS ofrece notificaciones en tiempo real, mientras que SQS ofrece un procesamiento de mensajes fiable. 

La solución de mensajería ideal para un problema puede incorporar SNS, SQS o ambos. Al comprender los entresijos de ambos servicios, los desarrolladores de AWS pueden crear una solución de mensajería que se adapte a sus necesidades empresariales únicas, garantizando la eficacia, la escalabilidad y la resistencia.

Si quieres llevar tus conocimientos de AWS al siguiente nivel, considera la posibilidad de realizar estos dos cursos avanzados:

O incluso prepárate para la certificación AWS Cloud Practitioner con nuestro itinerario de habilidades:

Certifícate en el puesto de Ingeniero de Datos de tus sueños

Nuestros programas de certificación te ayudan a destacar y a demostrar que tus aptitudes están preparadas para el trabajo a posibles empleadores.

Consigue tu Certificación
Timeline mobile.png

Preguntas frecuentes

¿Puedo integrar Amazon SQS y SNS con otros servicios de AWS?

Sí, tanto SQS como SNS se integran perfectamente con varios servicios de AWS. Por ejemplo, puedes activar funciones de AWS Lambda con mensajes de SQS o SNS, enviar notificaciones a Amazon S3 cuando se suban archivos nuevos o utilizar Amazon CloudWatch para monitorizar el rendimiento de SQS y SNS.

¿Cómo garantizo la fiabilidad de la entrega de mensajes con SQS y SNS?

Con SQS, puedes utilizar colas de letras muertas (DLQ) para capturar los mensajes que no consiguen procesarse tras varios intentos, garantizando que no se pierdan datos. Para SNS, puedes configurar reintentos o mecanismos de reserva en caso de que falle la entrega de mensajes, como utilizar SQS como suscriptor de reserva de un tema SNS.

¿Puedo combinar SQS y SNS en una única arquitectura?

Sí, SQS y SNS pueden combinarse para crear una arquitectura de mensajería híbrida. Por ejemplo, el SNS puede enviar notificaciones en tiempo real a varios consumidores, incluidas las colas SQS. Esto te permite beneficiarte de notificaciones en tiempo real (SNS) y de un procesamiento fiable y diferido (SQS).

¿Cuáles son los modelos de precios de SQS y SNS?

Tanto SQS como SNS siguen un modelo de precios de pago por uso. SQS cobra en función del número de peticiones, la transferencia de datos y funciones adicionales como el sondeo prolongado. Las tarifas SNS se basan en el número de mensajes publicados y en el método de entrega (por ejemplo, correo electrónico, SMS o terminales HTTP). Supervisar tu uso para controlar los costes es importante, especialmente con aplicaciones de alta frecuencia.

¿Cómo puedo optimizar el rendimiento al utilizar SQS y SNS?

Para optimizar el rendimiento, puedes utilizar el procesamiento por lotes con SQS para enviar y procesar varios mensajes a la vez, reduciendo las peticiones y los costes de la API. Con SNS, asegúrate de que tus suscriptores pueden manejar un alto rendimiento configurando el autoescalado de tus servicios de procesamiento (como Lambda o EC2) para gestionar los picos de tráfico de forma eficiente.

Temas

Aprende más sobre AWS con estos cursos

curso

Introduction to AWS

2 hr
13.3K
Discover the world of Amazon Web Services (AWS) and understand why it's at the forefront of cloud computing.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

AWS vs Azure: Una comparación en profundidad de los dos principales servicios en la nube

Explora las principales diferencias y similitudes entre Amazon Web Services (AWS) y Microsoft Azure. Este exhaustivo análisis abarca el rendimiento, los precios, las ofertas de servicios y la facilidad de uso para ayudar a los aspirantes a profesionales a determinar qué computación en nube se adapta mejor a sus necesidades.
Kurtis Pykes 's photo

Kurtis Pykes

12 min

blog

Los 13 mejores proyectos de AWS: De principiante a profesional

Explora 13 proyectos prácticos de AWS para todos los niveles. Mejora tus conocimientos sobre la nube con aplicaciones prácticas del mundo real y la orientación de expertos.
Joleen Bothma's photo

Joleen Bothma

12 min

blog

Las 20 mejores preguntas y respuestas de la entrevista sobre AWS Lambda para 2024

AWS Lambda es un servicio de computación sin servidor y un tema cada vez más común en las entrevistas técnicas. Tanto si eres nuevo en la computación en la nube como si eres un profesional experimentado, comprender AWS Lambda es esencial.
Zoumana Keita 's photo

Zoumana Keita

12 min

blog

Contratos de datos desmitificados: Todo lo que necesitas saber

Lograr la escalabilidad en los sistemas de datos distribuidos y reducir los errores.
Mike Shakhomirov's photo

Mike Shakhomirov

24 min

blog

AWS Certified Cloud Practitioner: guía completa

Comprende la certificación y el examen AWS Certified Cloud Practitioner con nuestra guía completa. Descubre consejos, recursos y estrategias para garantizar tu éxito.
Srujana Maddula's photo

Srujana Maddula

27 min

tutorial

Primeros pasos con AWS Athena: Guía práctica para principiantes

Esta guía práctica te ayudará a empezar a utilizar AWS Athena. Explora su arquitectura y características y aprende a consultar datos en Amazon S3 utilizando SQL.
Tim Lu's photo

Tim Lu

28 min

Ver másVer más