Quelle est la différence entre Event Driven et Event sourcing?

13

J'étudie la conception pilotée par domaine (DDD) et suis tombé sur des termes: Event Driven et Event sourcing. Je sais qu'il s'agit de publier un événement du producteur au consommateur et de stocker le journal, donc ma question est:

Quelle est la différence entre Event Driven et Event sourcing?

JJ Beam
la source

Réponses:

16

Le terme architecture pilotée par les événements est utilisé pour tout type de système logiciel basé sur des composants communiquant principalement ou exclusivement par le biais d'événements. Par exemple, presque n'importe quelle infrastructure graphique majeure sur n'importe quelle plate-forme populaire utilise des mécanismes événementiels. Le terme "événement" signifie généralement "notification" dans ce contexte.

Le sourcing d'événements est un terme beaucoup plus spécial, se référant aux systèmes où l'état de l'application entière est stocké sous la forme d'une séquence d'événements. Les systèmes de bases de données transactionnelles, qui stockent tous les changements d'état dans un journal des transactions, constituent une classe d'exemples bien connue. Ici, le terme "événement" se réfère davantage à "changement d'état", pas seulement à "notification".

Ainsi, tout système qui utilise le "sourcing d'événements" comme mécanisme de base peut être considéré comme un système à impulsions égales, mais l'inverse n'est pas vrai en général.

Doc Brown
la source
A voté pour votre réponse. Je suis moi-même en train de chercher ceci et j'ai trouvé votre réponse en premier. En regardant l'expression "l'état de l'application entière est stockée sous forme d'événements de séquence", il semble que vous disiez ceci: "L'état de l'application n'est pas conservé directement dans sa forme actuelle. Au lieu de cela, chaque opération de création, de mise à jour ou de suppression effectuée sur un objet ou un modèle est considéré comme un "événement", et ce sont ces "événements" qui sont directement persistants. Pour obtenir l'état actuel d'un objet, vous devez rejouer ces événements afin d'en reconstruire une copie. " Est-ce que cela semble correct?
Panzercrisis
1
@Panzercrisis: j'aurais dû écrire "Event Sourcing stocke toutes les modifications apportées à l'état de l'application sous la forme d'une séquence d'événements." (comme Fowler). Tous les objets ont généralement un état "actuel", cet état peut également être persistant (peut-être différé), ainsi que la séquence d'événements elle-même. Je recommande de lire l'article de Fowler pour une explication complète.
Doc Brown