manten tus datos agiles con event-sourcing
TRANSCRIPT
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
¿ Quién soy yo?
Emma Sesmero
Desarrolladora Java
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
CRUD
Carrito
vacíoUPDATE UPDATE
MADRID · NOV 18-19 · 2016
¿Event Sourcing?
MADRID · NOV 18-19 · 2016
Event sourcing
Estado
inicialEvento 1 Evento 2 Evento 3
Estado actual
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
Eventos
Inmutables
Repetibles
MADRID · NOV 18-19 · 2016
¿Por qué?
MADRID · NOV 18-19 · 2016
Estado
inicial
Estado
actual
MADRID · NOV 18-19 · 2016
Estado
inicial
Estado
actual
Estado
inicial
Estado
actual
MADRID · NOV 18-19 · 2016
¿Para qué?
Trazabilidad completa
Registro de todos los cambios
Reconstrucción de cualquier estado
Flexible
No hay pérdida de información
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
Carritovacío
Cámaraañadida
2 Librosañadidos
1 Libroborrado
Carritoborrado
Zapatosañadidos
Carritocomprado
Relojañadido
Carritoborrado
Inicio de los
tiempos
Relojañadido
Libroañadido
Libroañadido
Libroañadido
Libroborrado
Bolígrafoañadido
Pantalonesañadidos
Pantalonesborrados
Libroborrado
MADRID · NOV 18-19 · 2016
Estadoinicial
Evento1 Evento2 Evento3 Evento4
Snapshot1
Snapshots
MADRID · NOV 18-19 · 2016
Snapshots
Snapshot1 Evento3 Evento4
MADRID · NOV 18-19 · 2016
¿Y si no necesito elhistorial?
MADRID · NOV 18-19 · 2016
EventosApp
Store
Reader
Reader
Reader
MADRID · NOV 18-19 · 2016
EventosApp
Store
MongoDB
Postgres
Elastic
Search
MADRID · NOV 18-19 · 2016
¿Demasiado complejo?
MADRID · NOV 18-19 · 2016
Mapping a ER no es simple
Decidir qué información no es importante
Nueva forma de pensar
Posibles problemas de sincronización
MADRID · NOV 18-19 · 2016
Retos
MADRID · NOV 18-19 · 2016
Revertir eventos
Eventos como sumas/restas
Aumentar precio 10€
Guardar anterior valor
precio anterior 100€, Nuevo precio 110€
Ejecutando todos los eventos (replaying)
MADRID · NOV 18-19 · 2016
Dificultades replaying
EventosEvent
Handler
Data Store
Externo
MADRID · NOV 18-19 · 2016
Dependencias replaying
EventosEvent
Handler
Systema
externo
Respuesta
MADRID · NOV 18-19 · 2016
Código nuevo
Nuevas funcionalidades
Nuevos bug-fixes
Lógica que cambia
MADRID · NOV 18-19 · 2016
Usos
Log de auditoría
Test & Debugging
Escalable
Command-Query Responsability Segregation
Event-driven architecture
MADRID · NOV 18-19 · 2016
Ventajas
Recreación completa del sistema
Recreación temporal
Arreglo de eventos
Flexible
No hay pérdida de información
MADRID · NOV 18-19 · 2016
Vida real
MADRID · NOV 18-19 · 2016
EventosReceiver
IndexerSpring batch
Logic
MADRID · NOV 18-19 · 2016
Definición de eventos
Información recibida
Espacio disponible
Estrategia de procesamiento
Estrategia de reindexación
MADRID · NOV 18-19 · 2016
??
?
??
?
?
?
?
?
??
??
?
?
?
??
? ??
?
?
?
?
MADRID · NOV 18-19 · 2016
MuchasGracias!