Event Sourcing
L'Event Sourcing est un patron d'architecture consistant à entreposer l'état d'une application en enregistrant chaque événement ayant modifié cet état, plutôt que de conserver simplement l'état actuel dans une base de données. Ce modèle se concentre sur la conservation des événements en tant que source principale de vérité, permettant de reconstruire l'état d'une application à tout moment en re-jouant les événements.
Concepts clefs de l'Event Sourcing
- Événements : Chaque changement d'état dans le système est enregistré sous la forme d'un événement. Ces événements sont des objets immuables contenant des informations sur ce qui s'est passé (par exemple, un paiement a été effectué, une commande a été passée,...).
- Entreposage des événements : Les événements sont entreposés dans un journal d'événements (event store), étant une base de données spécialisée pour conserver ces enregistrements. Ce journal permet de conserver un historique complet des changements d'état.
- Reconstruction d'État : L'état actuel d'un objet ou d'un système peut être reconstruit en appliquant tous les événements enregistrés dans l'ordre où ils se sont produits. Cela signifie que l'on peut créer des projections de l'état actuel à partir de l'historique des événements.
- Projections : Les projections sont des vues spécifiques des événements qui créent une représentation actuelle des données. Elles peuvent être utilisées pour alimenter des interfaces utilisateurs ou d'autres systèmes qui nécessitent des états spécifiques.
- Commandes et événements : Dans une architecture basée sur l'Event Sourcing, les opérations sont souvent divisées en deux types : les commandes, représentant une intention de changement, et les événements, représentant le changement une fois qu'il a été effectué.
Avantages de l'Event Sourcing
- Historique complet : En conservant chaque événement, l'application dispose d'un historique complet de tous les changements d'état, ce qui facilite l'audit et la traçabilité.
- Rejouabilité : Les événements peuvent être rejoués pour reconstruire l'état d'un système à n'importe quel point dans le temps, ce qui permet de restaurer des données ou de corriger des erreurs.
- Flexibilité des modèles : Les modèles de données peuvent évoluer sans nécessiter de migrations complexes de base de données. De nouveaux types d'événements peuvent être ajoutés pour étendre les fonctionnalités.
- Mise à l'échelle : Les systèmes basés sur l'Event Sourcing peuvent être plus facilement mise à l'échelle, car les opérations d'écriture (ajouter des événements) sont souvent plus simples à gérer que les opérations de lecture directe des données.
- Événements comme source de vérité : Le modèle met l'accent sur les événements en tant que source unique de vérité, ce qui peut réduire les incohérences et les problèmes de synchronisation entre différents systèmes.
Applications de l'Event Sourcing
- Applications financière : L'Event Sourcing est souvent utilisé dans des systèmes nécessitant une traçabilité rigoureuse des transactions, comme les systèmes bancaires ou de commerce électronique.
- Systèmes distribués : Dans des architectures microservices, l'Event Sourcing permet de gérer les communications et les changements d'état entre les différents services de manière efficace.
- Jeux vidéo : Certains jeux utilisent l'Event Sourcing pour enregistrer les actions des joueurs, permettant ainsi de recréer des sessions de jeu ou d'analyser le comportement des utilisateurs.
Dernière mise à jour : Vendredi, le 1er novembre 2024