• Temas
  • ¿Qué es Apache Kafka?

¿Qué es Apache Kafka?

Apache Kafka es una popular plataforma de streaming de eventos que sirve para recoger, procesar y almacenar datos de eventos de streaming o datos sin principio ni final concretos. Kafka posibilita una generación nueva de aplicaciones distribuidas que se pueden escalar para gestionar miles de millones de eventos de streaming cada minuto.

Hasta que surgieron los sistemas de streaming de eventos, como Apache Kafka y Google Cloud Pub/Sub, esos datos se solían procesar mediante tareas por lotes periódicas que, primero, almacenaban los datos sin procesar y, luego, se ejecutaban a intervalos arbitrarios. Por ejemplo, una empresa de telecomunicaciones esperaba a que acabara el día, la semana o el mes para analizar los millones de registros de llamadas y calcular los cargos devengados.

Una de las limitaciones del procesamiento por lotes es que no se hace en tiempo real. Las organizaciones demuestran cada vez más interés por analizar los datos en tiempo real para tomar decisiones en el momento justo y medidas cuando ocurren hechos importantes. Siguiendo con el ejemplo anterior de la empresa de telecomunicaciones, le podría venir bien comunicar los cargos en tiempo real a los clientes para mejorar su experiencia global.

Ahí entra en escena el streaming de eventos, que consiste en procesar de forma continua flujos infinitos de eventos a medida que se crean. El objetivo es capturar el valor de tiempo de los datos, además de crear aplicaciones basadas en inserciones que realicen acciones cada vez que suceda un hecho de interés. Estos son algunos ejemplos de streaming de eventos: analizar continuamente los archivos de registro que generan las aplicaciones web para clientes; monitorizar el comportamiento de los clientes y reaccionar a sus actividades, como navegar por sitios web de comercio electrónico; hacer un seguimiento continuo de la opinión de los clientes analizando las variaciones en los datos de los flujos de clics que generan las redes sociales; o recoger los datos de telemetría que generan los dispositivos de Internet de las cosas y darles la respuesta adecuada.

Obtén más información sobre Confluent Cloud, la solución totalmente gestionada e integrada de Apache Kafka para Google Cloud.

Información general sobre Apache Kafka

Kafka analiza los datos de streaming y hace constar qué ha sucedido y cuándo con total exactitud en el denominado "registro de confirmación inmutable". Se considera inmutable porque, aunque se le puede añadir información, no se puede modificar de ningún otro modo. Puedes suscribirte al registro (acceder a los datos) y también publicar en él (añadir más datos) desde tantas aplicaciones de streaming en tiempo real como quieras, además de otros sistemas.

Por ejemplo, puedes utilizar Kafka para incorporar los flujos de datos de transacciones de tu sitio web a la aplicación que hace el seguimiento de las ventas de productos en tiempo real, las compara con las existencias y, si hace falta, ordena la reposición de inventario a tiempo.

¿Cuáles son las ventajas de Kafka?

Código abierto

Significa que el código fuente de Kafka está a disposición gratuita de quien quiera usarlo, modificarlo y distribuir su propia versión con cualquier fin. No hay ni licencia ni restricciones. Otra ventaja de Kafka es que recibe la colaboración y las aportaciones de una comunidad mundial de desarrolladores. Por eso ofrece una amplia gama de conectores, complementos y herramientas tanto de monitorización como de configuración como parte de un ecosistema que se amplía de manera constante.

Escalabilidad y rapidez

Kafka no solo se escala conforme aumentan los volúmenes de datos, sino que también reparte esos datos por toda la empresa en tiempo real. Otro punto fuerte de Kafka es que, al ser una plataforma distribuida, el procesamiento se divide entre varias máquinas físicas o virtuales. Eso reporta dos ventajas: una, con un poquito de trabajo, admite el escalado horizontal para añadir máquinas cuando hace falta más potencia de procesamiento o espacio de almacenamiento y, dos, ofrece fiabilidad porque la plataforma se sigue ejecutando aunque falle alguna máquina. No obstante, esta característica de Kafka puede resultar muy difícil de gestionar a escala.

Kafka como servicio gestionado

Pese a todas sus ventajas, Kafka es una tecnología complicada de desplegar. Los clústeres de Kafka on‑premise son difíciles de configurar, escalar y gestionar en producción. Cuando montas la infraestructura on‑premise para ejecutar Kafka, tienes que aprovisionar máquinas y configurar la plataforma. También debes diseñar el clúster de máquinas distribuidas para asegurar la disponibilidad, comprobar que los datos están almacenados y protegidos, configurar la monitorización y prever el escalado de datos por si cambia la carga. Cuando ya has acabado, te tienes que ocupar del mantenimiento de esa infraestructura, sustituir las máquinas que fallan y realizar las tareas rutinarias de aplicación de parches y actualización.

No obstante, tienes una alternativa: utilizar Kafka como un servicio gestionado en la nube. En este caso, el proveedor se encarga de aprovisionar, crear y mantener la infraestructura de Kafka. Tú solo tienes que desarrollar y ejecutar las aplicaciones. Con este método no te cuesta tanto desplegar Kafka, ya que no necesitas conocimientos específicos sobre la gestión de su infraestructura. Dedicas menos tiempo a gestionar la infraestructura e inviertes más tiempo en generar valor para tu empresa.

¿Cómo funciona Kafka?

Kafka permite procesar eventos de streaming por medio de cinco funciones clave:

Publicar

Las fuentes de datos pueden publicar o colocar flujos de eventos de datos en temas de Kafka o grupos de eventos de datos parecidos. Por ejemplo, puedes publicar los flujos de datos de un dispositivo de Internet de las cosas (como un router de red) en una aplicación que, gracias al mantenimiento predictivo, calcula cuándo es probable que falle dicho dispositivo.

Consumir

Las aplicaciones se pueden suscribir a temas de Kafka o extraer datos de ellos y procesar el flujo de datos resultante. Por ejemplo, una aplicación puede extraer los datos de los flujos de varias redes sociales y analizarlos para determinar el cariz de las conversaciones online sobre una marca.

Procesar

La API de Kafka Streams puede funcionar como procesador de streaming: consume los flujos de datos procedentes de los temas y produce flujos de datos que se insertan en ellos.

Conectar

También puedes crear conexiones reutilizables de producción o consumo que vinculen los temas de Kafka con las aplicaciones disponibles. Puedes usar cientos de conectores, como los que vinculan con servicios tan esenciales como Dataproc o BigQuery, entre otros.

Almacenar

Apache Kafka proporciona un espacio de almacenamiento duradero. Kafka puede funcionar como fuente de información veraz, ya que distribuye los datos por los distintos nodos para que el despliegue ofrezca alta disponibilidad tanto en un único centro de datos como en diferentes zonas de disponibilidad.