Microservices
Services indépendants organisés par domaine, responsables de la logique métier, de la persistance et des événements principaux du système.
Qu’est-ce qu’un microservice dans cette architecture ?
Un microservice est une unité fonctionnelle responsable d’un domaine ou d’un bounded context précis.
Par exemple :
- utilisateurs
- produits
- commandes
- paiements
- inventaire
- notifications
Chaque service doit avoir un objectif clair et des frontières compréhensibles.
Ce qui vit à l’intérieur d’un microservice
API Layer
Expose des endpoints ou des interfaces d’entrée.
Application Layer
Orchestre les cas d’usage.
Domain Layer
Contient les règles, les entités, les value objects et la logique principale du domaine.
Infrastructure Layer
Se connecte aux bases de données, aux files d’attente, aux clients externes et aux détails techniques.
Responsabilités principales
- Implémenter les règles métier
- Valider les invariants du domaine
- Persister les données
- Publier les événements pertinents
- Maintenir des contrats clairs
Une base de données par service
Une pratique courante consiste à ce que chaque microservice ait le contrôle de sa propre persistance.
Cela permet de :
- réduire le couplage
- protéger le domaine
- éviter la dépendance directe entre services
Partager une même base de données entre plusieurs services conduit généralement à des couplages difficiles à gouverner.
Avantages
- Des frontières plus claires par domaine
- Des déploiements indépendants
- Une évolution découplée
- Un ownership d’équipe mieux défini
Risques
- Des services trop petits sans raison claire
- Trop de communication synchrone entre les services
- Des contrats mal définis
- Une cohérence distribuée mal résolue
- Une gouvernance faible
Comment se connectent-ils ?
Les microservices peuvent se connecter :
- de manière synchrone, via des APIs
- de manière asynchrone, via des événements
En règle générale :
- utiliser le mode synchrone lorsqu’une réponse immédiate est nécessaire
- utiliser le mode asynchrone lorsqu’on recherche un découplage temporel
Exemple pratique
ms-orders peut :
- recevoir une demande de création de commande
- valider les règles du domaine
- persister la commande
- publier
OrderPlaced
Ensuite, d’autres services réagissent à cet événement selon leur responsabilité.
Résumé
Les microservices constituent le cœur fonctionnel de l’architecture. Leur valeur réside dans la séparation du domaine en frontières claires, et non dans la fragmentation arbitraire du système.