8 min

¿Qué es Kafka y cómo se usa en sistemas modernos?

Aprende qué es Apache Kafka, cómo funcionan topics y particiones, y dónde encaja Kafka en sistemas modernos para eventos en tiempo real, registros y canalizaciones de datos.

¿Qué es Kafka y cómo se usa en sistemas modernos?

Kafka en lenguaje llano

Apache Kafka es una plataforma distribuida de transmisión de eventos. En pocas palabras, es una “tubería” compartida y duradera que permite a muchos sistemas publicar hechos sobre lo que pasó y a otros sistemas leer esos hechos—rápido, a escala y en orden.

Los equipos usan Kafka cuando los datos deben moverse de forma fiable entre sistemas sin acoplamiento fuerte. En lugar de que una aplicación llame directamente a otra (y falle cuando ésta está caída o lenta), los productores escriben eventos en Kafka. Los consumidores los leen cuando están listos. Kafka almacena eventos durante un periodo configurable, de modo que los sistemas pueden recuperarse de interrupciones e incluso reprocesar el historial.

Algunos términos que verás

  • Evento / Mensaje: Un registro de algo que sucedió (por ejemplo, “OrderPlaced” o “PaymentFailed”). Los usuarios de Kafka suelen decir “mensaje”, pero “evento” enfatiza que representa un cambio del mundo real.
  • Flujo: Un flujo continuo de eventos a lo largo del tiempo.
  • Log: Kafka organiza eventos como un registro solo-append—los nuevos eventos se añaden al final y los lectores avanzan a su propio ritmo.

Para quién es esta guía (y qué aprenderás)

Esta guía es para ingenieros orientados al producto, personal de datos y líderes técnicos que quieren un modelo mental práctico de Kafka.

Aprenderás los bloques básicos (productores, consumidores, topics, brokers), cómo Kafka escala con particiones, cómo almacena y reprocesa eventos, y dónde encaja en la arquitectura dirigida por eventos. También cubriremos casos de uso comunes, garantías de entrega, fundamentos de seguridad, planificación operativa y cuándo Kafka es (o no es) la herramienta correcta.

Conceptos centrales: productores, consumidores, topics, brokers

Kafka es más fácil de entender como un log de eventos compartido: las aplicaciones escriben eventos en él y otras aplicaciones leen esos eventos después—a menudo en tiempo real, a veces horas o días después.

Productores y consumidores

Productores son los escritores. Un productor puede publicar un evento como “order placed”, “payment confirmed” o “temperature reading”. Los productores no envían eventos directamente a aplicaciones específicas—los envían a Kafka.

Consumidores son los lectores. Un consumidor puede alimentar un panel de control, activar un flujo de envío o cargar datos en analítica. Los consumidores deciden qué hacer con los eventos y pueden leer a su propio ritmo.

Topics: organizar eventos

Los eventos en Kafka se agrupan en topics, que son básicamente categorías con nombre. Por ejemplo:

  • orders para eventos relacionados con pedidos
  • payments para eventos de pagos
  • inventory para cambios de stock

Un topic se convierte en la secuencia “fuente de la verdad” para ese tipo de evento, lo que facilita que varios equipos reutilicen los mismos datos sin construir integraciones puntuales.

Brokers y clústeres

Un broker es un servidor Kafka que almacena eventos y se los sirve a los consumidores. En la práctica, Kafka funciona como un clúster (múltiples brokers colaborando) para manejar más tráfico y seguir operativo incluso si una máquina falla.

Grupos de consumidores: escalar lectores sin duplicar trabajo

Los consumidores suelen ejecutarse en un grupo de consumidores. Kafka reparte la lectura entre el grupo, de modo que puedes añadir más instancias consumidoras para escalar el procesamiento—sin que cada instancia haga el mismo trabajo.

Cómo los topics y las particiones hacen que Kafka escale

Kafka escala dividiendo el trabajo en topics (flujos de eventos relacionados) y luego dividiendo cada topic en particiones (porciones más pequeñas e independientes de ese flujo).

Particiones = paralelismo y rendimiento

Un topic con una partición solo puede ser leído por un consumidor a la vez dentro de un grupo de consumidores. Añade más particiones y puedes añadir más consumidores para procesar eventos en paralelo. Así Kafka soporta flujos de eventos de alto volumen y canalizaciones de datos en tiempo real sin convertir cada sistema en un cuello de botella.

Las particiones también ayudan a distribuir la carga entre brokers. En lugar de que una máquina gestione todas las escrituras y lecturas de un topic, varios brokers pueden alojar diferentes particiones y compartir el tráfico.

Orden: lo que Kafka garantiza (y lo que no)

Kafka garantiza orden dentro de una única partición. Si los eventos A, B y C se escriben en la misma partición en ese orden, los consumidores los leerán A → B → C.

No se garantiza el orden entre particiones. Si necesitas orden estricto para una entidad concreta (como un cliente o un pedido), normalmente te aseguras de que todos los eventos de esa entidad vayan a la misma partición.

Las claves deciden a dónde van los eventos

Cuando los productores envían un evento, pueden incluir una clave (por ejemplo, order_id). Kafka usa la clave para enrutar de forma consistente eventos relacionados a la misma partición. Eso te da un orden predecible para esa clave mientras el topic en su conjunto escala entre muchas particiones.

Réplicas mantienen los datos disponibles

Cada partición puede ser replicada en otros brokers. Si un broker falla, otro broker con una réplica puede tomar el relevo. La replicación es una razón importante por la que Kafka es confiable para mensajería pub-sub crítica y sistemas dirigidos por eventos: mejora la disponibilidad y soporta tolerancia a fallos sin que cada aplicación tenga que construir su propia lógica de failover.

Almacenamiento, retención y reprocesado de eventos

Una idea clave en Apache Kafka es que los eventos no solo se transmiten y se olvidan. Se escriben en disco en un registro ordenado, por lo que los consumidores pueden leerlos ahora o más tarde. Esto hace a Kafka útil no solo para mover datos, sino también para mantener un historial duradero de lo que ocurrió.

Los eventos se persisten, no solo están “en tránsito”

Cuando un productor envía un evento a un topic, Kafka lo añade al almacenamiento del broker. Los consumidores leen desde ese registro almacenado a su propio ritmo. Si un consumidor está caído durante una hora, los eventos siguen existiendo y pueden ponerse al día cuando se recupere.

Retención: cuánto tiempo guarda Kafka los datos

Kafka mantiene eventos según políticas de retención:

  • Retención por tiempo: conservar eventos durante un periodo (por ejemplo, 7 días).
  • Retención por tamaño: conservar eventos hasta que el log alcance un tamaño configurado y luego eliminar los datos más antiguos.

La retención se configura por topic, lo que te permite tratar los topics de “pista de auditoría” de forma diferente a los topics de telemetría de alto volumen.

Compactación: conservar el valor más reciente por clave

Algunos topics son más bien un changelog que un archivo histórico—por ejemplo, “configuración actual del cliente”. La compactación de logs conserva al menos el evento más reciente por clave, mientras que los registros antiguos que han sido sustituidos pueden eliminarse. Así obtienes una fuente de verdad duradera del estado más reciente sin crecimiento descontrolado.

Reproducir eventos: reconstruir estado y recuperarse de errores

Porque los eventos permanecen almacenados, puedes reproducirlos para reconstruir estado:

  • Reconstruir un índice de búsqueda o una vista materializada desde cero
  • Recuperar un servicio después de una mala implementación re-procesando desde un punto anterior
  • Incorporar un nuevo consumidor y permitirle leer datos históricos

En la práctica, la reproducción se controla por dónde un consumidor “comienza a leer” (su offset), lo que da a los equipos una red de seguridad poderosa cuando los sistemas evolucionan.

Fundamentos de fiabilidad y tolerancia a fallos

Kafka está construido para mantener el flujo de datos incluso cuando partes del sistema fallan. Lo hace con replicación, reglas claras sobre quién está “a cargo” de cada partición y confirmaciones de escritura configurables.

Replicación: líder y followers (alto nivel)

Cada partición de un topic tiene un broker líder y una o más réplicas seguidores en otros brokers. Productores y consumidores hablan con el líder de esa partición.

Los seguidores copian continuamente los datos del líder. Si el líder cae, Kafka puede promover a un seguidor actualizado para que sea el nuevo líder y así la partición permanezca disponible.

Qué sucede durante una falla de broker (breve)

Si un broker falla, las particiones que hospedaba como líderes quedan indisponibles por un momento. El controlador de Kafka (coordinación interna) detecta la falla y dispara una elección de líder para esas particiones.

Si al menos una réplica seguidora está suficientemente actualizada, puede tomar el puesto de líder y los clientes reanudarán la producción/consumo. Si no hay réplicas en sincronía, Kafka puede pausar las escrituras (según tu configuración) para evitar perder datos que ya se habían confirmado.

Durabilidad: acknowledgments y factor de replicación

Dos parámetros importantes moldean la durabilidad:

  • Factor de replicación: cuántas copias de cada partición existen (por ejemplo, 3 copias en 3 brokers).
  • Acknowledgments (acks): cuándo el productor considera una escritura como exitosa.

A nivel conceptual:

  • acks=0: el productor no espera—rápido, pero puedes perder mensajes.
  • acks=1: el líder confirma la escritura—mejor, pero si el líder falla antes de que los seguidores copien los datos, puedes perder mensajes recientes.
  • acks=all (o -1): el líder espera a que las réplicas “en sincronía” confirmen—más seguro, generalmente algo más lento.

Para reducir duplicados durante reintentos, los equipos suelen combinar acks más seguros con productores idempotentes y un manejo sólido en el consumidor (cubierto más adelante).

Trade-off latencia vs seguridad

Mayor seguridad típicamente implica esperar más confirmaciones y mantener más réplicas en sincronía, lo que puede añadir latencia y reducir el rendimiento máximo.

Configuraciones de baja latencia pueden ser aceptables para telemetría o clickstream donde alguna pérdida ocasional es tolerable, pero pagos, inventario y registros de auditoría suelen justificar la seguridad extra.

El papel de Kafka en la arquitectura dirigida por eventos

Crea una herramienta de reproducción
Levanta un servicio simple que reproduzca eventos para reconstruir vistas o recuperarte de errores.

La arquitectura dirigida por eventos (EDA) es una forma de construir sistemas donde las cosas que suceden en el negocio—un pedido realizado, un pago confirmado, un paquete enviado—se representan como eventos a los que otras partes del sistema pueden reaccionar.

Publicar eventos, reaccionar con consumidores

Kafka a menudo se sitúa en el centro de la EDA como el “flujo de eventos” compartido. En lugar de que el Servicio A llame al Servicio B directamente, el Servicio A publica un evento (por ejemplo, OrderCreated) en un topic de Kafka. Cualquier número de servicios puede consumir ese evento y actuar—enviar un correo, reservar inventario, iniciar controles de fraude—sin que el Servicio A tenga que conocerlos.

Acoplamiento débil (menos dependencias directas)

Porque los servicios se comunican mediante eventos, no tienen que coordinar APIs request/response para cada interacción. Esto reduce dependencias fuertes entre equipos y facilita añadir nuevas funcionalidades: puedes introducir un nuevo consumidor para un evento existente sin cambiar al productor.

Flujos asíncronos y resistencia a picos

La EDA es naturalmente asíncrona: los productores escriben eventos rápidamente y los consumidores los procesan a su propio ritmo. Durante picos de tráfico, Kafka ayuda a amortiguar la oleada para que los sistemas downstream no se colapsen de inmediato. Los consumidores pueden escalar para ponerse al día, y si un consumidor cae temporalmente, puede reanudar desde donde quedó.

Un modelo mental práctico

Piensa en Kafka como el “feed de actividad” del sistema. Los productores publican hechos; los consumidores se suscriben a los hechos que les importan. Ese patrón permite canalizaciones de datos en tiempo real y flujos dirigidos por eventos manteniendo los servicios más simples e independientes.

Casos de uso comunes de Kafka en sistemas modernos

Kafka suele aparecer donde los equipos necesitan mover muchos “hechos que ocurrieron” (eventos) entre sistemas—rápido, con fiabilidad y de modo que múltiples consumidores puedan reutilizarlos.

Seguimiento de actividad y registros de auditoría

Las aplicaciones suelen necesitar un historial solo-append: inicios de sesión, cambios de permisos, actualizaciones de registros o acciones administrativas. Kafka funciona bien como un flujo central de estos eventos, de modo que herramientas de seguridad, informes y exportaciones de cumplimiento puedan leer la misma fuente sin añadir carga a la base de datos de producción. Como los eventos se retienen un periodo, también puedes reproducirlos para reconstruir una vista de auditoría tras un bug o un cambio de esquema.

Comunicación de microservicios vía eventos

En lugar de que los servicios se llamen directamente, pueden publicar eventos como “order created” o “payment received”. Otros servicios se suscriben y reaccionan a su tiempo. Esto reduce el acoplamiento, ayuda a que los sistemas sigan funcionando durante fallas parciales y facilita añadir capacidades (por ejemplo, controles de fraude) consumiendo el flujo de eventos existente.

Canalizaciones de datos hacia analítica y almacenes

Kafka es una columna vertebral común para mover datos de sistemas operacionales a plataformas analíticas. Los equipos pueden transmitir cambios desde bases de datos de aplicaciones y entregarlos a un data warehouse o un data lake con baja latencia, manteniendo la aplicación de producción separada de consultas analíticas pesadas.

IoT y telemetría con tráfico intermitente

Sensores, dispositivos y telemetría de aplicaciones suelen llegar en picos. Kafka puede absorber los estallidos, bufferizarlos de forma segura y permitir que el procesamiento downstream se ponga al día—útil para monitorización, alertas y análisis a largo plazo.

Ecosistema de Kafka: Connect, Streams y herramientas

Kafka es más que brokers y topics. La mayoría de equipos dependen de herramientas compañeras que hacen a Kafka práctico para movimiento de datos diario, procesamiento en streaming y operaciones.

Kafka Connect: mover datos sin código personalizado

Kafka Connect es el marco de integración de Kafka para meter datos en Kafka (sources) y sacarlos de Kafka (sinks). En lugar de construir y mantener pipelines puntuales, ejecutas Connect y configuras conectores.

Ejemplos comunes incluyen extraer cambios de bases de datos, ingerir eventos SaaS o entregar datos de Kafka a un almacén o almacenamiento de objetos. Connect también estandariza preocupaciones operativas como reintentos, offsets y paralelismo.

Kafka Streams: procesamiento en tiempo real dentro de tus apps

Si Connect es para integración, Kafka Streams es para computación. Es una librería que añades a tu aplicación para transformar flujos en tiempo real—filtrar eventos, enriquecerlos, unir flujos y construir agregados (por ejemplo, “pedidos por minuto”).

Como las apps Streams leen de topics y escriben de nuevo en topics, encajan naturalmente en sistemas dirigidos por eventos y pueden escalar añadiendo más instancias.

Gestión de esquemas: mantener eventos consistentes

A medida que varios equipos publican eventos, la consistencia importa. La gestión de esquemas (a menudo vía un schema registry) define qué campos debe tener un evento y cómo evolucionan con el tiempo. Eso ayuda a evitar roturas como que un productor renombre un campo del que depende un consumidor.

Herramientas: monitorizar lo que importa

Kafka es operacionalmente sensible, así que la monitorización básica es esencial:

  • Consumer lag: ¿se están quedando atrás los consumidores?
  • Throughput: ¿cuántos eventos por segundo fluyen?
  • Errores: fetchs fallidos, errores de produce, fallos de tareas de conectores

La mayoría de equipos también usan UIs de gestión y automatización para despliegues, configuración de topics y políticas de control de acceso (ver /blog/kafka-security-governance).

Garantías de entrega y patrones de procesamiento

Crea una demo de Kafka en poco tiempo
Convierte tu idea de Kafka en una app productora y consumidora funcional con una sola creación guiada por chat.

Kafka se describe a menudo como “log duradero + consumidores”, pero lo que la mayoría de equipos realmente quieren saber es: ¿procesaré cada evento una vez y qué pasa cuando algo falla? Kafka te da bloques de construcción y tú eliges los trade-offs.

Garantías de entrega (alto nivel)

Como máximo una vez (at-most-once) significa que puedes perder eventos, pero no procesarás duplicados. Esto ocurre si un consumidor confirma su posición antes y luego falla antes de completar el trabajo.

Al menos una vez (at-least-once) significa que no perderás eventos, pero pueden aparecer duplicados (por ejemplo, el consumidor procesa un evento, falla y luego lo reprocesa al reiniciar). Este es el patrón por defecto más común.

Exactamente una vez busca evitar tanto pérdidas como duplicados de extremo a extremo. En Kafka, esto suele implicar productores transaccionales y procesamiento compatible (a menudo vía Kafka Streams). Es poderoso, pero más restrictivo y requiere configuración cuidadosa.

Idempotencia y deduplicación

En la práctica, muchos sistemas aceptan at-least-once y añaden salvaguardas:

  • Escrituras idempotentes: hacer que el paso de “aplicar evento” sea seguro de repetir (por ejemplo, upserts, actualizaciones condicionales, claves únicas).
  • Deduplicación: almacenar un id de evento (o clave de negocio) e ignorar repeticiones dentro de una ventana.

Offsets de consumidor: tu “marcador”

Un offset de consumidor es la posición del último registro procesado en una partición. Cuando confirmas offsets, estás diciendo “he terminado hasta aquí”. Confirmar muy pronto y arriesgas pérdida; confirmar muy tarde y aumentas duplicados tras fallos.

Reintentos y mensajes tóxicos

Los reintentos deben estar acotados y ser visibles. Un patrón común es:

  1. reintentar con backoff para errores transitorios,
  2. luego enviar el registro fallido a un topic de dead-letter para inspección y re-reproducción.

Esto evita que un único “mensaje venenoso” bloquee a todo un grupo de consumidores y al mismo tiempo preserva los datos para correcciones posteriores.

Consideraciones de seguridad y gobernanza

Kafka suele transportar eventos críticos del negocio (pedidos, pagos, actividad de usuarios). Eso hace que la seguridad y la gobernanza formen parte del diseño, no algo añadido al final.

Autenticación y autorización

La autenticación responde “¿quién eres?” La autorización responde “¿qué puedes hacer?”. En Kafka, la autenticación se hace comúnmente con SASL (por ejemplo, SCRAM o Kerberos), mientras que la autorización se aplica con ACLs en niveles de topic, grupo de consumidores y clúster.

Un patrón práctico es privilegio mínimo: los productores solo pueden escribir en los topics que poseen y los consumidores solo pueden leer los topics que necesitan. Esto reduce la exposición accidental de datos y limita el radio de impacto si credenciales se filtran.

Cifrado en tránsito (TLS)

TLS cifra los datos mientras se mueven entre apps, brokers y herramientas. Sin TLS, los eventos pueden ser interceptados en redes internas, no solo en Internet público. TLS también ayuda a prevenir ataques “man-in-the-middle” validando identidades de brokers.

Kafka multi-tenant y convenciones de nombres

Cuando varios equipos comparten un clúster, las reglas importan. Convenciones claras de nombres de topics (por ejemplo, <equipo>.<dominio>.<evento>.<versión>) hacen obvia la propiedad y ayudan a que las herramientas apliquen políticas consistentemente.

Combina el nombrado con cuotas y plantillas de ACL para que una carga ruidosa no deprima a otras y para que nuevos servicios empiecen con valores seguros por defecto.

Gobernanza de datos: PII, retención y alineación

Trata a Kafka como sistema de registro de historial solo cuando lo pretendas. Si los eventos incluyen PII, usa minimización de datos (envía IDs en vez de perfiles completos), considera cifrado a nivel de campo y documenta qué topics son sensibles.

Las políticas de retención deben coincidir con requisitos legales y de negocio. Si la política dice “eliminar después de 30 días”, no guardes 6 meses “por si acaso”. Revisiones y auditorías periódicas mantienen las configuraciones alineadas conforme los sistemas evolucionan.

Operar Kafka: qué deben planear los equipos

Despliega tu primer pipeline
Pasa de la idea a un prototipo desplegado para que tus compañeros prueben los flujos de eventos de extremo a extremo.

Ejecutar Apache Kafka no es solo “instalar y olvidar”. Se comporta más como una utilidad compartida: muchos equipos dependen de ella y pequeños errores pueden propagarse a aplicaciones downstream.

Fundamentos de planificación de capacidad

La capacidad de Kafka es mayormente un problema de cálculo que revisas regularmente. Las palancas más grandes son particiones (paralelismo), rendimiento (MB/s de entrada y salida) y crecimiento de almacenamiento (cuánto tiempo retienes datos).

Si el tráfico se duplica, puede que necesites más particiones para repartir la carga entre brokers, más disco para mantener la retención y más margen de red para la replicación. Un hábito práctico es estimar la tasa máxima de escritura y multiplicarla por la retención para estimar crecimiento de disco, luego añadir margen para replicación y “éxito inesperado”.

Tareas operativas diarias

Espera trabajo rutinario más allá de mantener servidores activos:

  • Actualizaciones: planifica upgrades rolling, prueba compatibilidad de clientes y programa cambios en horas de menor tráfico.
  • Rebalanceos: los rebalances de grupos de consumidores pueden causar pausas breves; querrás patrones de despliegue seguros y propiedad clara.
  • Respuesta a incidentes: ten playbooks para fallos de broker, discos llenos y productores mal configurados que inundan un topic.

Factores de coste y opciones de despliegue

Los costes vienen de discos, egress de red y del número/tamaño de brokers. Kafka gestionado puede reducir la carga de personal y simplificar upgrades, mientras que alojarlo uno mismo puede ser más barato a escala si tienes operadores experimentados. El intercambio es tiempo de recuperación y carga de on-call.

Qué medir (para no adivinar)

Los equipos suelen monitorizar:

  • Latencia de extremo a extremo (de produce a consume)
  • Consumer lag (qué tan atrasados están los consumidores)
  • Salud del broker (uso de disco, particiones con réplicas sub-replicadas, tasas de error de requests)

Buenos dashboards y alertas convierten a Kafka de una “caja misteriosa” en un servicio entendible.

Cuándo usar Kafka (y cuándo no)

Kafka encaja bien cuando necesitas mover muchos eventos de forma fiable, guardarlos durante un tiempo y permitir que múltiples sistemas reaccionen al mismo flujo de datos a su propio ritmo. Es especialmente útil cuando los datos deben ser reproducibles (para backfills, auditorías o reconstruir un servicio) y cuando esperas añadir más productores/consumidores con el tiempo.

Buenos momentos para elegir Kafka

Kafka suele brillar cuando tienes:

  • Flujos de eventos de alto rendimiento (clicks, pedidos, datos de sensores)
  • Muchos consumidores que necesitan los mismos eventos (analítica, monitorización, fraude, notificaciones)
  • Necesidad de reproducción e historial de larga duración, no solo “entregar una vez y olvidar”
  • Trabajo de integración donde desacoplar equipos y servicios importa

Cuando Kafka puede ser excesivo

Kafka puede ser exagerado si tus necesidades son simples:

  • Una sola cola de bajo volumen entre dos servicios
  • Tareas de corta vida (trabajos en background) donde la reproducción no vale la pena
  • Equipos sin tiempo para operar y monitorizar un sistema distribuido

En estos casos, la sobrecarga operativa (dimensionado del clúster, upgrades, monitorización, on-call) puede superar los beneficios.

Alternativas y complementos

  • RabbitMQ: excelente para colas de trabajo clásicas y patrones de enrutamiento.
  • NATS: mensajería ligera con baja latencia.
  • Servicios pub/sub en la nube: buenos cuando quieres infraestructura gestionada y operaciones más simples.

Kafka también complementa—no reemplaza—bases de datos (sistema de registro), caches (lecturas rápidas) y herramientas de ETL por lotes (transformaciones periódicas grandes).

Lista rápida de decisión

Pregúntate:

  1. ¿Necesitamos múltiples consumidores y reproducción?
  2. ¿El throughput crecerá significativamente?
  3. ¿Necesitamos historial/retención como característica?
  4. ¿Podemos soportar la propiedad operativa (o usar Kafka gestionado)?
  5. ¿Estamos transmitiendo eventos, no solo enviando comandos/tareas?

Si respondes “sí” a la mayoría, Kafka suele ser una elección sensata.

Primeros pasos: una ruta de adopción simple

Kafka encaja mejor cuando necesitas una “fuente de la verdad” compartida para flujos de eventos en tiempo real: muchos productores que generan hechos (pedidos creados, pagos autorizados, inventario cambiado) y muchos consumidores que usan esos hechos para alimentar pipelines, analítica y funcionalidades reactivas.

Paso 1: elige un caso de uso concreto

Empieza con un flujo estrecho y de alto valor—como publicar eventos “OrderPlaced” para servicios downstream (correo, controles de fraude, cumplimiento). Evita convertir a Kafka en una cola general desde el primer día.

Paso 2: define tus eventos y topics

Escribe:

  • Eventos: qué ocurrió, en términos del negocio
  • Topics: dónde viven esos eventos (a menudo un topic por tipo de evento o dominio)
  • Consumidores: qué equipos/servicios necesitan los eventos y por qué

Mantén esquemas iniciales simples y consistentes (timestamps, IDs y un nombre claro de evento). Decide si harás cumplir esquemas desde el principio o evolucionarás con cuidado.

Paso 3: establece propiedad y fundamentos operativos

Kafka funciona cuando alguien se encarga de:

  • Creación de topics y convenciones de nombres
  • Políticas de retención y acceso
  • Responsabilidades de on-call y runbooks

Añade monitorización inmediatamente (consumer lag, salud de brokers, throughput, tasas de error). Si aún no tienes un equipo de plataforma, empieza con una oferta gestionada y límites claros.

Paso 4: construye una canalización “delgada” primero

Produce eventos desde un sistema, consúmelos en un lugar y demuestra el bucle de extremo a extremo. Solo entonces amplia a más consumidores, particiones e integraciones.

Si quieres moverte rápido desde la idea a un servicio dirigido por eventos funcional, herramientas como Koder.ai pueden ayudarte a prototipar la aplicación periférica rápidamente (UI web en React, backend en Go, PostgreSQL) e ir añadiendo productores/consumidores de Kafka mediante un flujo guiado por chat. Es especialmente útil para construir paneles internos y servicios ligeros que consumen topics, con características como modo de planificación, exportación de código fuente, despliegue/alojamiento y snapshots con rollback.

Si estás mapeando esto a un enfoque dirigido por eventos, ve a /blog/event-driven-architecture. Para planificar costes y entornos, consulta /pricing.

Preguntas frecuentes

¿Qué es Apache Kafka en términos sencillos?

Kafka es una plataforma distribuida de transmisión de eventos que almacena eventos en registros duraderos y solo-append.

Los productores escriben eventos en topics, y los consumidores los leen de forma independiente (a menudo en tiempo real, pero también más tarde) porque Kafka conserva los datos durante un período configurado.

¿Cuándo debería un equipo elegir Kafka en vez de llamadas directas entre servicios?

Usa Kafka cuando varios sistemas necesiten el mismo flujo de eventos, quieras acoplamiento suelto y puedas necesitar reproducir el historial.

Es especialmente útil para:

  • Microservicios dirigidos por eventos (publicar hechos, reaccionar de forma asíncrona)
  • Canalizaciones en tiempo real hacia analítica/almacenes de datos
  • Seguimiento de actividad, registros de auditoría y telemetría con tráfico intermitente
¿Cuál es la diferencia entre un topic y una partición?

Un topic es una categoría con nombre de eventos (como orders o payments).

Una partición es una porción de un topic que permite:

  • Mayor rendimiento (lecturas/escrituras repartidas entre brokers)
  • Consumo paralelo (varios consumidores en un grupo)

Kafka garantiza el orden solo dentro de una única partición.

¿Cómo afectan las claves al orden y al escalado?

Kafka usa la clave del registro (por ejemplo, order_id) para enrutar de forma consistente eventos relacionados a la misma partición.

Regla práctica: si necesitas orden por entidad (todos los eventos de un pedido/cliente en secuencia), elige una clave que represente esa entidad para que los eventos caigan en la misma partición.

¿Qué es un grupo de consumidores y por qué importa?

Un grupo de consumidores es un conjunto de instancias consumidoras que comparten el trabajo de un topic.

Dentro de un grupo:

  • Cada partición es procesada por como máximo una instancia a la vez
  • Añadir más instancias incrementa el paralelismo hasta el número de particiones

Si dos aplicaciones distintas deben recibir cada evento, deben usar grupos de consumidores diferentes.

¿Cuánto tiempo guarda Kafka los datos y para qué se usa la retención?

Kafka conserva eventos en disco según políticas de retención para que los consumidores puedan ponerse al día tras una caída o reprocesar el historial.

Tipos comunes de retención:

  • Basada en tiempo (mantener N días)
  • Basada en tamaño (mantener hasta N GB)

La retención se configura por topic, así que streams de auditoría pueden guardarse más tiempo que telemetría de alto volumen.

¿Qué es la compactación de logs y cuándo es mejor que la retención normal?

La compactación de logs mantiene al menos el registro más reciente por clave, eliminando con el tiempo registros antiguos que han sido reemplazados.

Es útil para streams de “estado actual” (como configuraciones o perfiles) donde te interesa el último valor por clave y no cada cambio histórico, manteniendo a la vez una fuente de verdad duradera.

¿Kafka entrega eventos exactamente una vez?

El patrón más común en Kafka es at-least-once: no perderás eventos, pero pueden aparecer duplicados.

Para manejarlo de forma segura:

  • Haz que los consumidores sean idempotentes (aplicar el mismo evento varias veces sea seguro)
  • Usa IDs de evento únicos o claves de negocio para deduplicación cuando haga falta
  • Confirma offsets después de completar el trabajo para reducir el riesgo de pérdida
¿Qué son los offsets de consumidor y cómo encajan los reintentos y los dead-letter topics?

Los offsets son el “marcador” de un consumidor por partición.

Si confirmas offsets demasiado pronto, puedes perder trabajo ante un fallo; si lo haces demasiado tarde, aumentarás duplicados tras reinicios.

Un patrón operativo común es reintentos acotados con backoff y, en caso de fallo persistente, publicar el registro fallido en un topic de dead-letter para que no paralice al grupo entero.

¿Qué son Kafka Connect y Kafka Streams y cuándo debo usar cada uno?

Kafka Connect mueve datos hacia/dentro de Kafka usando conectores (fuentes y sinks) en vez de código personalizado.

Kafka Streams es una librería para transformar y agregar flujos en tiempo real dentro de tus aplicaciones (filtrar, unir, enriquecer, agregar), leyendo de topics y escribiendo de nuevo en topics.

En resumen: Connect es para integración; Streams es para computación en streaming.

Related posts