Actualizado: 2026-07-07

Apache Kafka[1] ha pasado de ser "el sistema de mensajería en empresas grandes" a ser el backbone de eventos de las arquitecturas modernas. Ha cruzado varios umbrales importantes, entre ellos la salida completa de ZooKeeper con KRaft[2], que simplifican la operación y abren nuevos patrones de uso.

Puntos clave

  • KRaft (Kafka Raft) integra el consenso dentro de Kafka y elimina la dependencia de ZooKeeper: un solo sistema a operar, arranque más rápido y soporte para millones de particiones por clúster.

  • Los tres patrones más consolidados son CDC con Debezium, event sourcing y stream processing con Kafka Streams, ksqlDB o Flink.

  • Redpanda (C++, sin JVM ni ZooKeeper) y Pulsar (storage/compute separados) son alternativas reales con momentos distintos.

  • Schema evolution, exactly-once cross-topic y consumer rebalancing siguen siendo las áreas más problemáticas.

  • La pregunta para proyectos nuevos no es "¿Kafka o no?" sino "¿Kafka, Pulsar, Redpanda o cloud-gestionado?".

KRaft: adiós a ZooKeeper

Durante más de una década, Kafka dependía de ZooKeeper[3] para coordinar el clúster, gestionar metadata y elegir líderes. Esto significaba dos clústeres para operar, dos tipos de fallos a entender y dos sistemas de backup.

KRaft (Kafka Raft) integra el consenso dentro de Kafka. Las ventajas son:

  • Un solo sistema a operar. Un clúster Kafka es, finalmente, un clúster Kafka.

  • Startup más rápido. Sin sincronización con ZooKeeper al arrancar.

  • Metadata escalable. Kafka en modo KRaft soporta millones de particiones por clúster, frente a ~200k con ZooKeeper.

  • Menor huella. Un rol menos significa menos memoria, menos nodos y menos configuración.

En Kafka 3.5 (junio), KRaft es GA para nuevos clústeres. Para clústeres existentes en ZooKeeper, la migración in-place está en beta: aún no recomendada para producción crítica, pero la dirección es clara.

Patrones maduros de uso

Kafka se usa bien en varios patrones distintos. Los más consolidados son:

Change Data Capture (CDC)

Capturar cambios en bases de datos y publicarlos como eventos. Debezium[4] es el estándar de facto, con conectores para PostgreSQL, MySQL, MongoDB, Oracle y SQL Server.

Un patrón típico: replicar tablas de un monolito a servicios nuevos (dual-write pattern), habilitando migración incremental sin cambiar el monolito. La base de datos sigue siendo la fuente de verdad; Kafka distribuye sus cambios.

Event sourcing

Almacenar el historial completo de cambios como eventos inmutables. Cualquier consumidor puede replicar el estado partiendo de los eventos. Patrón poderoso pero exigente: requiere disciplina en el diseño de eventos y en la evolución del schema.

Funciona bien en dominios con trazabilidad obligatoria, como auditoría financiera o compliance. Menos adecuado en CRUD general donde el coste cognitivo no se recupera.

Stream processing

Procesamiento continuo sobre flujos con Kafka Streams[5], ksqlDB[6] o Apache Flink[7]. Casos de uso típicos: detección de fraude en tiempo real, enriquecimiento de eventos con datos de referencia, agregaciones continuas para dashboards.

Flink gana cuando hay estado complejo o ventanas temporales sofisticadas. Kafka Streams encaja mejor cuando el pipeline vive "dentro" de Kafka y no se quiere un clúster adicional.

Diagrama de arquitectura de un pipeline de CDC con Debezium, Kafka y múltiples consumidores de microserviciosDiagrama de arquitectura de un pipeline de CDC con Debezium, Kafka y múltiples consumidores de microservicios

Alternativas que compiten

Tres proyectos que merecen conocerse:

  • Apache Pulsar[8]: arquitectura storage/compute separada, multi-tenancy nativo, geo-replicación. Gana en operación a gran escala, pero ecosistema más pequeño.

  • Redpanda[9]: reescritura en C++ del protocolo Kafka, sin JVM ni ZooKeeper. Afirma ~10x menor latencia con ~1/6 de hardware. Compatible con clientes Kafka existentes.

  • Confluent Cloud[10] / AWS MSK[11]: Kafka gestionado para quien quiere pagar por no operar.

Elegir depende del contexto: para greenfield con requisitos de latencia, Redpanda es atractivo. Para ecosistema maduro y herramientas amplias, Apache Kafka sigue ganando. Para equipos sin cultura operativa de infraestructura, el cloud gestionado.

Qué sigue siendo difícil

Cuatro áreas donde Kafka todavía no ha resuelto bien:

  • Schema evolution. Con Avro + Schema Registry funciona, pero los cambios incompatibles siguen requiriendo coordinación humana cuidadosa.

  • Exactly-once semantics cross-topic. Los transactional producers funcionan, pero el rendimiento baja significativamente. Muchos equipos aceptan at-least-once + idempotencia en consumidores.

  • Consumer rebalancing. En topics con muchas particiones y consumers dinámicos, los rebalances pueden tardar segundos o decenas de segundos.

  • Retención fina. Retener datos per-tenant o per-evento es complejo con las políticas de retención de Kafka.

Comparativa de arquitecturas de Kafka (monolítico), Pulsar (storage/compute separados) y Redpanda (C++ nativo)Comparativa de arquitecturas de Kafka (monolítico), Pulsar (storage/compute separados) y Redpanda (C++ nativo)

Ver también el análisis de RabbitMQ vs Kafka: decidir qué broker encaja con cada caso sigue siendo una de las decisiones arquitectónicas más importantes. Para la capa de observabilidad sobre Kafka, OpenTelemetry y el stack Grafana son los complementos naturales.

Conclusión

Kafka es infraestructura madura para streaming de eventos a escala empresarial. Con KRaft se simplifica operativamente; con el ecosistema de stream processing consolidado, los patrones de uso están bien documentados. Para proyectos nuevos, la pregunta ya no es "¿Kafka o no?" sino "¿Kafka, Pulsar, Redpanda o cloud-gestionado?". Cada opción tiene su momento.

Versión en inglés: Kafka in 2023: Event Streaming in the Enterprise.

Fuentes:

  1. Documentación oficial de Apache Kafka: KRaft[2]
  2. Debezium: plataforma de Change Data Capture[4]
  3. Apache Pulsar: documentación oficial[8]
  4. Redpanda: documentación del producto[9]

Fuentes

  1. Apache Kafka
  2. KRaft
  3. ZooKeeper
  4. Debezium
  5. Kafka Streams
  6. ksqlDB
  7. Apache Flink
  8. Apache Pulsar
  9. Redpanda
  10. Confluent Cloud
  11. AWS MSK