¿En qué granularidad se registran los eventos en Event Sourcing?

7

Estoy creciendo mi comprensión del abastecimiento de eventos. Según tengo entendido, proporciona un medio para registrar eventos a medida que ocurren, de modo que, dado un estado de inicio común y un registro de auditoría de eventos grabados, los eventos se pueden reproducir para lograr el mismo estado final.

Sé que a veces los eventos son activados por otros eventos. Cuando considero un sistema como un todo, imagino que algunos eventos se activarán externamente por las entradas del usuario u otra fuente externa y que otros eventos se activarán y procesarán internamente como efectos secundarios. Estoy llamando a los eventos originarios anteriores y los eventos secundarios secundarios.

Los eventos de origen desencadenan un efecto dominó de eventos secundarios. Dado que los eventos secundarios dependen directamente de algún evento de origen, ¿deberían registrarse los eventos secundarios como parte de la auditoría?

Si está al tanto de alguna fuente que explique esto en profundidad, sírvase citar.

    
pregunta Mario T. Lanza 22.10.2014 - 03:51

2 respuestas

3

Creo que estás mezclando la fuente de eventos y la fuente de comandos. Hay una diferencia crucial entre ellos. Con el origen de comandos, registra comandos externos, como entradas de usuario. En la fuente de eventos, registra efectos de esos comandos, es decir, lo que has llamado eventos secundarios.

En la práctica, debe elegir el comando o el origen de eventos y atenerse a él, sin combinar estos 2 enfoques. En cuanto a cuál elegir, parece que el consenso de la industria está sesgando hacia el abastecimiento de eventos. Por ejemplo, en Akka, el módulo de persistencia de Akka se basa en la fuente de eventos.

La idea principal detrás de elegir la fuente de eventos en lugar de la fuente de comandos es que la anterior permite la idempotencia. Es decir. Sin embargo, muchas veces reproduzcas los efectos de tu operación, tu sistema terminará en el mismo estado, mientras que con la fuente de comandos estás tratando de confiar en un hecho que el mismo comando ejecutado en un momento diferente produciría el mismo efecto, que es, por decirlo así, es incauto.

    
respondido por el Haspemulator 11.11.2014 - 13:57
4

Desde una perspectiva puramente práctica, si incluye eventos que son activados por otros eventos en su registro, hay dos consecuencias:

  • Si necesita volver a reproducir el registro, estos eventos se activarán automáticamente de todos modos, por lo que necesitará una forma de filtrarlos.
  • Si luego determina que la lógica que genera algunos de estos eventos es incorrecta, y por lo tanto decide reconstruir su sistema al reproducir todos los eventos para eliminar los datos dañados por el error, el registro aún contendrá datos incorrectos

Desde esta perspectiva, parece claro que, como mínimo, dichos eventos deberían registrarse por separado en lugar de en conjunto con eventos de fuentes externas.

    
respondido por el Periata Breatta 23.10.2014 - 07:17

Lea otras preguntas en las etiquetas