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.
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:
Microservice
Les services doivent être classifiés afin d'être gouvernables.
Leur implémentation est libre. Le formalisme est restreint:
- au format d'échange
- à la gestion des canaux d'échanges.
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. |
Exploitabilité | Les services sont interchangeables et évolutifs. | Très nombreux éléments à surveiller. Automatisation indispensable: déploiement lourd. |
Infrastructure | Infra résiliente aux pannes. Scalabilité au niveau service. | Nombreux processus. |