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 ?