|
Publié le par Davy CLAISSE

Micro-Service

Qu'est-ce qu'un Micro-Service ?

Définition

Une architecture micro-services est une façon de décomposer un système d'information en processus indépendants, faiblement couplées et spécialisés dans un périmètre donné (technique ou métier). Les micro-services communiquent entre-eux en général au moyen d'API REST ou tout API dites langage-agnostiques. Les micro-services sont les propriétaires exclusifs de leurs données.

Les architectures micro-services s'opposent par essence aux architectures monolithiques.

Dans l'idéal, un micro-service est auto-porteur, c'est-à-dire qu'il embarque son propre serveur HTTP, sa propre instance de base de donnnées, en d'autres termes, qu'il ne nécessite aucun prérequis pour son exécution.

Un exemple d'architecture micro-service

Imaginons que nous devions concevoir un serveur mail, ce type de serveur se décompose en cinq fonctionnalités distinctes :

  • Authentifier les utilisateurs.
  • Recevoir des emails.
  • Envoyer des emails.
  • Stocker des emails.
  • Fournir une interface web.

Nous aurons donc quatre micro-services et une SPA (Single Page Application) pour l'interface graphique. Un exemple d'exécution pourrait être :

  • Le micro-service de réception écoute sur le réseau.
  • Dès qu'il réceptionne un email, il le transmet au micro-service de stockage.
  • Le service de stockage enregistre l'e-mail reçu.

Comment savoir si mon architecture est micro-service ?

Il suffit de répondre aux questions suivantes, si vous n'avez que des NON, alors il y a de fortes chances que votre architecture soit effectivement orientée micro-services, sinon votre copie est à revoir :

  • Mon service requiert-il l'installation de quelque chose avant son exécution (serveur, base de données, etc) ?
  • Mon service partage-t-il ses données avec d'autres applications ?
  • Mon service pèse-t-il plusieurs centaines de méga-octets sur le disque ?
  • Mon service propose-t-il des fonctionnalités classables dans des domaines différents ?
  • Mon service n'est pas clusterisable ?