Microservices

Une architecture microservices est un modèle de conception logicielle dans lequel une application est composée de services autonomes, indépendants et faiblement couplés, chacun responsable d’une fonction métier spécifique, communiquant entre eux via des APIs standardisées (souvent HTTP/REST ou gRPC).

Au lieu de construire une application comme un bloc monolithique (tout en un seul programme), l’architecture microservices la découpe en petits modules autonomes, comme des mini-applications :

  • Un service gère les utilisateurs,
  • un autre les paiements,
  • un autre les recommandations,
  • etc.

Chaque service :

  • a sa propre base de données,
  • peut être développé, déployé et mis à l’échelle indépendamment,
  • est généralement technologiquement autonome (on peut écrire un service en Python, un autre en Go, etc.).

Analogie simple :
Un monolithe = une usine unique où tout se passe sous un même toit.
Des microservices = un écosystème d’artisans spécialisés, chacun dans son atelier, qui échangent des biens via un marché (l’API).

Caractéristiques clés

PrincipeExplication
AutonomieChaque service peut évoluer sans casser les autres.
Déploiement indépendantOn peut mettre à jour le service « paiement » sans toucher « profil utilisateur ».
Communication via réseauLes services parlent entre eux (HTTP, message queue, etc.) → mais cela ajoute de la latence.
RésilienceSi un service tombe, les autres peuvent continuer à fonctionner (avec gestion d’erreur).
PolyglotteChaque équipe choisit le langage et la base de données adaptés à son besoin.

Avantages… et inconvénients

Avantages :

  • Meilleure scalabilité (on scale seulement le service sous charge),
  • Indépendance des équipes (pas de coordination lourde),
  • Résilience partielle,
  • Facilite les mises à jour continues (CI/CD).

Inconvénients :

  • Complexité accrue : réseau, monitoring, logs distribués,
  • Latence entre services,
  • Données distribuées → pas de transactions ACID globales,
  • Surcoût opérationnel : besoin d’outils (Kubernetes, service mesh, observabilité).

Dans une démarche sobre : les microservices ne sont pas toujours pertinents.
Un monolithe léger (ex. : application PHP ou Python bien structurée) est souvent plus sobre, plus simple à maintenir et à sauvegarder.

Outils courants dans les architectures microservices

  • Orchestration : Kubernetes, Docker Swarm
  • Service mesh : Istio, Linkerd
  • Messaging : RabbitMQ, Apache Kafka
  • Observabilité : Prometheus + Grafana, Jaeger (tracing), ELK (logs)
  • API Gateway : Traefik, Kong, NGINX
Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.