Le plus grand problème en communication, c’est d’avoir l’illusion qu’elle a eu lieu.
George Bernard Shaw
Nom
Contractualiser
Déclaration
Pour interagir, les services partagent des contrats et non leur logique et leurs données métier. Ainsi, la logique et les données métier d’un service ne sont accessibles que via ses interfaces contractualisées.
Ces interfaces peuvent être graphiques (GUI) ou programmatiques (API).
Raisonnement
- Empêcher une complexité accidentelle causée par des dépendances cachées.
- Expliciter les interactions entre services.
- Appliquer le principe d’autonomisation et de couplage faible.
Implications
- Implémenter des interfaces basées sur des protocoles standards : p. ex. REST, AMQP, MLLP, FHIR, SOAP, JMS, etc.
- Implémenter des interfaces compréhensibles.
- Documenter les interfaces.
Exemples
Mauvais
Le service Gestion des patients ne fournit pas d’interface officielle pour la récupération des données de patients. Si bien que les services externes qui nécessitent ces données y accèdent par la base de données. Le modèle de données étant propre au fonctionnement du service de Gestion de patients, il arrive parfois qu’il soit optimisé. Les services externes n’ont donc jamais la garantie de pouvoir récupérer les données d’une manière fiable.
Bon
Le service de Gestion des patients publie et documente ses interfaces à l’intention de ses utilisateurs qu’ils soient humains ou machines. Un changement dans la logique interne du service de Gestion des patients n’impacte pas les autres services. Tout changement de contrat de l’interface conduit à communication du nouveau contrat d’interface aux consommateurs, qui sont explicitement connus.