Comprendre l’architecture des microservices

Définition, avantages et cas d'usage des microservices

 
Les microservices sont devenus ces dernières années une approche incontournable dans le développement d’applications d'entreprise. Basée sur une architecture logicielle fragmentée en petits services indépendants, cette approche connaît un engouement croissant de la part des DSI et des équipes techniques pour les nombreux avantages qu’elle procure.
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 ?
 
 
 

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.

Saisissez votre prénom
Saisissez votre nom
Saisissez votre fonction
Saisissez une adresse électronique valide
Saisissez un numéro de téléphone valide
Saisissez le nom de votre société
Sélectionnez le nombre d'employés
Choisissez un pays valide
Accepter toutes les divulgations ci-dessous.
By registering I confirm that I have read and agree to the Privacy Statement.
Ce champ est obligatoire.
 
 

Cas d’usage des microservices

De par leur architecture fragmentée, les microservices permettent de faire évoluer plus facilement certains types d'applications métier et d'absorber des montées en charge. On les retrouve utilisés dans plusieurs cas d'usages typiques.

Applications métier complexes

Les applications métier des grandes entreprises sont souvent critiques, volumineuses et supports de nombreux processus internes. Ce sont donc de très bons candidats pour une modernisation via une architecture 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.
Autant de traitements qui peuvent être découpés sous forme de microservices, offrant :
  • 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.

E-commerce et retail

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.

Applications web

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 ?

Adopter les microservices dans une organisation nécessite de repenser certains aspects des opérations logicielles afin d'orchestrer et gérer efficacement des dizaines voire des centaines de services. La taille des microservices est un facteur clé de réussite. Des services trop gros tendent à reproduire les travers d'un monolithe. À l'inverse, des services minuscules complexifient la maintenance. Il est recommandé de viser des services de quelques dizaines de milliers de lignes de code. Le dialogue entre développeurs et teams opérationnelles est également indispensable pour industrialiser et automatiser au maximum la livraison continue des services dans un environnement IT hybride, à l'aide d'outils d'intégration et de déploiement continus (CI/CD) comme Jenkins ou CircleCI. Pour superviser la disponibilité et les performances de chaque service, des solutions de monitoring et de logging (Datadog, Splunk...) centralisent les métriques clés. Une API gateway est également requise en façade pour exposer les API des différents services et gérer des aspects transverses : routage, résilience, authentification, quotas, analytics... Enfin, tout un écosystème open source de services réseau (discovery service, config server, service mesh comme Istio...) ainsi que des outils de gestion des API et des schémas de données (MuleSoft, Azure API Management...) permettent de connecter, sécuriser et coordonner les microservices entre eux. 
 
 

L’avenir des microservices

Portés par l'essor du cloud computing, de l'internet des objets et des architectures événementielles, les microservices sont promis à un bel avenir et à une adoption croissante. De nouveaux standards et concepts technologiques complètent cet écosystème. 

Le cloud native

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.

L’internet des objets

Les objets connectés qui se multiplient génèrent une quantité massive de données à ingérer et analyser en temps réel.
Les microservices et l'approche événementielle permettent de traiter efficacement ces flux pour alimenter des cas d'usage d'intelligence augmentée.

Le maillage de services

Le service mesh apporte une couche dédiée pour simplifier l’interconnexion de services : discovery, load balancing, chiffrement, monitoring, traçage...
Des projets open source comme Istio ou Linkerd se positionnent comme des standards pour la mise en réseau des microservices.

L’observabilité

Comprendre le comportement d'un ensemble de microservices complexes passe par une télémétrie approfondie de chaque service et de leurs dépendances : logs, métriques, tracing… Des standards observability émergent pour consolider ces données éparses.
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 !
 

FAQ : Questions fréquemment posées

 

Qu’est-ce que le pattern API Gateway utilisé dans les architectures microservices ?

Le pattern API Gateway est une passerelle qui permet de centraliser et sécuriser les appels aux différents microservices d'une application.

Quels langages de programmation utiliser pour développer des microservices ?

Les langages les plus populaires pour les microservices sont Java, JavaScript/Node.js et Python, mais de nombreux autres langages comme .NET, Go ou PHP sont aussi utilisés.

Comment gérer la cohérence des données avec des microservices ?

La segmentation de l'application en microservices autonomes complique la gestion de la cohérence des données, précédemment centralisées dans un monolithe. Plusieurs approches sont possibles : réplication de données, gestion de transactions distribuées, événements de domaine, API management...
 

Prochaines étapes

 

demo

Démarrez votre essai gratuit dès maintenant.

Succès clients

Vous voulez en savoir plus ? Découvrez les Témoignages de nos clients !

 
 
 

Le Glossaire de l’IA

Le Glossaire de l’Intelligence Artificielle
 

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.