El documento habla sobre Event Sourcing, una técnica en la que todos los cambios en una aplicación se almacenan como una secuencia de eventos. Explica que el estado actual de una entidad se representa como la suma de todos los eventos pasados, y que solo se agregan eventos sin eliminarlos. También menciona que CQRS y Event Sourcing separan la representación estructural de la representación por eventos, y que los eventos pueden usarse para generar estados actuales o proyecciones y consultas.
1. Cambiando nuestra forma de pensar
Event Sourcing para todos
Germán Küber
Software Architect & Developer
Net-Baires
http://www.germankuber.com.ar/
@GermanKuber
2. Event Sourcing
Garantiza que todos los cambios realizados en la vida de
la aplicación se almacenan como una secuencia de
eventos.
5. Event Sourcing
• Algo que ocurrió en el pasado
• Se representa con lenguaje ubicuo
• Utilizar tiempo pasado no imperativo
• Todos los eventos serán persistidos
• Solo agregar, no eliminar
• Estado actual === sumatoria de todos los eventos
• Utilizar snapshot
6. CQRS + Event Sourcing
Representación
estructural
Representación por
eventos
11. Almacenar Eventos
Event Time AggregateId Payload
Created … 1 { …}HTTP POST
HTTP PUT Updated … 1 { delta… }
HTTP DELETE Deleted … 1
12. Event Sourcing + Queries
Obtener todos los
eventos por ID
Created … 1 { …}
Updated … 1 { delta… }
Updated … 1 { delta… }
Reproducir todos los
eventos
14. Reproducir eventos
public class GenericEvent
{
public string Type { get; set; }
public string AggregateId { get; set; }
public DateTime Time { get; set; }
public string Payload { get; set; }
}
15. No utilizar si…
• Tu sistema es sencillo
• Tu sistema implementa consistencia transaccional fuerte
16. ¿Por qué no usar Event Sourcing?
• Incrementa la complejidad del software
• No siempre se adecua a tu aplicación
• Tiene su propio set de problemas
• Versionado
• Sagas
• Dividir dominio
17. ¿Preciso Evento Sourcing?
• ¿Preciso saber que fue agregado y quitado?
• ¿Preciso saber cuando esto ocurrió?
• ¿Preciso construir estados anteriores de mi entidad?
• ¿Preciso hacer deshacer?