Modélisation du domaine : l'atelier Event Storming en 3h

Par KamangaFeb 18, 20267 mins de lecture

Modélisation du domaine : l'atelier Event Storming en 3h

Chez un client dans la logistique (40 développeurs, 8 équipes, 4 ans de code accumulé), j'ai posé une question simple en réunion de lancement : "Qu'est-ce qu'une commande dans votre système ?"

Quinze minutes de débat. Cinq définitions différentes. Deux équipes qui découvraient ce soir-là qu'elles ne parlaient pas du même objet depuis des mois.

Pour l'équipe transport, une "commande" était un bon de préparation entrepôt. Pour l'équipe facturation, c'était une transaction client. Pour l'équipe livraison, c'était un shipment carrier. Ces trois concepts vivaient dans la même table de base de données. C'était la source de couplage et de bugs depuis 18 mois.

Un atelier Event Storming de 3 heures a produit la clarté que 18 mois de réunions n'avaient pas donnée. Voici comment le reproduire.


Pourquoi l'Event Storming fonctionne là où les réunions échouent

Le problème numéro un dans le développement de systèmes complexes n'est pas technique. C'est que les développeurs et les experts métier parlent des langages différents pendant des mois, et que cette incompréhension se retrouve encodée dans l'architecture.

Alberto Brandolini a créé l'Event Storming en 2013 comme une alternative aux longues sessions de recueil de besoins qui produisent des spécifications incompréhensibles. L'idée est radicale dans sa simplicité : rassembler toutes les parties prenantes dans une pièce avec des post-its de couleur, et modéliser le domaine par les événements qui s'y produisent, pas par les entités, pas par les processus, pas par les données.

En 3 heures, une équipe peut atteindre une compréhension partagée qu'elle n'aurait pas obtenue en 3 mois de réunions classiques. J'ai facilité plus de 30 sessions de ce type dans des secteurs aussi différents que la finance (Crédit Agricole), les médias (Canal+) et la logistique.

Ce dont vous avez besoin :

  • Une grande surface murale (minimum 3 mètres linéaires) ou Miro/Mural pour le remote
  • Post-its de 5 couleurs : orange (domain events), bleu (commands), jaune (aggregates), rose (external systems), rouge (hotspots/questions)
  • 5 à 12 participants : développeurs, domain experts, PO, et éventuellement le CTO
  • Un facilitateur (qui peut être vous) qui connaît les étapes
  • 3 heures sans interruption

Étape 1 : Les Domain Events en orange (30 min)

Un Domain Event est quelque chose qui s'est passé dans le domaine et qui a de l'importance business. Il se formule toujours au passé : "Commande passée", "Paiement reçu", "Stock mis à jour", "Email de confirmation envoyé".

Déroulé :

  1. Chaque participant écrit des événements sur des post-its orange (5 à 10 minutes en silence)
  2. Tout le monde colle ses post-its sur le mur
  3. Le facilitateur regroupe les événements chronologiquement, de gauche à droite

Ce que je cherche en tant que facilitateur :

  • Les doublons (deux termes pour le même événement → discussion sur le terme canonique)
  • Les contradictions (même nom pour des événements différents → signal de problème de domaine)
  • Les trous dans la timeline (il manque des événements entre deux étapes)

Règle absolue : à cette étape, pas de jugement. Tout ce qui peut se passer est bienvenu, même les événements d'erreur et les cas limites. Les "ce n'est pas un vrai événement" de la première heure sont souvent les plus révélateurs.


Étape 2 : Les Commands en bleu (30 min)

Une Command est ce qui déclenche un Domain Event. C'est une intention, une décision : "Passer une commande", "Valider le paiement", "Envoyer la notification".

Déroulé :

  1. Pour chaque Domain Event sur le mur, je demande : "Qu'est-ce qui déclenche cet événement ?"
  2. Ajouter le post-it bleu (Command) à gauche du post-it orange correspondant
  3. Identifier qui émet la Command : un utilisateur, un système automatique, un timer

Ce que cette étape révèle :

  • Les décisions implicites du domaine (certains événements se produisent sans command explicite → probable automatisme ou logique métier cachée)
  • Les acteurs du système (qui décide quoi)
  • Les règles métier qui gouvernent les commands

Votre équipe développe sans modèle de domaine partagé et les malentendus métier se retrouvent dans le code ?

Faciliter un Event Storming pour la première fois sans expérience, c'est prendre le risque d'un atelier qui part dans tous les sens. En 30 minutes, on peut définir la stratégie d'atelier adaptée à votre contexte et votre domaine, et préparer le facilitateur pour une session qui produit de vrais résultats.


Étape 3 : Les Aggregates en jaune (45 min)

Un Aggregate est l'entité ou le concept qui traite une Command et produit un Domain Event. C'est l'unité de cohérence du domaine, le concept central du Domain-Driven Design tel que formalisé par Eric Evans.

Déroulé :

  1. Pour chaque paire Command → Domain Event, demander : "Quelle entité traite cette commande et garantit que l'événement est produit correctement ?"
  2. Placer un post-it jaune entre la Command et le Domain Event avec le nom de l'Aggregate
  3. Regrouper les paires Command/Event qui partagent le même Aggregate

L'exercice révélateur : Quand deux participants donnent des noms différents pour le même Aggregate, c'est un signal fort : soit c'est un problème de vocabulaire à résoudre, soit ce sont deux Aggregates distincts qui ont été confondus et qu'il faut séparer. Ce moment-là est souvent le plus productif de l'atelier.


Étape 4 : Les Bounded Contexts (45 min)

Un Bounded Context est une frontière dans le modèle de domaine où le même terme peut avoir un sens différent, ou où des équipes différentes travaillent de façon indépendante.

Déroulé :

  1. Observer le mur et identifier les clusters naturels d'Aggregates qui travaillent ensemble
  2. Tracer des frontières visuelles entre les clusters
  3. Nommer chaque zone : "Catalog", "Ordering", "Payment", "Fulfillment"...

Les questions qui révèlent les frontières :

  • "Est-ce que cette équipe parlerait à cette équipe directement, ou via un événement ?"
  • "Est-ce que le mot 'Customer' a le même sens dans ces deux zones ?"
  • "Ces deux zones peuvent-elles évoluer indépendamment ?"

Les post-its rouges (Hotspots) : pendant tout l'atelier, quand une question reste sans réponse, je colle un post-it rouge. Ces hotspots sont les sujets à approfondir après l'atelier : ils révèlent les zones d'incertitude du domaine et deviennent la backlog des décisions architecturales à prendre. Ces décisions méritent d'être formalisées dans des Architecture Decision Records pour garder la trace du contexte et des choix effectués.


Ce que l'atelier produit

À l'issue des 3 heures, vous disposez de :

  • Une timeline des Domain Events qui représente le flux complet du domaine
  • Une carte des Commands et des acteurs
  • Une carte des Aggregates et de leurs responsabilités
  • Des Bounded Contexts qui suggèrent les frontières de services

Ce modèle n'est pas une spec technique. C'est une langue commune entre développeurs et experts métier. Il guide directement :

  • La définition des microservices (1 service par Bounded Context dans la plupart des cas), et par conséquent les décisions sur le découpage des bases de données par service
  • Le design des APIs (les Commands deviennent les endpoints)
  • La modélisation de la base de données (les Aggregates deviennent les tables ou collections)
  • L'écriture des tests (les Domain Events deviennent les scénarios de test)

Chez le client logistique que j'évoquais en ouverture, l'atelier a révélé que l'"Order" était conceptuellement 3 choses différentes. Ces 3 concepts ont été extraits en 3 services distincts, chacun avec son architecture bien délimitée, en s'appuyant notamment sur les principes de la Clean Architecture pour garantir l'indépendance des couches. Les bugs liés au couplage ont disparu dans les 6 semaines suivantes.


Récapitulatif

ÉtapeDuréePost-itRésultat
130 minOrange : Domain EventsTimeline du domaine
230 minBleu : CommandsDéclencheurs et acteurs
345 minJaune : AggregatesEntités et responsabilités
445 minFrontières visuellesBounded Contexts

FAQ sur l'Event Storming

1. Faut-il connaître DDD pour faciliter un Event Storming ?

Non. Les concepts fondamentaux (Domain Events, Commands, Aggregates, Bounded Contexts) peuvent s'expliquer en 5 minutes en début de session. L'Event Storming est conçu pour être accessible aux non-DDD. C'est d'ailleurs sa force : il permet aux domain experts, qui ne connaissent pas DDD, de contribuer activement. Un facilitateur qui comprend l'objectif de chaque étape est suffisant pour un premier atelier.

2. L'Event Storming fonctionne-t-il en remote ?

Oui, avec des outils comme Miro ou Mural. Les ateliers en remote sont légèrement moins dynamiques (les conversations parallèles sont plus difficiles à gérer), mais produisent des résultats comparables. Mes conseils pour le remote : prévoir des breakout rooms pour les sous-groupes, utiliser le timer visible de l'outil, et allouer 30 minutes supplémentaires pour les latences de communication. J'ai facilité des sessions jusqu'à 10 participants en remote avec de bons résultats.

3. Quelle est la taille idéale du groupe ?

5 à 12 personnes. En dessous de 5, on manque de perspectives et les angles morts sont nombreux. Au-dessus de 12, la coordination devient difficile et certains participants restent passifs. Pour les grands domaines, plusieurs sessions Event Storming sur des sous-domaines sont préférables à une seule session avec 20 personnes.

4. Que faire avec le résultat de l'atelier ? Comment le maintenir à jour ?

Je recommande de photographier et numériser le mur immédiatement après l'atelier. Créer une page de documentation dans Confluence ou Notion avec les photos annotées et les décisions clés. Le modèle de domaine doit évoluer avec le domaine : prévoir un Event Storming de mise à jour tous les 6 à 12 mois, ou quand une refonte significative du domaine est envisagée.

5. L'Event Storming peut-il s'appliquer à un domaine technique (infrastructure, CI/CD) plutôt que métier ?

Oui, avec adaptation. On parle alors de "Process Modelling Event Storm", la même technique appliquée aux processus techniques. Les Domain Events deviennent des événements de pipeline ("Build triggered", "Tests failed", "Deployment rolled back"). C'est utile pour modéliser et améliorer les processus de delivery, et j'ai utilisé ce format pour restructurer des pipelines CI/CD chez plusieurs clients.


Ressource gratuite : Engineering Maturity Self-Assessment

L'Engineering Maturity Self-Assessment couvre le domaine Architecture & Modélisation : évaluez votre niveau de maturité sur la conception du domaine, le découplage, et les pratiques de modélisation. Résultat en 10 minutes, plan d'action inclus.


Ecris par Kamanga

Expert IT avec 25 ans d'expérience en développement logiciel, diplômé EPITECH et MBA. Spécialisé en software craftsmanship, gestion du changement, stratégie, direction des systèmes d'information, coaching et certifié en agilité.