Comprendre l’architecture des microservices
Définition, avantages et cas d'usage des microservices
Mais au fait, qu’entend-on réellement par « microservices » ? Quels sont leurs avantages par rapport à une architecture monolithique classique ? Dans quel cas sont-ils pertinents ?
Sommaire
Qu’est-ce que l’architecture microservices ?
Les microservices sont une approche logicielle qui consiste à décomposer des applications monolithiques en un ensemble de services indépendants, de petite taille et spécialisés par fonctionnalité métier.
Concrètement, là où une architecture traditionnelle va regrouper la totalité de ses fonctionnalités et de sa logique métier dans un codebase unique et couplé, l'approche microservices procède à un découpage en petits services, indépendants et faiblement couplés.
Chaque microservice possède alors ses propres caractéristiques :
- Son propre code source dans un repository dédié (Git, SVN...) ;
- Ses propres langages et frameworks de programmation spécialisés pour le service. Par exemple un microservice Node.js de gestion des notifications, un microservice Java de traitement de données analytiques, etc. ;
- Ses propres environnements d'exécution (machines virtuelles, conteneurs...) et ressources allouées côté infrastructure ;
- Ses propres processus de build, tests et déploiement en continu via des outils d'intégration/livraison continue (CI/CD) ;
- Sa propre base de données persistante ou cache si nécessaire pour ce service ;
- Ses propres API REST documentées au format OpenAPI pour permettre à d'autres services de consommer ses fonctionnalités (API : definition).
Contrairement à un monolithe où les fonctions partagent le même espace mémoire, les microservices utilisent des appels d'API distants (REST, gRPC...) pour communiquer :
- Appels synchrones : attente de la réponse pour continuer le traitement ;
- Appels asynchrones : ne pas bloquer en attendant la réponse.
Cette communication est prise en charge par un API Gateway qui expose les API des différents services et gère les accès transverses (sécurité, monitoring, routage...).
Les avantages d'une telle segmentation :
- Agilité accrue des équipes et des releases ;
- Scalabilité ciblée sur les services critiques ;
- Résilience par isolation des pannes éventuelles ;
- Innovation continue service par service ;
- Alignement plus naturel sur les métiers.
Mais cela suppose également un fort investissement sur l'orchestration de l'ensemble.
Avantages et inconvénients des microservices
Adopter une approche microservices pour une application présente de nombreux bénéfices potentiels, mais requiert également de prendre en compte plusieurs inconvénients inhérents à ce style d'architecture distribuée.
Les avantages sont :
- Scalabilité : la capacité de scale verticalement et horizontalement au niveau du service permet d’absorber des montées en charge exceptionnelles ;
- Résilience : le couplage lâche entre services limite la propagation des pannes et l’impact sur l’ensemble de l’application ;
- Agilité des équipes : les équipes peuvent être organisées par services métier, avec peu de dépendances entre elles ;
- Productivité : le développement en langages spécialisés pour chaque service accélère le time-to market ;
- Maintenance facilitée : la mise à jour d’un service est simplifiée, sans impacter les autres services ;
- Innovation continue : chaque service peut rapidement intégrer de nouvelles technologies / design (voir API Design).
Les inconvénients :
- Complexité opérationnelle avec la gestion de nombreux services aux architectures hétérogènes;
- Surcoût en termes de ressources techniques et financières ;
- Difficulté de maintenir la cohérence des données entre services ;
- Latence cumulée des appels multiples entre microservices.
Le glossaire du CRM
44 définitions pour briller à l’ère du digital. Remplissez ce formulaire et retrouvez les expressions indispensables des professionnels du secteur afin de maîtriser l’environnement CRM.
Cas d’usage des microservices
Par exemple, dans le secteur bancaire, assurantiel et télécoms, les SI gravitent autour de multiples fonctionnalités :
- Souscription de contrats ;
- Gestion des clients ;
- Facturation ;
- Règlements ;
- Reporting réglementaire ;Etc.
- Une agilité retrouvée pour les équipes métiers ;
- La scalabilité élastique des services critiques ;
- La résilience face aux pannes d'un service ;
- L'isolation des évolutions technologiques.
Les applications de vente en ligne doivent absorber des pics massifs de trafic, tout en offrant performance et disponibilité.
Les microservices sont idéals pour scale de manière flexible certains services :
- Le catalogue produits ;
- Le moteur de recherche ;
- Le panier ;
- La gestion des commandes ;
- Les paiements ;Etc.
Ils apportent ainsi scalabilité et résilience à la demande.
Les sites web (site vitrine, intranet d'entreprise, extranet...) gagnent aussi en souplesse avec des microservices sur certains composants :
- Moteur de recommandations produits ;
- Chatbot de support client ;
- Gestion de contenu éditorial ;
- Espace personnel du compte client.
Cela facilite les mises à jour fréquentes sans risque sur le frontend.
Les microservices permettent donc de fréquentes itérations sur des applications à fort trafic ou supports de processus critiques.
Comment mettre en place des microservices ?
L’avenir des microservices
De plus en plus de microservices sont conçus pour et depuis le cloud dès le départ. On parle alors de « cloud native », avec des technologies comme :
- Kubernetes pour l'orchestration des conteneurs ;
- Istio pour la gestion du maillage de services ;
- Serverless pour l'exécution événementielle de code ;
- Knative pour les fonctions sans serveur.
Ces briques accélèrent et simplifient le déploiement des microservices dans le cloud.
Les microservices et l'approche événementielle permettent de traiter efficacement ces flux pour alimenter des cas d'usage d'intelligence augmentée.
Des projets open source comme Istio ou Linkerd se positionnent comme des standards pour la mise en réseau des microservices.
Les microservices continuent d’évoluer, portés par les besoins d'agilité du marché et les nouveaux usages du cloud computing et du edge. Leur adoption ne devrait donc que croître dans les années à venir !
Qu’est-ce que le pattern API Gateway utilisé dans les architectures microservices ?
Quels langages de programmation utiliser pour développer des microservices ?
Comment gérer la cohérence des données avec des microservices ?
Prochaines étapes
Le Glossaire de l’IA
Téléchargez ce glossaire contenant 32 définitions pour gagner en confiance à l'ère de l'IA.
Ce glossaire est destiné aux professionnels qui cherchent à se familiariser avec ces terminologies spécifiques à l’IA, il vous permettra de maîtriser les termes essentiels et d’optimiser votre utilisation de cette nouvelle forme d’intelligence.
Une plateforme unique. Des possibilités infinies.
Recentrez-vous sur vos clients et développez votre entreprise.
Des questions ? Appelez-nous au (+33) 8 05 08 21 31.