Los sistemas de intermediación de mensajes están presentes en cada vez más soluciones pero ¿qué ventajas tienen? ¿Cuáles son sus casos de uso?

En este episodio de "Cómo conocí a nuestro cloud" hablaremos sobre estos sistemas, centrándonos en dos: Kafka y PubSub. Para ello, Andrés Navidad y Andrés Macarrilla, dos de nuestros compañeros en el equipo de Goodly, nos ayudarán a conocer mejor estos productos.

Si no quieres perderte el podcast de hoy ¡corre a tu plataforma favorita! Está disponible en: Ivoox, YouTube, Google Podcast y Apple Podcast.

¿Qué es un sistema de intermediación de mensajes?

Estas herramientas constan de 3 componentes: los publicadores o sistemas que emiten información, el boost de eventos o broker de mensajería que aglutina los eventos y los suscriptores que consumen la información. Todo esto con un denominador común como es el factor de temporalidad.

¿Qué ventajas y desventajas tienen los sistemas de intermediación de mensajes?

  • Ventajas: dentro de estos sistemas se produce poco acoplamiento entre publicadores y suscriptores. El publicador puede emitir información sin conocer a los suscriptores ni preocuparse por ellos. De esta forma, aislas al suscriptor del publicador. Además, existe un alto acoplamiento semántico, por lo que los mensajes están interrelacionados semánticamente.
  • Inconvenientes: esta separación se hace tan grande que a veces hay que poner mecanismos para que lo que se publique sea legible para todos los suscriptores. Si esto no se produce, puede que se provoque poca comprensión del idioma que se habla y no lleguen los mensajes adecuados a los suscriptores.

¿Cuáles son los posibles casos de uso de los sistemas de intermediación de mensajes?

  • Balancear cargas de trabajo entre clusters. Colas de tareas de forma que distintos trabajadores pidan tareas y puedan autogestionarse.
  • Flujos de trabajo desacoplados. Poder ir cambiando piezas, hacer separaciones de funcionalidades, trabajadores y/o empresas.
  • Redistribución de cachés de datos. Con la actualización de datos se puede retroalimentar, casi en tiempo real, desde que se publica hasta que está disponible es mínimo.
  • Login desde diferentes sistemas. Transparencia entre todos los sistemas y registros.
  • IoT. Diversos dispositivos con volumetría de envíos de mensajes, formato de información, etc. todos volcados a una misma cola de mensajería. Separando en diferentes canales y orígenes.
  • Motor de reglas. Definiendo ciertas métricas o mandar consultas en SQL.

Kafka vs. PubSub

Kafka

Entre las ventajas de Kafka para la realización de sistemas de intermediación de mensajes se encuentran que:

  • Cuenta con una gran experiencia y comunidad.
  • Tiene un ecosistema que ha ido evolucionando y mejorando; empezando por Topology, Kafka Stream, Ksql hasta llegar a Schema Registry, que controla la capa semántica para que se entienda con independencia de los suscriptores.
  • Funcionalidades como compact topic u order message per key; aunque pubsub también lo ha incluído ya.
  • Capacidad de posicionamiento o decidir dónde empezar a leer una vez suscrito a un topic, earliest or latest.

En contra, Kafka tiene las siguientes limitaciones:

  • Gestión del broker desde el punto de vista de infraestructura. Solucionable contratándolo como servicio. MSK en Amazon o Confluent en los principales proveedores de nube pública.
  • Curva de aprendizaje más pronunciada para explotar todo el ecosistema y funcionalidades.

PubSub

Por otro lado, PubSub tiene la siguientes ventajas en la intermediación de mensajes:

  • Integración nativa con los servicios de Google Cloud.
  • Plug and play. Sencillez a la hora de implantar los eventos, solamente abrir un panel y empezar a funcionar.
  • Costes de mantenimiento mínimo, solo coste por uso.
  • Escalabilidad en función de la carga de trabajo que llegue.
  • Usable dentro y fuera de Google cloud.
  • Modo push y modo pop.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.