Event Sourcing : C’est quoi ? Pourquoi adopter cette architecture ? 

-
4
 m de lecture
-
Une développeuse travaille sur plusieurs écrans affichant du code, dans un environnement de bureau calme et décoré de plantes vertes. Elle porte un casque audio et un t-shirt orange, concentrée sur la programmation. Ce cadre évoque des concepts liés à l'architecture logicielle, comme l'event sourcing.

Découvrez l’Event Sourcing, un modèle architectural moderne qui enregistre toutes les modifications de vos données. Une approche structurée qui simplifie les mises à jour et le suivi d’événements spécifiques dans vos applications.

C’est quoi l’Event Sourcing ?

L’Event Sourcing est un modèle architectural qui change radicalement notre façon de stocker les données

Au lieu de simplement enregistrer l’état actuel des données, il capture chaque modification sous forme d’événements immuables. Imaginez un compte bancaire : plutôt que de stocker uniquement le solde final, l’Event Sourcing conserve chaque dépôt et retrait effectué. 

Ces événements constituent une source de vérité intangible, comme un livre comptable qu’on ne peut jamais modifier mais seulement compléter. Cette approche garantit une traçabilité totale : chaque changement est horodaté et conservé, permettant de comprendre précisément comment le système est arrivé à son état actuel. L’Event Sourcing assure ainsi l’intégrité des données tout en offrant la possibilité de reconstruire n’importe quel état passé du système.

Quand utiliser l’Event Sourcing ?

L’Event Sourcing est particulièrement adapté aux systèmes où la traçabilité et l’audit sont cruciaux. Voici les cas d’usage pertinents : 

Cas d’usage

Description

Applications financières

Chaque transaction est enregistrée comme un événement, garantissant une traçabilité complète et un audit fiable.

Systèmes de gestion de commandes

Le suivi des commandes est facilité par l’enregistrement des événements : création, modification, validation, expédition, etc.

Applications collaboratives

L’historique des modifications permet de retracer toutes les actions, ce qui est essentiel pour les outils de gestion de versions ou d’édition partagée.

Systèmes métier complexes

La compréhension de l’évolution des données devient possible, ce qui aide à analyser les décisions passées et optimiser la modélisation des processus métier.

Quels sont les avantages de l’Event Sourcing ?

Les avantages de l’event sourcing sont multiples et significatifs : 

  • Sur le plan technique, il offre une traçabilité complète permettant de reconstruire l’état du système informatique à n’importe quel moment passé, ce qui facilite considérablement le débogage et l’audit. La nature immuable des événements garantit l’intégrité des données selon l’approche ACID et élimine les risques de corruption.
  • Du point de vue métier, l’Event Sourcing permet une analyse approfondie des comportements utilisateurs par les Consultants Web Analytics, car chaque action est conservée chronologiquement. Cette capacité d’analyse temporelle est précieuse pour comprendre l’évolution des processus et prendre des décisions éclairées.
  • L’architecture favorise également la scalabilité et la performance grâce à la possibilité de mise en cache efficace et de répartition de charge. La séparation claire entre les événements et leur interprétation facilite l’évolution du système : on peut ajouter de nouvelles fonctionnalités en interprétant différemment les événements existants, sans modifier l’historique.
  • L’Event Sourcing s’intègre naturellement avec les architectures événementielles modernes et le CQRS (Command Query Responsibility Segregation), offrant une base solide pour les systèmes distribués complexes.

Comment utiliser l’Event Sourcing ?

La mise en œuvre de l’Event Sourcing nécessite une approche structurée : 

  1. Commencez par identifier les événements clés de votre domaine métier, comme « Commande Créée » ou « Paiement Effectué ». Ces événements doivent être immuables et contenir toutes les données pertinentes au changement d’état.
  2. Implémentez ensuite un Event Store pour persister ces événements de manière séquentielle. Chaque événement reçoit un identifiant unique et un horodatage. L’Event Store doit garantir que les événements sont stockés dans l’ordre et ne peuvent être modifiés après avoir été enregistrés.
  3. Développez des Event Handlers qui réagissent aux événements pour mettre à jour les vues de lecture (projections). Ces projections transforment le flux d’événements en un format optimisé pour les requêtes. Par exemple, une projection « Solde du compte » calcule la somme des transactions à partir des événements de débit et crédit.
  4. Prévoyez un mécanisme de snapshots pour optimiser la reconstruction de l’état : au lieu de rejouer tous les événements, le système peut partir d’un snapshot et n’appliquer que les événements plus récents. 
  5. Enfin, intégrez un système de versioning des événements pour gérer l’évolution de leur structure dans le temps.

Cas pratique : Site e-commerce

Imaginez que vous gériez un site de vente en ligne. Lorsqu’un client passe une commande, plusieurs événements se produisent :

  1. Commande créée : Le client a ajouté des articles au panier et confirmé l’achat.
  2. Paiement validé : Le paiement est accepté.
  3. Commande expédiée : Les articles sont préparés et expédiés.
  4. Commande livrée : Le client reçoit les produits.

Chaque événement est enregistré dans un Event Store. Ces événements sont immuables, c’est-à-dire qu’ils ne peuvent pas être modifiés après leur enregistrement. Pour savoir où en est une commande, l’application rejoue tous les événements associés à cette commande et reconstitue son état.

Par exemple, si tu veux afficher le statut d’une commande, le système lit les événements et voit que la dernière étape est « Commande expédiée ». Cela permet de suivre précisément l’évolution de chaque commande sans perdre d’informations.

En plus, des projections (vues optimisées) peuvent être créées, comme un tableau de bord qui montre le nombre total de commandes expédiées. Cette approche garantit une traçabilité totale des opérations, tout en permettant une gestion flexible et réactive des données.

Quels sont les défis de l’Event Sourcing ?

L’Event Sourcing présente plusieurs défis techniques et organisationnels : 

  • La gestion de la performance constitue un défi majeur : rejouer un grand nombre d’événements pour reconstituer l’état actuel peut être coûteux en ressources. La mise en place de snapshots devient alors critique pour optimiser les performances.
  • La conception des événements demande une réflexion approfondie : une fois définis, ils sont immuables et difficiles à faire évoluer. L’évolution du schéma des événements (event schema versioning) nécessite des stratégies de migration complexes pour maintenir la compatibilité avec l’historique.
  • Le stockage représente également un défi important : comme chaque changement génère un nouvel événement, le volume de données croît continuellement. La gestion de cette croissance exige des stratégies d’archivage et de nettoyage bien pensées.
  • La complexité accrue du système peut aussi ralentir le développement et augmenter la courbe d’apprentissage pour les nouveaux développeurs. Les requêtes complexes nécessitent souvent des projections dédiées, ce qui ajoute une couche de complexité supplémentaire à la maintenance du système.
  • La cohérence éventuelle inhérente aux systèmes basés sur les événements peut compliquer la gestion des cas d’utilisation nécessitant une cohérence immédiate.

Conclusion

L’event sourcing est une approche puissante pour gérer les systèmes nécessitant une traçabilité et un suivi précis des changements. En enregistrant chaque événement de manière immuable, il offre une transparence totale sur l’évolution des données.

Cependant, la mise en œuvre de l’event sourcing doit être réfléchie. Elle peut augmenter la complexité technique, notamment en matière de gestion d’infrastructure, de stockage d’événements et de versioning. 

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?