PLC-02 · shared ne contient que du code technique
Signal
- Un dossier
shared/domain, ou un type métier dansshared:Money,Customer,TransferStatus. - Un dossier
shared/utilsqui grossit avec chaque bounded context. - Un bounded context qui importe une règle métier depuis
shared, au lieu dupublicdu bounded context qui la possède.
Pourquoi
shared n’appartient à aucun bounded context. Ce qu’on y met échappe à toutes les frontières : aucune équipe ne le possède, et tous les bounded contexts peuvent en dépendre. Le code technique (client de base de données, Unit of Work, outbox, configuration HTTP globale) est le même pour tous. Le code métier, non : un concept partagé sans déclaration cache une relation entre bounded contexts.
Exceptions
Un shared kernel déclaré dans la context map (MAP-03). Il a son propre dossier, à son nom, et ses propriétaires.
Correction
Ne garder dans shared que le wiring technique et la mise en place de ses tests :
src/shared/
├── shared.module.ts
├── shared.config.ts
├── driven/prisma/ client Prisma, Unit of Work, outbox
├── driving/http/ pipe global, référence de l’API
└── __test__/ mise en place de la base, helpers transversesDéplacer un concept métier dans le bounded context qui le possède, et laisser les autres le lire à travers son public.
Voir aussi
MAP-03 encadre le shared kernel. CTX-04 tient les concepts étrangers hors du modèle.