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.

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.

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.

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

Prompt: UML diagram of event sourcing, clean vector layout.

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.