¿Cuál es la diferencia entre Event Driven y Event sourcing?

13

Estoy estudiando diseño impulsado por dominio (DDD) y encontré términos: Event Driven y Event sourcing. Sé que se trata de publicar un evento de productor a consumidor y almacenar el registro, así que mi pregunta es:

¿Cuál es la diferencia entre Event Driven y Event sourcing?

JJ Beam
fuente

Respuestas:

15

El término arquitectura dirigida por eventos se utiliza para cualquier tipo de sistema de software que se base en componentes que se comunican principalmente o exclusivamente a través de eventos. Por ejemplo, casi cualquier marco de GUI importante en cualquier plataforma popular utiliza mecanismos basados ​​en eventos. El término "evento" generalmente significa "notificación" en este contexto.

El abastecimiento de eventos es un término mucho más especial, que se refiere a sistemas en los que todo el estado de la aplicación se almacena como una secuencia de eventos. Una clase popular de ejemplos conocidos son los sistemas de bases de datos transaccionales, que almacenan cualquier cambio de estado en un registro de transacciones. Aquí, el término "evento" se refiere más a "cambio de estado", no solo a "notificación".

Por lo tanto, cualquier sistema que utilice el "abastecimiento de eventos" como su núcleo mecánico puede verse también como un sistema uniforme, pero lo contrario no es cierto en general.

Doc Brown
fuente
Votó su respuesta. Estoy buscando esto ahora mismo, y encontré tu respuesta primero. Al observar la frase "todo el estado de la aplicación se almacena como una secuencia de eventos", parece que estás diciendo esto: "El estado de la aplicación no se conserva directamente en su forma actual. En su lugar, cada operación de creación, actualización o eliminación realizada en un objeto o modelo se considera un 'evento', y son esos 'eventos' los que persisten directamente. Por lo tanto, para obtener el estado actual de un objeto, debe reproducir esos eventos para reconstruir una copia del mismo ". ¿Suena esto correcto?
Panzercrisis
1
@Panzercrisis: debería haber escrito "Event Sourcing almacena todos los cambios en el estado de la aplicación como una secuencia de eventos". (como Fowler). Todos los objetos suelen tener un estado "actual", este estado también puede persistir (tal vez diferido), así como la secuencia de eventos en sí. Recomiendo leer el artículo de Fowler para obtener una explicación completa.
Doc Brown