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
| Broker | Modelo | Ordenamiento | Retención | Caso de uso |
|---|---|---|---|---|
| AWS SQS | Cola (point-to-point) | FIFO opcional | 14 días máx | Desacoplamiento simple entre servicios |
| AWS SNS | Pub/sub (fan-out) | No garantizado | Sin retención | Notificaciones a múltiples suscriptores |
| AWS EventBridge | Bus de eventos | Por partición | 24h replay | Routing basado en contenido, integración SaaS |
| Apache Kafka | Log distribuido | Por partición | Configurable | Streaming de alto volumen, event sourcing |
| RabbitMQ | Cola con exchanges | Por cola | Configurable | Routing 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
- What do you mean by Event-Driven? — Martin Fowler, 2017.
- AsyncAPI — AsyncAPI Initiative, 2024. Especificación para APIs asíncronas y event-driven.
- EventBridge Documentation — AWS, 2024. Servicio de bus de eventos serverless.