Shared Kernel et contrats
Quels éléments il convient de partager entre dépôts et services, et comment éviter que ce qui est partagé ne devienne une source de couplage.
Qu’est-ce qu’un Shared Kernel ?
C’est un petit ensemble de concepts partagés entre plusieurs parties du système.
Il peut inclure :
- des value objects très stables
- des contrats techniques minimaux
- des utilitaires réellement transverses
- des types communs
Ce qu’il convient de partager
UUIDEmailMoney- des interfaces techniques très stables
- certains événements ou contrats bien gouvernés
Ce qu’il ne convient pas trop de partager
- les modèles complets du domaine
- les DTOs qui changent fréquemment
- la logique métier
- les structures qui obligent tout le monde à versionner en même temps
Risque principal
Si le shared kernel grandit sans contrôle, il devient une dépendance globale qui :
- couple les équipes
- oblige à coordonner les releases
- rend difficile l’évolution indépendante
Contrats explicites
Au-delà du shared kernel, l’important est qu’il existe des contrats clairs entre les composants :
- APIs
- événements
- interfaces
- schemas
Partager ne devrait pas signifier mélanger les contextes.
Résumé
Un petit shared kernel peut aider. Un grand recrée souvent le problème que vous tentiez d’éviter : le couplage.