Kafka en una Arquitectura de Microservicios


En esta entrada vamos a hablar sobre como utilizar kafka, no Franz Kafka el escritor Bohemio, sino la herramienta de Apache en Microservicios, y como de útil e importante puede llegar a ser para construir una buena arquitectura de Microservicios.

Tal y como ya hablamos en una entrada anterior uno de los patrones más extendidos e implementados cuando se trabaja con Microservicios es hacer uso del Event-driven programming, el cual es un paradigma basado en eventos, es decir, hay un bucle que esta escuchando si llega alguna acción y en ese momento realizar un procesamiento en función de esa acción. Se podría resumir como que un sistema envía eventos o mensajes a otro sistema dentro del mismo dominio (contexto de negocio).

El objetivo de usar este tipo de arquitecturas, es también lograr asincronía total, es decir que ninguna llamada sea HTTP síncrona, en la que se este esperando la respuesta.

¿Cómo funciona Kafka?

Kafka es un sistema de mensajería duradero basado en publicación y suscripción que intercambia datos entre procesos, aplicaciones y servidores. Es un sistema distribuido y horizontalmente escalable.

Su funcionamiento es similar al de cualquier sistema de mensajería. Por un lado tenemos los Productores que envía un mensaje a un nodo de Kafka (broker) y dicho mensaje es procesado por otra aplicación que es la consumidora. Estos mensajes

Los mensajes son almacenado en un topic al que el consumidor esta suscrito y puede escuchar esos mensajes.

Kafka consumidor y productor
Kafka:Consumidor y productor

Event Driven con Kafka

Para poder montar un sistema Event Driven con Kafka, al menos necesitaremos dos aplicaciones que se comuniquen entre si, y que una envíe mensajes o acciones a la otra aplicación para que sean procesados.

Vamos a explicar este punto con un sencillo ejemplo, vamos a crear un sistema bancario en el que tenemos dos Microservicios, el primero de ellos contiene el saldo del usuario y el segundo Microservicio es el funcionamiento de su tarjeta de crédito.

Cada vez que el usuario realiza un pago con tarjeta, el microservicio que se encarga de la gestión de la tarjeta producirá un mensaje que de manera asíncrona llegará a un topic de kafka, y el microservicio consumidor que se encarga del saldo, será el encargado de consumir ese mensaje y descontar el saldo.

Este es un ejemplo muy básico y muy sencillo de utilización de kafka, ya que habría que tener en cuenta más parámetros, como si tiene o no saldo, o que lleguen mensajes seguidos y tengamos que compensar lo cobrado porque no se pueda realizar el pago etc, pero no es objeto de estudio en esta entrada. Estos temas los trataremos en próximas entrada, con el patrón Saga.

Conclusión.

En esta entrada hemos visto como podemos utilizar kafka en una arquitectura de microservicios haciendo uso del patrón Event Driven.


3 pensamientos sobre “Kafka en una Arquitectura de Microservicios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *