Conceptos

Arquitectura Orientada a Eventos

Patrón arquitectónico donde los componentes se comunican mediante eventos asíncronos, permitiendo sistemas desacoplados, escalables y reactivos.

seed#event-driven#architecture#async#decoupling#events#messaging

¿Qué es?

La arquitectura orientada a eventos es un patrón donde los componentes producen y consumen eventos de forma asíncrona. Un evento representa algo que ocurrió — un pedido creado, un archivo subido, un usuario registrado. Los productores no saben quién consume sus eventos; los consumidores no saben quién los produce.

Componentes

  • Evento: registro inmutable de algo que ocurrió
  • Productor: componente que emite eventos
  • Consumidor: componente que reacciona a eventos
  • Broker/Bus: infraestructura que enruta eventos

Patrones

  • Event notification: notificar que algo ocurrió (sin datos completos)
  • Event-carried state transfer: el evento contiene todos los datos necesarios
  • Event sourcing: el estado se deriva de la secuencia de eventos
  • CQRS: separar lecturas de escrituras usando eventos

Comparación de brokers

BrokerModeloOrdenamientoRetenciónCaso de uso
AWS SQSCola (point-to-point)FIFO opcional14 días máxDesacoplamiento simple entre servicios
AWS SNSPub/sub (fan-out)No garantizadoSin retenciónNotificaciones a múltiples suscriptores
AWS EventBridgeBus de eventosPor partición24h replayRouting basado en contenido, integración SaaS
Apache KafkaLog distribuidoPor particiónConfigurableStreaming de alto volumen, event sourcing
RabbitMQCola con exchangesPor colaConfigurableRouting complejo, protocolos múltiples

Beneficios

  • Desacoplamiento: productores y consumidores evolucionan independientemente
  • Escalabilidad: agregar consumidores sin modificar productores
  • Resiliencia: fallos aislados, reintentos automáticos
  • Auditabilidad: historial completo de eventos

Desafíos

  • Consistencia eventual (no inmediata)
  • Debugging más complejo (flujos distribuidos)
  • Ordenamiento de eventos
  • Idempotencia en consumidores

¿Por qué importa?

Las arquitecturas event-driven desacoplan servicios en el tiempo y el espacio. Un servicio publica un evento sin saber quién lo consume, lo que permite escalar, modificar y reemplazar componentes de forma independiente. Es el patrón que habilita sistemas verdaderamente modulares.

Referencias

Conceptos