L’article présente une implémentation concrète du Domain-Driven Design (DDD) avec Symfony 7 et Clean Architecture, renforcée par Deptrac pour garantir le respect des frontières entre couches et contextes métiers. L’auteur propose une structure modulaire (Domain, Application, Infrastructure, Presentation) où chaque Bounded Context (comme "Catalogue" ou "Order") est isolé, avec une logique métier pure et indépendante des frameworks. La communication entre contextes s’appuie sur des Open Host Services (OHS) et des Anti-Corruption Layers (ACL), facilitant une transition vers des microservices. Deptrac est utilisé comme linter architectural pour empêcher les dépendances illégitimes (ex : accéder au Domain depuis la Presentation). Les tests ciblent d’abord la logique métier, en isolation. Le projet est framework-agnostic, scalable et maintenable, avec un exemple complet disponible sur GitHub.
Idéal pour les projets PHP complexes où la clarté et la pérennité du code sont critiques.
L'article traite de la modélisation des invariants métiers dans le cadre du Domain-Driven Design (DDD) et de l'importance des agrégats (Aggregates). Il aborde la complexité de maintenir ces invariants, notamment lorsque les règles métiers deviennent plus complexes. L'exemple donné est celui d'une application e-commerce où la quantité de produits par commande est limitée. L'article explore deux approches pour gérer ces invariants : une approche simple où l'invariant est vérifié au niveau de l'objet LineItem
, et une approche plus complexe nécessitant la dénormalisation des données pour garantir la cohérence éventuelle (Eventual Consistency). Cette dernière méthode implique de dupliquer certaines informations pour éviter des transactions lourdes et potentiellement bloquantes. L'article souligne également l'importance de la discussion avec les experts métiers pour définir les règles de gestion des invariants et introduit le concept de Job Queue pour assurer la mise à jour asynchrone et robuste des données. En conclusion, la complexité de la solution dépend de la volumétrie des données et des exigences métiers.
Tout est dans le titre
Tout est dans le titre
Une bonne introduction au Domain Driven Design et à la Clean Architecture pour les projets Symfony
Tout est dans le titre
Tout est dans le titre
Un résumé pour l'implémentation pratique des principes du DDD
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
L'auteur explique en quoi un modèle de données riche est bien plus intéressant qu'un modèle pauvre, notamment en ce qui concerne la cohérence métier des entités.
Une excellente présentation de DDD et CQRS, et des pièges à éviter
Tout est dans le titre
Tout est dans le titre