tadata
Retour à l'accueil

Domain-Driven Design : de la stratégie aux contextes délimités

#architecture#ddd#microservices#software-design

Le Domain-Driven Design (DDD) n'est ni un framework ni une bibliothèque. C'est un ensemble de principes pour structurer le logiciel autour des domaines métier. En 2026, le DDD reste la méthodologie la plus fiable pour décomposer des systèmes complexes, en particulier pour définir les frontières de microservices.

Taxonomie des concepts DDD

Domain-Driven Design
├── Conception Stratégique
│   ├── Contexte Délimité (Bounded Context)
│   ├── Langage Ubiquitaire
│   ├── Cartographie des Contextes
│   ├── Sous-domaines (Cœur / Support / Générique)
│   └── Vision du Domaine
├── Conception Tactique
│   ├── Entités
│   ├── Objets Valeur
│   ├── Agrégats (+ Racine d'Agrégat)
│   ├── Événements de Domaine
│   ├── Repositories
│   ├── Fabriques
│   └── Services de Domaine
└── Patterns d'Intégration
    ├── Couche Anti-Corruption (ACL)
    ├── Noyau Partagé
    ├── Service Hôte Ouvert
    ├── Langage Publié
    └── Client-Fournisseur

Patterns Stratégiques vs Tactiques

AspectPatterns StratégiquesPatterns Tactiques
PortéeSystème entier, inter-équipesAu sein d'un contexte délimité
Parties prenantesArchitectes, PMs, experts métierDéveloppeurs, tech leads
LivrableCartes de contexte, frontières d'équipeStructure du code, modèle de domaine
ApplicationAvant de construirePendant l'implémentation
Risque si omisMauvaises frontières, retravail coûteuxModèle anémique, fuites de logique
EffortAteliers, sessions EventStormingRefactoring continu
RéversibilitéFaible (impact organisationnel)Moyenne (changements de code)

Checklist d'identification des contextes délimités

#QuestionSignal
1Ce domaine a-t-il son propre vocabulaire ?Termes différents = contexte différent
2Une équipe différente le gérerait-elle ?L'alignement organisationnel compte
3A-t-il un cycle de vie distinct ?Déploiement indépendant = contexte séparé
4Les règles de cohérence different-elles ?Cohérence forte vs éventuelle
5Y a-t-il une frontière de transaction naturelle ?Les frontières d'agrégat indiquent les contextes
6Modifier ceci casserait-il des fonctionnalités non liées ?Signal de couplage
7Ce sous-domaine offre-t-il un avantage concurrentiel ?Coeur vs support vs générique
8Les patterns de lecture/écriture different-ils ?Candidat CQRS au sein du contexte

Pièges courants

Obsession des entités -- Les équipes modélisent tout en Entité alors que les Objets Valeur sont plus simples et plus sûrs. Si deux objets avec les mêmes attributs sont interchangeables, utilisez un Objet Valeur.

Ignorer la conception stratégique -- Sauter directement aux Agrégats sans cartographier les contextes mène au monolithe distribué. La conception stratégique n'est pas optionnelle.

Un modèle pour les gouverner tous -- Un "Client" en facturation n'est pas le même qu'un "Client" en expédition. Laissez chaque contexte posséder son propre modèle.

Ressources

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.