Conceptos

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

TradicionalEvent Sourcing
Almacena estado actualAlmacena eventos
UPDATE sobrescribeAppend-only
Sin historialHistorial completo
Un modeloMú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

Conceptos