Definición: Patron de almacenamiento que persiste el estado de una entidad como una secuencia inmutable de eventos en lugar de almacenar solo el estado actual.
— Fuente: NERVICO, Consultoría de Desarrollo de Producto
Que es event sourcing
Event sourcing es un patron de arquitectura en el que el estado de una entidad no se almacena como un registro mutable, sino como una secuencia ordenada e inmutable de eventos que representan cada cambio ocurrido. Para obtener el estado actual, se reproducen (replay) todos los eventos desde el inicio. Cada evento describe un hecho que ya ocurrio y no puede ser modificado ni eliminado.
Como funciona
En lugar de actualizar un registro en base de datos con el nuevo estado, cada accion genera un evento que se almacena en un event store. Por ejemplo, en una cuenta bancaria, en vez de actualizar el saldo directamente, se almacenan eventos como “deposito de 500 euros”, “retiro de 200 euros”, “transferencia recibida de 100 euros”. El saldo actual se calcula reproduciendo la secuencia completa de eventos. Para mejorar el rendimiento, se crean snapshots periodicos que guardan el estado acumulado hasta cierto punto.
Por que importa
Event sourcing proporciona una auditoria completa de todos los cambios, algo critico en dominios financieros, legales o regulados. Permite reconstruir el estado en cualquier punto del tiempo, facilita la depuracion de errores y habilita nuevas funcionalidades retroactivas sin perder datos historicos. Combinado con CQRS, permite optimizar lecturas y escrituras de forma independiente.
Ejemplo practico
Un sistema de gestion de pedidos almacena cada pedido como secuencia de eventos: “pedido creado”, “articulo anadido”, “pago procesado”, “pedido enviado”. Meses despues, el equipo necesita un informe de cuantos pedidos fueron modificados antes del pago. Con una base de datos tradicional que solo guarda el estado final, esa informacion no existe. Con event sourcing, basta con consultar la secuencia de eventos de cada pedido para obtener la respuesta exacta.