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.