Osohub
ES
Arquitecturas orientadas a eventos

Arquitecturas orientadas a eventos

En esta entrada vamos a ver cómo te pueden ayudar las arquitecturas orientadas a eventos. Este artículo está escrito desde nuestra experiencia trabajando con multinacionales que atienden a cientos de miles de potenciales clientes a la vez creando por día millones de eventos.

Introducción: ¿Qué es un evento?

Lo primero es definir lo básico. Un evento es un hecho relevante que ocurre en un sistema o negocio y que puede ser aprovechado por otros sistemas para actuar de
forma automática.

Ejemplos:

  • En una tienda, cuando un cliente paga, se produce un evento de "compra realizada" o múltiples eventos de "modificación de inventario".
  • En un banco, una retirada de dinero es un evento.
  • En logística, cuando un paquete cambia de estado — por ejemplo cuando un repartidor coge el paquete y lo mete en la furgoneta — se produce un evento.

Conceptos clave

  • Productor (Producer): Es quien genera el evento y lo publica en un sistema intermedio. Ejemplo: el repartidor al escanear un paquete con su teléfono y
    meterlo en la furgoneta genera el evento "mercancía en reparto".
  • Consumidor (Consumer): Es quien escucha o recibe el evento y ejecuta una acción en respuesta. Siguiendo con el ejemplo anterior, un sistema de notificaciones recibe el evento y notifica al cliente por email que su paquete está en reparto.

Beneficios frente a un enfoque tradicional

En un modelo clásico, las tareas se ejecutan en secuencia. Si una se retrasa o falla, todo el proceso se ralentiza.

Con una arquitectura orientada a eventos:

BeneficioDescripción
ParalelismoVarios sistemas reaccionan a la vez a un mismo evento
Menor acoplamientoEl productor no necesita conocer los consumidores
Escalabilidad independienteCada componente crece según su carga
ResilienciaSi un consumidor falla, los demás siguen funcionando
ExtensibilidadSe añaden nuevos consumidores sin tocar el productor

Cómo integrar arquitectura de eventos con sistemas legacy

Uno de los grandes beneficios de trabajar con eventos es que puedes modernizar un sistema antiguo sin tocar su código principal.

Si logras que ese sistema legacy publique eventos cuando realiza ciertas operaciones, cualquier sistema moderno puede suscribirse a ellos y añadir nuevas
funcionalidades:

  • Notificaciones móviles
  • Dashboards en la nube
  • Automatización de procesos

imagen

Esto permite innovar sin rehacerlo todo, sin depender del lenguaje o tecnología original del sistema, reduciendo riesgos y acelerando la modernización.


¿Qué es Kafka?

Apache Kafka es una plataforma distribuida y open source para el manejo de eventos en tiempo real. Fue creada por LinkedIn y hoy es mantenida por la comunidad Apache y empresas como Confluent.

  • Licencia: gratuita y de código abierto

Cómo funciona:

  1. Los productores publican eventos en topics
  2. Kafka almacena estos eventos de forma ordenada y duradera
  3. Los consumidores se suscriben a esos topics y procesan la información

Por qué es tan popular:

  • Altísimo rendimiento y baja latencia — capaz de manejar millones de eventos por segundo
  • Amplia comunidad y soporte: es más fácil encontrar soluciones y documentación
  • Escalable y fiable para grandes volúmenes
  • Ideal para extender sistemas existentes y conectar múltiples aplicaciones

Cuándo usar una arquitectura orientada a eventos (y Kafka)

Casos ideales:

  • Información crítica en tiempo real (saldo bancario, estado de envío, alertas de seguridad)
  • Necesidad de paralelizar acciones y mejorar el rendimiento
  • Escenarios de escalabilidad y resiliencia

Cuándo no es la mejor opción:

  • Procesos donde no importa la inmediatez (informes analíticos que se actualizan cada 30 minutos o una vez al día)
  • Cuando la complejidad añadida de eventos no aporta un valor significativo frente a un proceso batch

Kafka Streams vs Kafka normal

Aunque Kafka Streams ofrece funcionalidades avanzadas (joins, procesamiento con estado), nuestra experiencia ha sido que:

  • La documentación y ejemplos son menos abundantes
  • La curva de aprendizaje es mayor
  • Kafka normal es más estable y sencillo de operar en entornos de alta carga

Por eso, en muchos casos, preferimos Kafka básico para mantener simplicidad y fiabilidad.


Conclusión

Las arquitecturas orientadas a eventos no solo permiten mejorar el rendimiento y la resiliencia, sino que también abren la puerta a modernizar sistemas legacy sin reescribirlos.