Saltar al contenido

Industria y datos

Arquitecturas orientadas a eventos

Un hecho de negocio se publica una sola vez y cada sistema interesado lo procesa a su ritmo, sin bloquear al resto si uno falla.

Cuando un pedido se confirma, varias cosas deberían pasar casi a la vez: reservar existencias, avisar al almacén, actualizar el portal del cliente y emitir un documento. Encadenarlas con llamadas directas entre aplicaciones funciona hasta que una de ellas tarda o se cae, y entonces todo se detiene. Una arquitectura orientada a eventos publica ese hecho una sola vez y deja que cada sistema interesado lo procese a su ritmo, apoyándose en colas que absorben picos y reintentan cuando algo falla. La clave del diseño no es la herramienta de mensajería, sino responder antes a preguntas incómodas: cuánto retraso es aceptable, qué pasa si un mensaje llega dos veces y quién se entera cuando uno no llega.

Capas · Arquitecturas de eventosIlustración conceptual
  1. Entrada de datos
    • Eventos publicados por aplicaciones
    • Captura de cambios o webhooks
  2. Validación
    • Esquema versionado del evento
    • Identificador único por mensaje
  3. Procesamiento
    • Colas por consumidor
    • Reintentos espaciados e idempotentes
  4. Control humano
    • Revisión de la cola de errores
    • Reproceso manual autorizado
  5. Trazas
    • Traza correlacionada de extremo a extremo
    • Retraso acumulado por cola
  6. Sistemas de salida
    • Sistemas destino actualizados
    • Alertas por mensajes fallidos

Antes y después

Qué cambiaría en la operación

Ejemplo hipotético: una tienda en línea de recambios cuyo pedido confirmado debe llegar al almacén, a facturación y al aviso por correo al cliente.

  1. 01 · Antes

    La tienda llama en cadena a cada sistema al confirmar el pedido; si facturación tarda, el cliente espera y a veces el pedido queda registrado a medias.

  2. 02 · Sistema propuesto

    La tienda publica el evento «pedido confirmado» con un identificador único, y almacén, facturación y avisos lo consumen desde sus colas con reintentos idempotentes.

  3. 03 · Después

    Si facturación se detiene, el pedido sigue avanzando en almacén, los mensajes pendientes esperan en su cola y el equipo de operación ve qué falló y lo reprocesa.

Alcance

Qué resuelve y qué no

Qué puede resolver

  • Desacoplar aplicaciones para que el fallo o la lentitud de una no bloquee a las demás.
  • Sincronizar datos entre sistemas en tiempo útil sin depender de exportaciones nocturnas.
  • Repartir trabajo pesado en colas que procesan a su ritmo y absorben picos de actividad.
  • Dejar un registro de qué eventos ocurrieron, quién los procesó y con qué resultado.

Qué no resuelve

  • No elimina los retrasos: introduce consistencia eventual y hay que decidir qué pantallas y procesos la toleran.
  • No es adecuada para operaciones que exigen una respuesta inmediata y confirmada en la misma transacción.
  • No sustituye a los sistemas de control en tiempo real de planta ni a funciones de seguridad, que tienen requisitos propios.

Escenarios operativos

Cómo funcionaría en la práctica

Ejemplos de lo que se podría diseñar. No describen proyectos realizados.

  1. 01

    Notificaciones a partir de cambios de estado

    Entrada
    Eventos de cambio de estado de pedidos, expedientes u órdenes publicados por la aplicación principal.
    Procesamiento
    Un servicio suscrito filtra los eventos relevantes, consulta las preferencias de cada destinatario y agrupa avisos para no repetirlos.
    Salida
    Correos, mensajes o avisos en aplicación enviados una sola vez por evento, con registro de entrega o de fallo.
  2. 02

    Sincronización entre ERP y aplicaciones satélite

    Entrada
    Altas y modificaciones de clientes, artículos o precios detectadas en el ERP mediante captura de cambios o eventos propios.
    Procesamiento
    Cada cambio se publica con un identificador único; los consumidores lo aplican de forma idempotente, de modo que recibirlo dos veces no duplica nada.
    Salida
    Portal, aplicación de campo y tienda actualizados en poco tiempo, con una cola de errores revisable si algún destino rechaza el cambio.
  3. 03

    Alertas operativas encadenadas

    Entrada
    Eventos de planta o de monitorización, como una parada de línea, una temperatura fuera de rango o un retraso de envío.
    Procesamiento
    Reglas sobre ventanas de tiempo correlacionan eventos relacionados y descartan los transitorios antes de generar una alerta.
    Salida
    Alerta única con el contexto agregado dirigida al responsable de turno, y escalado si nadie la reconoce en el plazo acordado.
  4. 04

    Colas de trabajo para procesos pesados

    Entrada
    Solicitudes de generación de documentos, cálculos o procesamiento de ficheros que llegan de forma irregular.
    Procesamiento
    Las tareas se encolan y varios trabajadores las procesan en paralelo, con reintentos espaciados y un límite tras el cual pasan a revisión.
    Salida
    Resultados disponibles para el usuario cuando están listos, con estado visible de cada tarea y aviso de las que fallan definitivamente.

Integración

Cómo se conecta con lo que ya existe

Se elige el mecanismo de mensajería según volumen, orden y retención necesarios, desde colas gestionadas en la nube hasta brokers de streaming o MQTT en entornos industriales. Cada evento tiene un esquema versionado y documentado. Las aplicaciones que no publican eventos se integran mediante captura de cambios en base de datos, webhooks o sondeo controlado. La observabilidad se diseña desde el inicio para seguir un evento de extremo a extremo.

  • Broker o servicio de colas acorde al volumen y a la retención necesaria
  • Esquemas de eventos versionados y registro de contratos
  • Captura de cambios o webhooks para sistemas que no publican eventos
  • Colas de mensajes fallidos con herramientas de revisión y reproceso
  • Trazas, métricas y alertas por cola, consumidor y retraso acumulado

Modalidades de despliegue que suelen plantearse

Se elige en cada proyecto tras evaluar requisitos y sistemas existentes.

Antes de desarrollar

Datos, validaciones y permisos

  • Tolerancia acordada a retrasos y a fallos para cada flujo: cuánto puede tardar y qué ocurre si no llega.
  • Catálogo de eventos con su significado de negocio, su propietario y su esquema.
  • Identificadores únicos que permitan procesar cada evento de forma idempotente.
  • Política de reintentos, de retención de mensajes y de tratamiento manual de los fallidos.
  • Responsable operativo que vigile colas y alertas y sepa cómo reprocesar.

Supervisión

Riesgos, límites y mantenimiento

  • Sin idempotencia, un reintento puede duplicar pedidos, cobros o avisos; es un requisito, no una mejora opcional.
  • El orden de los eventos no siempre se preserva; los procesos que dependen de él deben diseñarse con eso en cuenta.
  • Los flujos asíncronos son más difíciles de depurar; sin trazas correlacionadas, localizar un fallo puede llevar mucho tiempo.
  • Cambiar un esquema sin versionado rompe a consumidores que nadie recordaba; hace falta gobierno de contratos.

Preguntas frecuentes

¿Cuándo no compensa una arquitectura de eventos?

Cuando hay pocas aplicaciones, poco volumen y los procesos necesitan una respuesta confirmada al momento. En esos casos una integración directa bien diseñada suele ser más sencilla de construir, operar y depurar.

¿Qué pasa si un mensaje se pierde o llega dos veces?

Se diseña para ambos casos: los consumidores ignoran los duplicados gracias a identificadores únicos, y los mensajes que no se pueden procesar se apartan a una cola de errores con aviso, en lugar de desaparecer.

¿Hace falta una plataforma de streaming?

No siempre. Muchas necesidades se cubren con colas gestionadas o con un broker sencillo. Una plataforma de streaming tiene sentido cuando hay que conservar y reprocesar grandes volúmenes de eventos o alimentar muchos consumidores independientes.

Cuéntanos qué procesos deben reaccionar a qué hechos

Cuéntanos qué datos y sistemas intervienen en tu proceso. Estudiaremos qué puede automatizarse, cómo se integraría y qué convendría validar antes de desarrollar. Ver todas las capacidades.

Sin compromiso de aceptación: estudiamos cada caso antes de proponer nada. Cómo tratamos la información que compartes.