¿Qué es Apache Kafka?

Apache Kafka es una reconocida plataforma de transmisión de eventos que se usa para recopilar, procesar y almacenar datos de eventos de transmisión o datos que no tienen un principio y un final distinguidos. Kafka posibilita una nueva generación de aplicaciones distribuidas con la capacidad de escalar para controlar miles de millones de eventos transmitidos por minuto.

Antes de que surgieran sistemas de transmisión de eventos como Apache Kafka y Google Cloud Pub/Sub, el procesamiento de datos se controlaba mediante trabajos por lotes periódicos, que consisten en almacenar los datos sin procesar y, luego, procesarlos a intervalos de tiempo arbitrarios. Por ejemplo, una empresa de telecomunicaciones puede esperar hasta el fin del día, de la semana o del mes para analizar los millones de registros de llamadas y calcular los cargos acumulados.

Una de las limitaciones del procesamiento por lotes es que no se realiza en tiempo real. Cada vez más organizaciones quieren analizar los datos en tiempo real para poder tomar decisiones empresariales oportunas y adoptar medidas cuando ocurren hechos interesantes. Por ejemplo, la misma empresa de telecomunicaciones que mencionamos antes podría beneficiarse si mantiene a sus clientes al tanto de sus cargos en tiempo real, como una forma de mejorar la experiencia general del cliente.

Para lograrlo, se puede aplicar la transmisión de eventos. La transmisión de eventos es un procedimiento que consiste en procesar de forma continua transmisiones infinitas de eventos a medida que se crean, con el fin de capturar el valor temporal de los datos y crear aplicaciones basadas en envíos cuando ocurre un hecho interesante. Hay varios ejemplos de casos transmisión de eventos, entre los que se incluyen el análisis continuo de los archivos de registro que generan las aplicaciones web orientadas a los clientes, la supervisión del comportamiento de los clientes y las reacciones ante este a medida que los usuarios navegan en los sitios web de comercio electrónico, el seguimiento continuo de las opiniones de los clientes mediante el análisis de los cambios en los datos de flujo de clics generados por las redes sociales o la recopilación de datos de telemetría generados por dispositivos de Internet de las cosas (IoT) y la posterior toma de medidas.

Obtén información sobre la propuesta de Confluent Cloud que incluye Apache Kafka integrado y completamente administrado en Google Cloud.

Descripción general de Apache Kafka

Kafka recopila datos de transmisión y registra lo que sucedió y cuándo ocurrió. A este registro se lo conoce como registro de confirmación inmutable. Es inmutable porque se le pueden agregar datos, pero no se puede modificar. Desde allí, puedes suscribirte al registro (acceder a los datos) y publicar en él (agregar más datos) a partir de cualquier cantidad de aplicaciones de transmisión en tiempo real y de otros sistemas.

Por ejemplo, puedes usar Kafka para recopilar toda la transmisión de datos de transacción de tu sitio web a fin de proporcionar esos datos a una aplicación que supervisa las ventas de productos en tiempo real, las compara con la cantidad de productos en stock y permite la reposición del inventario justo a tiempo.

¿Qué beneficios tiene Kafka?

Kafka de código abierto

Esto significa que su código fuente está disponible libremente para que cualquier persona lo tome, lo modifique y lo distribuya como su propia versión, con cualquier objetivo. No hay tarifas de licencias ni otras restricciones. Otro beneficio de Kafka es que cuenta con una comunidad global de desarrolladores que trabajan con la plataforma y contribuyen a ella. Como resultado, Kafka ofrece una gran variedad de conectores, complementos, y herramientas de supervisión y de configuración que son parte de un ecosistema creciente.

Escalamiento y velocidad

Además de escalar con volúmenes de datos en constante crecimiento, Kafka proporciona esos datos en toda la empresa en tiempo real. El hecho de que Kafka es una plataforma distribuida también representa otro gran beneficio. Esto significa que el procesamiento se divide en distintas máquinas físicas o virtuales. Hay dos ventajas relacionadas con esta característica: por un lado, con cierto trabajo, tiene la capacidad de escalar horizontalmente a fin de agregar máquinas cuando se necesita más almacenamiento o potencia de procesamiento; por el otro lado, es confiable porque la plataforma sigue ejecutándose incluso si las máquinas individuales fallan. Sin embargo, esta característica de Kafka puede ser difícil de controlar a gran escala.

Kafka es un servicio administrado

A pesar de todas las ventajas que tiene Kafka, su implementación es compleja. Los clústeres locales de Kafka presentan dificultades a la hora de instalarlos, escalarlos y administrarlos en producción. Cuando estableces la infraestructura local para ejecutar Kafka, debes aprovisionar máquinas y configurar Kafka. También debes diseñar el clúster de máquinas distribuidas para garantizar la disponibilidad, asegurarte de que los datos estén almacenados y protegidos, configurar la supervisión y escalar los datos con cuidado a fin de que se admitan los cambios de carga. Luego, tienes que mantener la infraestructura. Para ello, deberás reemplazar las máquinas que fallen y llevar a cabo actualizaciones y aplicaciones de parches de rutina.

Un método alternativo consiste en usar Kafka como un servicio administrado en la nube. Un proveedor tercero se encarga de aprovisionar, compilar y mantener la infraestructura de Kafka. Tú compilas y ejecutas las aplicaciones. De este modo, es sencillo para ti implementar Kafka sin necesitar experiencia específica en la administración de la infraestructura de Kafka. Dedicas menos tiempo a la administración de la infraestructura y más tiempo a la generación de valor para tu empresa.

¿Cómo funciona Kafka?

Kafka permite el procesamiento de eventos de transmisión por medio de cinco funciones principales:

Publicación

Una fuente de datos puede publicar o colocar una transmisión de eventos de datos en uno o más temas de Kafka, o en grupos de eventos de datos similares. Por ejemplo, puedes tomar la transmisión de datos de un dispositivo de IoT (por ejemplo, un router de red) y publicarla en una aplicación que realiza mantenimiento predictivo a fin de calcular cuándo es posible que ese router falle.

Consumo

Una aplicación puede suscribirse a uno o más temas de Kafka o tomar datos de estos, y procesar la transmisión de datos resultante. Por ejemplo, una aplicación puede tomar datos de distintas transmisiones de redes sociales y analizarlos para determinar el contenido de las conversaciones en línea sobre cierta marca.

Procesamiento

La API de transmisiones de Kafka puede funcionar como un procesador de transmisiones: consume transmisiones de datos entrantes de uno o más temas y produce una transmisión de datos saliente hacia uno o más temas.

Conexión

También puedes crear conexiones de consumidor o productor reutilizables que conectan los temas de Kafka con aplicaciones existentes. Hay cientos de conectores existentes ya disponibles, incluidos los conectores a servicios clave como Dataproc, BigQuery y otros.

Almacenamiento

Apache Kafka proporciona almacenamiento duradero. Kafka puede funcionar como una “fuente de información”, ya que distribuye los datos en distintos nodos para lograr una implementación con alta disponibilidad dentro de un solo centro de datos o en diferentes zonas de disponibilidad.