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ío
UPDATE UPDATE
MADRID · NOV 18-19 · 2016
¿Event Sourcing?
MADRID · NOV 18-19 · 2016
Event sourcing
Estado
inicial
Evento 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
Carrito
vacío
Cámara
añadida
2 Libros
añadidos
1 Libro
borrado
Carrito
borrado
Zapatos
añadidos
Carrito
comprado
Reloj
añadido
Carrito
borrado
Inicio de los
tiempos
Reloj
añadido
Libro
añadido
Libro
añadido
Libro
añadido
Libro
borrado
Bolígrafo
añadido
Pantalones
añadidos
Pantalones
borrados
Libro
borrado
MADRID · NOV 18-19 · 2016
Estado
inicial
Evento1 Evento2 Evento3 Evento4
Snapshot1
Snapshots
MADRID · NOV 18-19 · 2016
Snapshots
Snapshot1 Evento3 Evento4
MADRID · NOV 18-19 · 2016
¿Y si no necesito el
historial?
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
Eventos
Event
Handler
Data Store
Externo
MADRID · NOV 18-19 · 2016
Dependencias replaying
Eventos
Event
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
Indexer
Spring 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
Muchas
Gracias!

Manten tus datos agiles con event-sourcing

  • 1.
    MADRID · NOV18-19 · 2016
  • 2.
    MADRID · NOV18-19 · 2016 ¿ Quién soy yo? Emma Sesmero  Desarrolladora Java
  • 3.
    MADRID · NOV18-19 · 2016
  • 4.
    MADRID · NOV18-19 · 2016
  • 5.
    MADRID · NOV18-19 · 2016
  • 6.
    MADRID · NOV18-19 · 2016
  • 7.
    MADRID · NOV18-19 · 2016 CRUD Carrito vacío UPDATE UPDATE
  • 8.
    MADRID · NOV18-19 · 2016 ¿Event Sourcing?
  • 9.
    MADRID · NOV18-19 · 2016 Event sourcing Estado inicial Evento 1 Evento 2 Evento 3 Estado actual
  • 10.
    MADRID · NOV18-19 · 2016
  • 11.
    MADRID · NOV18-19 · 2016 Eventos  Inmutables  Repetibles
  • 12.
    MADRID · NOV18-19 · 2016 ¿Por qué?
  • 13.
    MADRID · NOV18-19 · 2016 Estado inicial Estado actual
  • 14.
    MADRID · NOV18-19 · 2016 Estado inicial Estado actual Estado inicial Estado actual
  • 15.
    MADRID · NOV18-19 · 2016 ¿Para qué?  Trazabilidad completa  Registro de todos los cambios  Reconstrucción de cualquier estado  Flexible  No hay pérdida de información
  • 16.
    MADRID · NOV18-19 · 2016
  • 17.
    MADRID · NOV18-19 · 2016
  • 18.
    MADRID · NOV18-19 · 2016 Carrito vacío Cámara añadida 2 Libros añadidos 1 Libro borrado Carrito borrado Zapatos añadidos Carrito comprado Reloj añadido Carrito borrado Inicio de los tiempos Reloj añadido Libro añadido Libro añadido Libro añadido Libro borrado Bolígrafo añadido Pantalones añadidos Pantalones borrados Libro borrado
  • 19.
    MADRID · NOV18-19 · 2016 Estado inicial Evento1 Evento2 Evento3 Evento4 Snapshot1 Snapshots
  • 20.
    MADRID · NOV18-19 · 2016 Snapshots Snapshot1 Evento3 Evento4
  • 21.
    MADRID · NOV18-19 · 2016 ¿Y si no necesito el historial?
  • 22.
    MADRID · NOV18-19 · 2016 EventosApp Store Reader Reader Reader
  • 23.
    MADRID · NOV18-19 · 2016 EventosApp Store MongoDB Postgres Elastic Search
  • 24.
    MADRID · NOV18-19 · 2016 ¿Demasiado complejo?
  • 25.
    MADRID · NOV18-19 · 2016  Mapping a ER no es simple  Decidir qué información no es importante  Nueva forma de pensar  Posibles problemas de sincronización
  • 26.
    MADRID · NOV18-19 · 2016 Retos
  • 27.
    MADRID · NOV18-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)
  • 28.
    MADRID · NOV18-19 · 2016 Dificultades replaying Eventos Event Handler Data Store Externo
  • 29.
    MADRID · NOV18-19 · 2016 Dependencias replaying Eventos Event Handler Systema externo Respuesta
  • 30.
    MADRID · NOV18-19 · 2016 Código nuevo  Nuevas funcionalidades  Nuevos bug-fixes  Lógica que cambia
  • 31.
    MADRID · NOV18-19 · 2016 Usos  Log de auditoría  Test & Debugging  Escalable  Command-Query Responsability Segregation  Event-driven architecture
  • 32.
    MADRID · NOV18-19 · 2016 Ventajas  Recreación completa del sistema  Recreación temporal  Arreglo de eventos  Flexible  No hay pérdida de información
  • 33.
    MADRID · NOV18-19 · 2016 Vida real
  • 34.
    MADRID · NOV18-19 · 2016 EventosReceiver Indexer Spring batch Logic
  • 35.
    MADRID · NOV18-19 · 2016  Definición de eventos  Información recibida  Espacio disponible  Estrategia de procesamiento  Estrategia de reindexación
  • 36.
    MADRID · NOV18-19 · 2016 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
  • 37.
    MADRID · NOV18-19 · 2016 Muchas Gracias!