Event Sourcing
Patrón donde el estado de la aplicación se deriva de una secuencia inmutable de eventos, proporcionando auditoría completa y la capacidad de reconstruir el estado en cualquier punto del tiempo.
seed#event-sourcing#events#audit#immutable#patterns#architecture
¿Qué es?
Event sourcing almacena el estado como una secuencia de eventos inmutables en lugar de solo el estado actual. Para conocer el estado actual, se reproducen todos los eventos desde el inicio. Cada evento representa algo que ocurrió y no puede modificarse.
Estado tradicional vs Event Sourcing
| Tradicional | Event Sourcing |
|---|---|
| Almacena estado actual | Almacena eventos |
| UPDATE sobrescribe | Append-only |
| Sin historial | Historial completo |
| Un modelo | Múltiples proyecciones |
Ejemplo
Evento 1: CuentaCreada { id: 123, titular: "Ana" }
Evento 2: DepósitoRealizado { id: 123, monto: 1000 }
Evento 3: RetiroRealizado { id: 123, monto: 200 }
Estado actual: { id: 123, titular: "Ana", saldo: 800 }
Beneficios
- Auditoría completa e inmutable
- Reconstruir estado en cualquier punto del tiempo
- Múltiples proyecciones de los mismos eventos
- Debugging: reproducir exactamente qué pasó
Desafíos
- Evolución de schemas de eventos
- Performance con muchos eventos (snapshots)
- Complejidad conceptual
¿Por qué importa?
Event sourcing almacena cada cambio de estado como un evento inmutable, proporcionando una auditoría completa y la capacidad de reconstruir el estado en cualquier punto del tiempo. Es especialmente valioso en dominios financieros, legales y de compliance donde la trazabilidad es obligatoria.
Referencias
- Event Sourcing — Martin Fowler.
- Event Store — Event Store, 2024. Base de datos diseñada para event sourcing.
- Event Sourcing Pattern — Azure — Microsoft, 2024. Guía de implementación del patrón.