El ingeniero de software explica: Kafka

Todos los meses entrevistamos a un colega de Sofico sobre una aplicación o herramienta que Sofico utiliza a diario. Este mes, Petar Pilipovic (Desarrollador Principal) y Wim Van Den Eynde (Consultor Técnico) nos hablan acerca de Apache Kafka. 

Tenía que ser rápido - casi sin latencia -, capaz de procesar grandes cantidades de datos y fácil de ampliar. Encontramos esa solución en Apache Kafka.

Petar

¿Qué es Kafka? 

Apache Kafka es una plataforma de transmisión distribuida. Tiene tres capacidades clave: 

  1. Os permite publicar y subscribirse a flujos de registros. En este sentido, es similar a una cola de mensajes o un sistema de mensajería empresarial. 

  2. Os permite almacenar flujos de registros de una manera tolerante a fallas. 

  3. Os permite procesar flujos de registros a medida que ocurren. 

Kafka es un proyecto de código abierto, desarrollado por LinkedIn y forma parte de la Apache Software Foundation desde 2012. Uno de los fundadores de Kafka, Jay Kreps, eligió nombrar el software en honor al autor Franz Kafka porque es "un sistema optimizado para la escritura". 

¿Por qué lo usamos en Sofico? 

“Todo empezó hace un par de años cuando fueron apareciendo nuevos requisitos para obtener análisis e informes casi en tiempo real. Con la configuración y la arquitectura que teníamos en ese momento, el cumplimiento de tales requisitos podría tener un impacto en el rendimiento de nuestro sistema central, por lo que buscamos una solución.” 

“Tenía que ser rápido casi sin latencia, capaz de procesar grandes cantidades de datos y fácil de ampliar. Encontramos esa solución en Apache Kafka.” 

Strimzi proporciona imágenes de contenedores y operadores para ejecutar Kafka en Kubernetes.

Wim

¿Cómo usamos Kafka en Sofico? 

“Estamos usando Kafka como una plataforma de transmisión. Transmitimos datos de nuestro sistema central Miles a nuestra plataforma de microservicio Miles. Los datos del sistema central Miles se transmiten a los temas, donde se van a consumir. Luego, los datos se transforman en un modelo de dominio canónico y se publican en temas de dominio.” 

Estamos desarrollando Kafka como parte de nuestra plataforma de microservicios Miles en Kubernetes. Usamos Strimzi para ejecutar racimos de Kafka en Kubernetes en varias configuraciones de implementación.

Petar


¿Existen dependencias y métodos de trabajo específicos? 

“Una configuración Kafka típica contiene múltiplos intermediarios e instancias de Zookeeper, que actúan como un descubrimiento de servicios. En el futuro, Zookeeper será removido de la configuración de Kafka, pero las versiones actuales aún lo necesitan.” 
 
“Estamos desarrollando Kafka como parte de nuestra plataforma de microservicios Miles en Kubernetes. Usamos Strimzi para ejecutar racimos de Kafka en Kubernetes en varias configuraciones de implementación.” 

“Strimzi proporciona imágenes de contenedores y operadores para ejecutar Kafka en Kubernetes. Los operadores simplifican el proceso de desarrollar y ejecutar los racimos y componentes de Kafka. Además, nos permite configurar el acceso a Kafka, mejorarlo, y gestionar intermediarios, tales como la creación y gestión de temas y usuarios.” 

¿Tienes algunos consejos y trucos que puedan ser útiles para otros? 

“Kafka es altamente configurable. Podéis configurarlo para alcanzar un mayor rendimiento de datos o para obtener una mayor coherencia de los datos. Configuramos Kafka para un mayor rendimiento de datos cuando quieres transmitir datos menos importantes (los cuales serán agregados al final) pero necesitamos los datos como un feed en tiempo real." 

"Configuramos Kafka para una mayor coherencia de los datos cuando queremos transmitir datos muy importantes (tales como transacciones de clientes) y no queremos perder ningún dato." 


---

​​​​​​​Representado: Franz Kafka 

¿Existen alternativas a Apache Kafka? 

“Si, había otras alternativas como IBM MQ o Rabbit MQ en ese momento, pero una vez que Kafka puede manejar grandes cantidades de datos de una manera muy eficiente, así como algunas otras capacidades que son de nuestro interés, decidimos usar Apache Kafka.” 

“Usamos el software o estructuras que mejor se adapten a nuestras necesidades y nos den ventajas para nuestros proyectos. Al final, esto es lo más importante para nuestros clientes.” 

Etiquetas


Share this story  —   Facebook     Twitter     LinkedIn     Xing

Más vida en Sofico