Event Sourcing en C#: Guía Completa

Introducción: Eventos como fuente de verdad

Event Sourcing almacena el historial de cambios como eventos inmutables. El estado actual se reconstruye reproduciendo esos eventos.

Esto aporta trazabilidad total, capacidad de auditoría y posibilidad de reconstruir el sistema en cualquier punto del tiempo.

El costo es mayor complejidad en consultas y la necesidad de proyecciones para lecturas rápidas.

Event Sourcing
Prompt: Event stream timeline, clean minimal style.

1. Naturaleza: Huellas en la nieve

Las huellas registran cada paso. Para entender el trayecto, se observa la secuencia completa.

Event Sourcing hace lo mismo con eventos: cada cambio deja una huella permanente.

Huellas
Prompt: Footprints in snow timeline, soft illustration.

2. Mundo Real: Auditoría financiera

Un banco no guarda solo el saldo; registra cada transacción.

Si hay disputa, el historial permite reconstruir exactamente qué ocurrió y cuándo.

Auditoría
Prompt: Financial audit ledger, clean flat style.

3. Implementación en C#: Código Paso a Paso

public record Evento(string Tipo, string Data);

public class Cuenta
{
    private decimal _saldo;
    public void Apply(Evento e) { /* actualizar estado */ }
}

// Al persistir, guardar eventos en un stream

Las lecturas suelen usar proyecciones materializadas para evitar reconstrucciones costosas.

La versión de eventos es crítica: cambios en el esquema requieren migraciones controladas.

4. Event Sourcing vs Estado actual

El estado actual guarda solo el “resultado”; Event Sourcing guarda el “proceso”.

Si necesitas auditoría y reconstrucción, Event Sourcing es ideal. Si no, puede ser excesivo.

5. Diagrama UML

UML Event Sourcing
Prompt: UML diagram of event sourcing, clean vector layout.
Flujo Event Sourcing
Prompt: Event sourcing flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Event Sourcing

  • Si no necesitas auditoría ni trazabilidad completa.
  • Si el equipo no tiene experiencia con proyecciones y streams.
  • Si el dominio es simple y CRUD basta.

💪 Ejercicio

Modela eventos para una cuenta bancaria y crea una proyección de saldo.

Conclusión

Event Sourcing ofrece trazabilidad total y capacidad de reconstrucción.

Úsalo cuando la auditoría, el historial y la evolución del dominio son esenciales.