Modèle d'architecture: Event Sourcing

24/01/2018 | Tags: architecture

J’avais pas mal vu passer le terme “event sourcing” sans jamais vraiment prendre le temps de me renseigner sur ce qu’il représentait. Quelle surprise d’apprendre qu’il s’agit d’un concept extrémement simple et que nous mettions en pratique sans le nommer dans mon ancienne entreprise.

L’event sourcing est tout simplement la création d’une séquence immuable d’événements représentant chacunes des actions (appellées commandes) qui ont modifié l’état du système. On ne connait plus seulement l’état actuel mais aussi comment on est arrivé à cet état.

Event sourcing architecture example

Exemple d’architecture. Source: Microsoft Azure

Si jamais l’état du système est perdu, il est possible de le “recalculer” à partir de cette séquence en rejouant les événements. Il est donc possible de retrouver l’état du système à n’importe quel moment, mais aussi d’enlever ou de réorganiser certains événements (enlever un événement = publier son contraire). Un cas concret d’utilisation que vous utilisez surement tous les jour est le système de gestion de version Git.

On peux l’utiliser au centre des systèmes distribués afin de les maintenir synchronisés. Un système pouvant rejouer les événements ayant été produit dans un autre. Des applications viennent souscrire à certains type d’événements. Cela permet de découpler les applications d’un système.

Log consumer

Séquence avec plusieurs consommateurs. Source: Apache Kafka documentation

Bibliothèques et logiciels

Apache Kafka

Sources

MartinFowler.com - Event Sourcing

Microsoft Azure - Event Sourcing pattern

Confluent.io - Event sourcing, CQRS, stream processing and Apache Kafka: What’s the connection?