Architecture MicroServices
Principes
Les microservices sont apparus vers 2015 avec les services REST.
Un microservice est une unité fonctionnelle atomique. Elle porte une fonctionnalité précise, logique et cohérente. Celle-ci se développe, se déploie, s'exécute et gère ses données indendamment des autres services. Les microservices communiquent entre eux au travers d'appels asynchrones sur le formalisme JSON.
Les principes de cette architecture sont:
- une adhérence très faible,
- la minification du run,
- la scalabilité des services,
- une communication basée sur des messages.
Microservice
Leur implémentation est libre. Le formalisme est restreint:
- au format d'échange
- à la gestion des canaux d'échanges.
Un microservice possède:
- son format d'échange
- sa base de données
- ses librairies utilitaires.
Toute dépendance vers un élément partagé contredit le principe de couplage faible.
Les services se sollicitent en cascade via Messaging ou REST. Une bonne organisation est alors indispensable.
Les services doivent être classifiés afin d'être gouvernables.
Echanges asynchrones
Les échanges asynchrones répondent aux problématiques suivantes:
- adhérence faible
- Pas de contentions physiques liés aux attentes
- Robustesse de la solution
Références Async IO:
Une comparaison des échanges REST vs Messaging pour les microservices est ici.
Les patterns d'échanges de cette architecture sont:
Apache Kafka
Le cœur de cette architecture est le gestionnaire de messages. Apache Kafka est LA référence pour la mise en oeuvre.
Quelques références sur la montée en charge et la performance:
Adhérences
Avantages | Inconvénients | |
---|---|---|
Interconnexion (lib, protocole, etc) | Le client s'adapte: lib natives spécifiques à utiliser. | |
Propagation des changements (format et version) | Format et versions à gérer en gouvernance. | |
Run (processus) | Pas de process en attente d'un autre. | Haute disponibilité du MOM. Empilage des messages dans les files. |
Exploitation | Gestion et suivi des queues. |
Synthèse
Avantages | Inconvénients | |
---|---|---|
Gouvernance | Approche fonctionnelle. | Grain trop fin au niveau service. Classifier les services pour abstraire la complexité. |
Développement | Périmètre fonctionnel clair et contraint. Testabilité forte. | Conception logicielle indispensable. Compétences pluridisciplinaires des développeurs. |
Exploitabilité | Les services sont interchangeables et évolutifs. | Très nombreux éléments à surveiller. Pré-requis:
|
Infrastructure | Infra résiliente aux pannes. Scalabilité au niveau service. | Nombreux processus. |
Middleware Solutions https://www.middleware-solutions.fr