A partir de cierto punto no hay retorno. Ese es el punto que hay que alcanzar.

Fanz Kafka

¿Sabías que Apache Kafka lleva su nombre porque está optimizado para la escritura? El autor del proyecto era fan del escritor Franz Kafka y decidió llamarlo en honor a él.

“Una plataforma de streaming distribuida”. Así se vende uno de las herramientas más usadas de hoy en día. Pero… ¿Qué significa?.

Kafka promete ser una plataforma de streaming de datos con tres características principales:

  • Publicación y suscripción de secuencias de registros, similar a una cola de mensajes o un sistema de mensajería empresarial (tal como jms)
  • Almacenamiento de flujos de registros de una manera duradera y tolerante a fallas
  • Procesamiento de flujos de registros a medida que ocurren (ojo con esto, tocaremos este tema más adelante, pero les adelanto: casi nulo uso de buffer)

Si, para mí tampoco quedó claro la primera vez, pero qué tal una explicación…

Para entender para qué nos sirve Kafka, pensemos en que desarrollamos una aplicación para una empresa pequeña. De una manera bastante simplificada, nuestra aplicación podría resumirse en el siguiente gráfico:

Simple. ¿Verdad?. Ahora imaginemos que conforme la empresa va creciendo, nos van pidiendo la creación de más y más sistemas “satélite” cuyos backends y frontends deben comunicarse de la manera menos óptima posible (porque así suele ser el cliente). De manera muy simplificada, tendríamos algo como lo siguiente:

¡Qué horror! y esto sin mencionar la cantidad de interfaces que debes construir ya que no todas se van a comunicar de la misma manera, así que para cuando termines, tienes una masa de servicios rest, soap, comunicación por archivos, por colas y quién sabe qué otras cosas.

Kafka llega a cambiar la manera en la que realizas este tipo de comunicaciones, permitiéndote desacoplar los flujos de datos y tus sistemas. ¿Qué significa esto?. Pues básicamente que ya no tendrás que conectar el backend 1 con el front end 3. Sino que toda la data originada por tu back end (o sistemas originadores de datos) terminará alojada en Apache Kafka y siendo consumida por tu front end (u otros sistemas consumidores de datos). Así:

Y lo mejor de todo, es que puedes pasar a través de Kafka cualquier cosa que se te ocurra, desde cuentas, registros de usuarios, data sacada de tu base de datos. El límite lo pones tú.

El proyecto Apache Kafka fue creado por LinkedIn (si, la red social de perfiles profesionales más grande del mundo), es Open Source y es mantenida (en su mayoría) por la empresa Confluent. La tecnología brindada por Kafka es usada por muchas empresas a nivel mundial, te comparto algunos nombres:

Empresas como Netflix, airbnb, LinkedIn, Uber o Walmart, usan Apache Kafka para mantener estadísticas en tiempo real disponibles para sus consumidores

Casos de uso de Apache Kafka:

  • Sistemas de Mensajería
  • Monitoreo de Actividades
  • Reunir métricas de varios sitios
  • Reunir logs de múltiples aplicaciones
  • Procesamiento de data en Streaming (usando el Kafka Stream Api o Spark por ejemplo)
  • Desacoplamiento de dependencias de un sistema
  • Integración con herramientas y tecnologías de Big Data como Hadoop o Flink.

Ejemplos de uso:

  • Netflix usa Kafka para buscar recomendaciones en tiempo real mientras miras su contenido
  • Uber usa Kafka para reunir información de los conductores y predecir altas demandas o “tarifas dinámicas”
  • LinkedIn usa Kafka para prevenir spam, reunir información de las interacciones de sus usuarios y hacer mejores recomendaciones en tiempo real.

Kafka es un excelente medio de transporte para tu data en tiempo real. ¿Y tú, ya pensaste en adoptar esta tecnología?

Nos vemos en el siguiente post de Kafka, en el cual te hablaré un poco más sobre cómo funciona.

Un saludo!