37
MADRID · NOV 18-19 · 2016

Manten tus datos agiles con event-sourcing

Embed Size (px)

Citation preview

Page 1: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 2: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

¿ Quién soy yo?

Emma Sesmero

Desarrolladora Java

Page 3: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 4: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 5: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 6: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 7: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

CRUD

Carrito

vacíoUPDATE UPDATE

Page 8: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

¿Event Sourcing?

Page 9: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Event sourcing

Estado

inicialEvento 1 Evento 2 Evento 3

Estado actual

Page 10: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 11: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Eventos

Inmutables

Repetibles

Page 12: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

¿Por qué?

Page 13: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Estado

inicial

Estado

actual

Page 14: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Estado

inicial

Estado

actual

Estado

inicial

Estado

actual

Page 15: Manten tus datos agiles con event-sourcing

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

Page 16: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 17: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Page 18: Manten tus datos agiles con event-sourcing

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

Page 19: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Estadoinicial

Evento1 Evento2 Evento3 Evento4

Snapshot1

Snapshots

Page 20: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Snapshots

Snapshot1 Evento3 Evento4

Page 21: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

¿Y si no necesito elhistorial?

Page 22: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

EventosApp

Store

Reader

Reader

Reader

Page 23: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

EventosApp

Store

MongoDB

Postgres

Elastic

Search

Page 24: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

¿Demasiado complejo?

Page 25: Manten tus datos agiles con event-sourcing

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

Page 26: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Retos

Page 27: Manten tus datos agiles con event-sourcing

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)

Page 28: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Dificultades replaying

EventosEvent

Handler

Data Store

Externo

Page 29: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Dependencias replaying

EventosEvent

Handler

Systema

externo

Respuesta

Page 30: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Código nuevo

Nuevas funcionalidades

Nuevos bug-fixes

Lógica que cambia

Page 31: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Usos

Log de auditoría

Test & Debugging

Escalable

Command-Query Responsability Segregation

Event-driven architecture

Page 32: Manten tus datos agiles con event-sourcing

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

Page 33: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Vida real

Page 34: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

EventosReceiver

IndexerSpring batch

Logic

Page 35: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

Definición de eventos

Información recibida

Espacio disponible

Estrategia de procesamiento

Estrategia de reindexación

Page 36: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

??

?

??

?

?

?

?

?

??

??

?

?

?

??

? ??

?

?

?

?

Page 37: Manten tus datos agiles con event-sourcing

MADRID · NOV 18-19 · 2016

MuchasGracias!