Ir al contenido principal

SNS vs EventBridge


La diferencia principal entre ambos servicios radica principalmente en el patrón de arquitectura que intentan cubrir: Message Broker o Event Bus.

Message Broker

Un message broker es un intermediario que se encarga de traducir y transportar los mensajes entre los servicios que los producen y los que los consumen. El message broker tiene una expectativa sobre cómo el consumidor maneja el mensaje y existe un contrato entre las dos partes. Un ejemplo de aplicación de un message broker es una cola de trabajo, donde los servicios envían tareas a realizar y otros servicios las reciben y las procesan. SNS es un ejemplo de message broker, ya que permite enviar mensajes a diferentes tipos de suscriptores y esperar una confirmación de entrega.




Event Bus

Un event bus es un canal que se encarga de distribuir los eventos entre los servicios que los generan y los que los escuchan. El event bus no tiene ninguna expectativa sobre cómo el oyente maneja el evento y no existe un contrato entre las dos partes. Un ejemplo de aplicación de un event bus es un sistema de notificaciones, donde los servicios publican eventos que indican cambios de estado o condiciones y otros servicios se suscriben a los eventos que les interesan. EventBridge es un ejemplo de event bus, ya que permite recibir eventos de múltiples fuentes y enrutarlos a múltiples destinos según reglas definidas.



SNS & EventBridge

Ambos servicios nos permiten integrar diferentes sistemas y servicios mediante el envío y recepción de mensajes o eventos. Sin embargo, cada uno tiene sus propias características, ventajas y desventajas que debemos conocer para elegir el más adecuado para nuestro caso de uso.


SNS

SNS es un servicio de notificaciones que nos permite enviar mensajes en tiempo real a un gran número de suscriptores. Los suscriptores pueden ser servicios de AWS, puntos finales HTTP/S o aplicaciones móviles. SNS utiliza temas para agrupar los mensajes por canales lógicos y permite filtrar los mensajes por atributos o políticas de suscripción. SNS tiene un mecanismo de reintento robusto para cuando los destinos están no disponibles y puede enviar los mensajes fallidos a una cola de mensajes muertos para su posterior procesamiento.


Casos de uso de SNS

Algunos ejemplos de casos de uso de SNS son:

- Enviar alertas por SMS, correo electrónico o notificaciones push a los usuarios de una aplicación móvil cuando ocurre un evento importante, como una oferta, una actualización o una emergencia.

- Publicar mensajes a múltiples servicios de AWS, como Lambda, SQS, EC2 o CloudWatch, para activar acciones o flujos de trabajo en respuesta a un evento, como un cambio de estado, una condición o una solicitud.

- Distribuir mensajes a diferentes regiones o cuentas de AWS para lograr una alta disponibilidad, una baja latencia o una separación de responsabilidades.


EventBridge

EventBridge es un servicio de bus de eventos que nos permite procesar eventos de múltiples fuentes en tiempo real y publicarlos a múltiples destinos. Las fuentes pueden ser servicios de AWS, proveedores de SaaS o nuestras propias aplicaciones. Los destinos pueden ser servicios de AWS o puntos finales API Gateway. EventBridge utiliza buses de eventos para separar lógicamente los eventos y permite enrutar los eventos por contenido o patrón.


Casos de uso de EventBridge

Algunos ejemplos de casos de uso de EventBridge son:

- Recibir eventos de servicios de AWS, como EC2, S3 o CloudTrail, que indican cambios de estado, condiciones o acciones y reaccionar a ellos con servicios de AWS, como Lambda, SQS, SNS o Kinesis.

- Recibir eventos de proveedores de SaaS, como Auth0, PagerDuty o Datadog, que indican actividades, alertas o métricas y reaccionar a ellos con servicios de AWS, como Lambda, SQS, SNS o Kinesis.

- Recibir eventos de nuestras propias aplicaciones, como un sistema de pedidos, un sistema de inventario o un sistema de facturación, y reaccionar a ellos con servicios de AWS, como Lambda, SQS, SNS o Kinesis.


Comparación y conclusión

SNS y EventBridge tienen muchas similitudes. Ambos nos permiten desacoplar los productores y los consumidores de mensajes o eventos, filtrar los mensajes o eventos y proporcionar capacidades de fan-in o fan-out. Sin embargo, hay diferencias en la lista de destinos y características de cada servicio, y nuestra elección de servicio depende de las necesidades de nuestro caso de uso.

SNS tiene las siguientes ventajas:

- Es altamente escalable y confiable.

- Tiene un mecanismo de reintento robusto para cuando los destinos están no disponibles.

- Permite filtrar los mensajes por atributos o políticas de suscripción.


SNS tiene las siguientes desventajas:

- No garantiza el orden de los mensajes.

- No admite el procesamiento por lotes de los mensajes.

- Tiene un número limitado de tipos de suscriptores.


EventBridge tiene las siguientes ventajas:

- Es altamente escalable y confiable.

- Permite enrutar los eventos por contenido o patrón.

- Admite una gran variedad de fuentes y destinos de eventos.


EventBridge tiene las siguientes desventajas:

- Tiene una menor capacidad de procesamiento que SNS.

- No admite el envío de notificaciones a aplicaciones móviles.

- Tiene un costo adicional por el uso de buses de eventos personalizados o de socios.

En resumen, SNS es un servicio de notificaciones que nos permite enviar mensajes en tiempo real a un gran número de suscriptores. EventBridge es un servicio de bus de eventos que nos permite procesar eventos de múltiples fuentes en tiempo real y publicarlos a múltiples destinos. Ambos servicios tienen sus propios casos de uso, ventajas y desventajas, y debemos elegir el más adecuado para nuestro escenario.

Entradas populares de este blog

¿Cómo usar Lambda con Amazon SQS para procesar mensajes de forma asíncrona y escalable?

Amazon Simple Queue Service (Amazon SQS) es un servicio de colas de mensajes que permite enviar y recibir mensajes entre componentes de una aplicación de forma fiable y duradera. Con Amazon SQS, se puede desacoplar la lógica de negocio de la fuente de los eventos, y procesarlos de forma asíncrona y en paralelo.   En este artículo, vamos a ver cómo usar Lambda con Amazon SQS para procesar mensajes de una cola de forma eficiente y flexible, aprovechando las características de concurrencia, escalamiento y procesamiento del event source mapping de Lambda, así como la estrategia de backoff que implementa Lambda para manejar errores y reintentos.   Concurrencia del event source mapping Un event source mapping es una configuración que le dice a Lambda qué fuente de eventos debe monitorear y qué función debe invocar cuando se produzca un evento. En el caso de Amazon SQS, el event source mapping se encarga de leer los mensajes de la cola y enviarlos a la función Lambda en lotes. La concurrencia

¿Qué es el patrón Circuit Breaker y cómo se puede implementar con AWS Step Functions?

En el desarrollo de software, es común que las aplicaciones se comuniquen con servicios o recursos externos, como bases de datos, APIs o microservicios. Sin embargo, estos servicios o recursos pueden fallar o estar temporalmente indisponibles por diversas razones, lo que puede afectar el rendimiento y la disponibilidad de la aplicación. Para manejar estos escenarios de falla, se puede utilizar el patrón Circuit Breaker, que consiste en detectar y prevenir que una operación que tiene alta probabilidad de fallar se ejecute repetidamente, causando más problemas o consumiendo recursos innecesarios.  El patrón Circuit Breaker tiene tres estados posibles: cerrado, abierto y medio abierto. Cerrado : En este estado, el circuito está funcionando normalmente y la operación se ejecuta sin problemas. Si se detecta una falla, se incrementa un contador de fallas y se calcula un umbral de fallas, que puede ser un número o un porcentaje de fallas permitidas. Si el contador de fallas supera el umbra