LE GUIDE ULTIME

Architecture Microservices

Découvrez tout ce qu’il faut savoir sur l’architecture microservices, ses principaux avantages et sur ce qui différencie les microservices de la SOA ou encore l’architecture monolithique des API.

Introduction

Ces dernières années, nous avons pu assister à un certain engouement pour les microservices, parfois également appelés « architecture microservices ». Et ce n’est vraiment pas une surprise. À mesure que les applications logicielles deviennent plus complexes, elles deviennent aussi plus volumineuses et plus difficiles à gérer, à mettre à jour et à entretenir.

L’architecture microservices représente une approche plutôt nouvelle du développement logiciel, qui s’attaque à ce problème en divisant les logiciels complexes en plusieurs éléments constitutifs ou services indépendants. Ces services modulaires peuvent être déployés et gérés individuellement, ce qui accroît la solidité des grosses applications face aux changements.

Le style architectural des microservices remonte à 2005, lorsque Peter Rogers, père de l’information orientée vers les ressources, a inventé le terme « Micro-Web-Services ». Ayant pour objectif de créer une architecture logicielle plus flexible et orientée vers les services, il a réussi à définir les principes d’une plateforme de microservices bien conçue. Deux ans plus tard, l’architecte logiciel Juval Löwy a développé l’idée d’une utilisation granulaire des services et a inspiré plusieurs études de cas dirigées par des experts et aux résultats prometteurs.

Aujourd’hui, l’architecture microservices n’est pas seulement considérée comme un sujet d’actualité, mais comme l’avenir en matière de développement et de maintenance des logiciels.

 

Qu’est-ce que l’architecture microservices ?

L’architecture microservices désigne un style particulier de conception des applications logicielles. Contrairement aux styles architecturaux traditionnels qui visent à construire un logiciel comme une seule et unique unité, l’architecture microservices repose sur une approche modulaire. Ainsi, les applications sont conçues comme des suites comprenant plusieurs microservices qui peuvent être déployés et gérés indépendamment.

Mais que sont les microservices exactement ? Même s’il n’y a pas définition claire des microservices en tant que tels, cette approche révolutionnaire du développement logiciel présente quelques caractéristiques propres.

L’une des caractéristiques principales de ce style architectural est la façon dont il structure une application complexe. Le logiciel est décomposé en plusieurs composants qui sont construits comme des services indépendamment remplaçables et évolutifs. Ces services peuvent être définis comme des procédés qui communiquent souvent sur un réseau à l’aide de protocoles qui ne dépendent pas de la technologie.

Les microservices sont aussi conçus pour sadapter aux capacités métier. Et étant donné qu’ils sont décentralisés et de petite taille, ils offrent beaucoup de flexibilité quant aux langages de programmation, au matériel et aux environnements logiciels.

 

Comment fonctionnent les microservices ?

L’idée de services à couplage faible et offrant de multiples options de maintenance et de test semble susciter l’intérêt des entreprises confrontées à des défis IT liés à la complexité des applications. Mais avant de revoir le système en place, il est vital de bien saisir le fonctionnement des microservices. Afin de créer une architecture modulaire fonctionnelle, une entreprise doit d’abord identifier ses capacités et définir les services qui fonctionneront indépendamment les uns des autres.

Il est nécessaire d’élaborer un diagramme d’architecture de microservices pour mettre en lumière les dépendances qui pourraient entraver la flexibilité de chaque service. Il est indispensable de s’assurer qu’une erreur au sein d’une partie individuelle n’impacterait pas tout le système.

Cependant, même si les microservices sont conçus pour fonctionner de manière indépendante, ils peuvent avoir un certain degré de dépendance à d’autres microservices et donc avoir besoin de communiquer entre eux. Cette communication se fait via l’utilisation d’API (Application Programming Interfaces), et de protocoles synchrones ou asynchrones comme HTTP/REST ou AMQP.

Idéalement, chaque microservice possède sa propre base de données afin de décentraliser les responsabilités et de gérer les mises à jour individuellement. L’utilisation du modèle « Base de données par service » déclenche la mise en place d’une saga (saga pattern), c’est-à-dire une transaction qui s’étend sur plusieurs services, afin de maintenir la cohérence des données.

Cependant, il n’est pas rare que chaque microservice développe de plus en plus de dépendances de service avec le temps. C’est un phénomène normal, qui arrive lorsque les services commencent à se développer et à affecter le nombre d’instances, d’emplacements et de protocoles.

Les passerelles API aident à éviter les problèmes qui découlent de ces changements. Et voici comment cela fonctionne : une entrée API prend toutes les requêtes API et les achemine une à une vers le microservice le plus approprié. Elle invoque également les services back-end et regroupe les résultats pour identifier le meilleur chemin. Elle sert de point d’entrée pour chaque requête, organise toutes les saisies, et crée une expérience utilisateur simplifiée.

POSTER GRATUIT

17 métriques pour développer de meilleurs logiciels.

Découvrez les métriques clés qui aideront les équipes DevOps, les CTO, les Product Managers et les responsables de l’ingénierie à améliorer l’efficacité de l’ingénierie et à développer de meilleurs logiciels. 

Obtenir une copie gratuite
FR-17-Metrics-Poster-Resource-Page-Thumbnail

Quels sont les principaux avantages de l’architecture microservices ?

Les microservices présentent un certain nombre d’avantages pour les entreprises. Après tout, les applications big data font fureur et nécessitent une architecture logicielle qui réponde au mieux aux besoins des opérations, de l’équipe de développement et de l’utilisateur final.

Les dix avantages principaux des microservices sont décrits ci-dessous :

  1. Accessibilité : étant donné que les microservices sont déployés séparément et communiquent par le biais d'API, le code et les applications deviennent plus accessibles aux employés ne faisant pas partie des équipes de développement. L'approche de conception modulaire aide également à comprendre les différents services offerts par une entreprise, y compris leurs fonctions spécifiques, sans se soucier des autres parties.

  2. Gestion des erreurs : si une architecture microservices est implémentée correctement, détecter et isoler les erreurs devient plus simple. Lorsqu’une erreur survient, les développeurs savent exactement où chercher, ce qui permet d’économiser des efforts et du temps précieux. Et ne réparer qu’un seul service indépendamment signifie que les autres codes ne seront pas affectés et qu’il n’est pas nécessaire de déployer l’ensemble de l’application.

  3. Maintenance : cet avantage va de pair avec les deux précédents. L’architecture microservices facilite la maintenance et la gestion des services. En effet, chaque service peut être géré par une équipe différente puisqu’il est associé à un processus unique doté de sa propre base de données. De plus, il est possible de mettre à jour chaque service sans suspendre le système logiciel dans son ensemble.

  4. Adaptabilité : les microservices sont faiblement couplés et communiquent de manière standardisée. Mais puisqu’ils sont construits séparément, ils ne partagent ni le même langage de programmation, ni la même technologie. Autrement dit, chaque service peut être conçu de la manière qui correspond le mieux aux fonctions qu’il doit remplir.

  5. Évolutivité : à mesure que les besoins de l’entreprise changent, il peut s’avérer nécessaire d’ajouter de nouvelles fonctionnalités aux services offerts. Dans les approches architecturales traditionnelles qui considèrent les logiciels comme un tout, il faut à cet effet s’immiscer dans l’ensemble du logiciel de l’entreprise, risquant ainsi d’endommager des fonctionnalités existantes. Grâce à son approche modulaire, l’architecture microservices évite ce problème.

  6. Extensibilité : l’un des avantages principaux des microservices est la possibilité de les étendre horizontalement. Cela signifie qu’un service déployé peut être dupliqué afin d’éviter des obstacles liés à une lente mise en œuvre. Un autre moyen d’améliorer la performance consiste à exécuter le service sur un matériel plus puissant ou sur plusieurs machines qui traitent les données en parallèle.

  7. Contrôle et suivi : les composants logiciels uniques sont bien plus simples à tester qu’une application complexe. Si chaque microservice est testé convenablement, le logiciel entier aura tendance à être plus solide et fiable. Et être capable d’isoler seulement certaines parties de l’application permet un meilleur suivi et une meilleure gestion de la sécurité.

  8. Exploitation : durant les deux dernières années, les techniques d’automatisation se sont nettement améliorées, ce qui a favorisé l’évolution du cloud et d’AWS. Grâce aux techniques d’automatisation des infrastructures et au principe d’exploitation continue, la complexité opérationnelle de la création, de l’implémentation et du test des microservices s’est drastiquement réduite.

  9. Intégration : un logiciel doit être capable d’intégrer autant de fonctionnalités et de services que nécessaire. Même si cela parait logique, l’intégration de nouveaux composants logiciels dans une application déjà existante peut représenter un défi pour le développement de logiciel traditionnel. Grâce à l’utilisation d’outils d’intégration continue, les microservices ont pu totalement révolutionner ce processus.

  10. Réutilisabilité : un avantage souvent oublié des microservices est le fait que les composants indépendants qui composent l’intégralité du logiciel peuvent être réutilisés pour d’autres projets. En réutilisant les processus efficaces moyennant quelques modifications mineures, une équipe de développement n’a pas besoin de déployer des trésors de créativité et consomme moins de ressources.

 

Comment se lancer dans l’architecture microservices ?

Passer d’une architecture logicielle traditionnelle à un nouveau style architectural peut sembler intimidant à première vue. Cependant, puisque l’architecture microservices a déjà été testée et utilisée par de nombreuses entreprises (voir quelques exemples ci-après), certaines bonnes pratiques ont pu voir le jour ces dix dernières années.

Mais avant de commencer, il est important de se rappeler que chaque microservice peut être développé dans un langage de programmation et une technologie différents. Ainsi, la technologie d’implémentation des services individuels est beaucoup moins importante que les technologies globales d’intégration et de communication.

Être sur la même longueur d’onde : lors de la transition vers une architecture microservices, chaque équipe impliquée doit être bien préparée. En fin de compte, ce style architectural ne consiste pas seulement à diviser une grosse application, mais appelle également à un changement de culture et de mentalité dans l’entreprise. Chaque équipe doit être réellement indépendante et, en même temps, les normes de communication, le partage de la documentation API et les formats de journalisation sont absolument indispensables à la réussite de la mise en œuvre.

Définir le style d’architecture visé : l’architecture microservices est conçue pour rendre le paysage logiciel d’une entreprise moins complexe. Mais si elle n’est pas conçue ou gérée de la bonne manière, elle peut engendrer encore plus de complexité, voire le chaos. Avant de commencer avec les microservices, il est important de définir le style d’architecture cible que l’on veut adopter. Éliminer les dépendances contradictoires et vérifier que les données restent cohérentes dans tous les microservices est essentiel. Une mise à jour réseau peut s’avérer nécessaire pour éviter les trafics entre les services.

Surveiller en permanence : diviser une grosse application en plusieurs petites applications signifie que chacune d’entre elles produit un grand nombre de journaux qui doivent être analysés. Il importe d’établir un plan précis pour surveiller régulièrement les microservices individuels à l’aide de notifications de temps de réponse ou d’erreur. Des tableaux de bord, des journaux, des dispositifs de surveillance et des outils de Value Stream Management facilitent ces tâches et créent une vue d’ensemble indispensable.

 

Exemples d’architecture microservices

En 2009, le géant technologique Netflix a été le pionnier de l’architecture microservices en tournant le dos l’architecture monolithique traditionnelle. En fait, c’est l’un des facteurs à l’origine de la croissance phénoménale de la plateforme : les microservices ont limité les risques de panne de serveur et ont permis aux développeurs de réparer les petits composants de code sans affecter l’interface du site. Il n’est donc pas surprenant de voir d’autres entreprises suivre le chemin de Netflix :

  • Spotify : la plateforme de streaming musical a plus de 75 millions d’utilisateurs par mois. Avec plus de 90 équipes, 600 développeurs et cinq bureaux de développement dans le monde, Spotify se devait de réduire les dépendances afin d’éviter la synchronisation. Grâce à de petits microservices et à des équipes autonomes, les défaillances du système sont minimes et n’affectent pas l’expérience utilisateur.

  • Zalando : l’entreprise d’e-commerce européenne est un autre exemple de transition réussie vers les microservices. Lorsque Zalando a adopté l’approche modulaire, elle a également introduit STUPS, un ensemble d’outils « Platform-as-a-service » sur AWS qui peut être utilisé par plusieurs équipes autonomes. Cet ensemble d’outils permet aux départements de fixer et d’atteindre rapidement leurs objectifs de reporting.

  • Gruner + Jahr : ces deux dernières années, la maison d’édition allemande Gruner + Jahr a décentralisé ses applications en utilisant de plus en plus de fournisseurs de cloud, y compris AWS, GCP et Microsoft Azure. Avec l’aide de LeanIX Value Stream Management, l’entreprise a pu créer un pont entre son paysage informatique et un grand nombre de services de cloud.
20 questions clés auxquelles répondre à l'aide d'un catalogue de microservices

Poster

20 questions clés auxquelles répondre à l'aide d'un catalogue de..

Téléchargez ce poster pour découvrir 20 questions clés auxquelles il est possible de répondre grâce à un catalogue de microservices.
Microservices @ LeanIX - then, now and tomorrow

Video

Microservices @ LeanIX - then, now and tomorrow

Live Recording - EA Connect Day 2020 

Per Bernhardt - Staff Software Engineer - LeanIX

 

Maximize the Development Efficiency of Your Microservices Landscape with LeanIX

Webinar

Maximize the Development Efficiency of Your Microservices Landscape with..

Watch this on-demand webinar hosted by The Open Group, where LeanIX shares insights on how we can help bring order and clarity to your complex microservices architecture.

Efficiently Navigate your Microservices with LeanIX

Webinar

Efficiently Navigate your Microservices with LeanIX

Watch this interview-style webinar on how to build reliable software using a microservice catalog - including a product demo

Quelle est la différence entre l’architecture microservices et la SOA ?

Même si l’architecture microservices et l’architecture orientée services (Service-oriented architecture - SOA) ont des points communs, il existe tout de même quelques différences dans l’approche et le style architectural. Les microservices et la SOA utilisent tous deux les services comme des éléments architecturaux qui échangent sur un réseau via des protocoles. Cependant, alors que le stockage des données est partagé par tous les services de SOA, chaque service possède sa propre base de données dans l’approche microservices.

Les microservices ont également une taille et une portée nettement plus petites et peuvent être déployés indépendamment. Dans la SOA, l’enterprise service bus (ESP) qui fournit des connexions point à point entre les services peut potentiellement causer une panne de l’ensemble du système. Cependant, il est important de noter que la SOA peut également être conçue selon un modèle monolithique.

 

Quelle est la différence entre les microservices et l’architecture monolithique ?

L’architecture monolithique peut être considérée comme un pendant de l’architecture microservices. C’est l’approche la plus traditionnelle en matière de développement logiciel dans laquelle une application est conçue comme une seule unité par opposition aux unités à faible couplage, principale caractéristique de l’architecture microservices.

Un logiciel monolithique comprend une base de données unique, une interface utilisateur, et une application côté serveur, et ne peut, par conséquent, qu’être exécuté dans son ensemble. Cela signifie aussi qu’une seule erreur peut affecter le système entier et les équipes de développement doivent déployer une nouvelle version de l’application côté serveur lorsque des modifications sont apportées.

Les microservices permettent de surmonter ces problèmes en étant des applications peu volumineuses, fonctionnelles et autonomes qui peuvent être gérées et mises à jour de manière indépendante.

 

Quelle est la différence entre l’architecture microservices et une API ?

Lorsqu’on parle des microservices, les API ne sont jamais loin. Mais que sont les API exactement et comment est-ce qu’elles se différencient des microservices ? API veut dire application programming interface (ou en français interface de programmation d’application) et peut être considérée comme un contrat d’actions qui sont demandées à un service particulier.

Si l’architecture microservices désigne une technique de développement de logiciel, un microservice désigne quant à lui une petite application autonome.

Les APIs représentent une portion importante de l’architecture microservices. Elles permettent aux différents services de communiquer entre eux par la voie de protocoles standardisés, ainsi que d’interactions directes au sein du service lui-même.

 

Microservices et gouvernance Kubernetes

Alors que la gouvernance des systèmes monolithiques est centralisée, celle des microservices est totalement décentralisée et nécessite donc des mécanismes de gouvernance appropriés. Ainsi, plusieurs entreprises utilisent le système open-source Kubernetes, basé sur des conteneurs, pour héberger leur architecture basée sur des microservices.

Conçu à l’origine par Google, Kubernetes a été développé pour fournir une plateforme flexible et des outils de CI pour une gouvernance efficace des microservices. Mais à quoi cela ressemble-t-il dans la pratique ? Kubernetes permet aux utilisateurs de conteneuriser des applications afin de pouvoir les intégrer à un environnement en cluster.

Un conteneur comprend tous les packages nécessaires pour faire fonctionner un service. De cette manière, les microservices sont bien plus faciles à configurer, à mesurer et à déployer.

 

Conclusion

Les raisons pour lesquelles de plus en plus d’entreprises envisagent de se tourner vers une architecture microservices sont nombreuses. L’une d’elles est directement liée à la possibilité de découpler les services en recourant à des fournisseurs de services cloud. Sans oublier les difficultés liées à la maintenance d’un logiciel monolithique en constante évolution, qui comporte des risques débilitants et peut considérablement remettre en question la croissance et la réussite des entreprises.

Toutefois, il est important de se rappeler qu’une transition vers les microservices nécessite d’être réfléchie. Après tout, une mise en œuvre réussie ne réside pas dans chaque service, mais dans la globalité des technologies et outils utilisés pour la gouvernance, l’intégration et la communication.

POSTER GRATUIT

20 questions clés auxquelles répondre à l’aide d’un catalogue de microservices

Découvrez 20 questions essentielles auxquelles répondre facilement grâce à un catalogue de microservices.

Obtenir une copie gratuite

FR-Cloud-Microservice-Catalog-Poster_Resource_Page_Thumbnail
check

Les catalogues de microservices aident les équipes DevOps à visualiser leur environnement de microservices et à obtenir des détails sur le ownership, les dépendances entre services et le contexte métier.

check

20 questions essentielles auxquelles un catalogue de microservices peut aider à répondre.

check

Découvrez l’utilité de disposer de catalogues de microservices.

Réponses aux questions fréquemment posées sur les microservices et l’architecture microservices

Qu’entend-on par microservices et comment communiquent-ils entre eux ?

L’architecture microservices est une communication basée sur les messages. La communication n’est pas directe, mais les messages des services sont transmis à un agent/système de messages par le biais duquel d’autres microservices peuvent traiter les messages par la suite.

Quels sont des exemples d’utilisation des microservices ?

  • Spotify : la plateforme de streaming musical a plus de 75 millions d’utilisateurs par mois. Avec plus de 90 équipes, 600 développeurs et cinq bureaux de développement dans le monde, Spotify se devait de réduire les dépendances afin d’éviter la synchronisation. Grâce à des microservices plus petits et à des équipes autonomes, les défaillances du système restent minimes et n’affectent pas l’expérience utilisateur.
  • Zalando : l’entreprise d’e-commerce européenne est un autre exemple de transition vers les microservices réussie. Lorsque Zalando a adopté l’approche modulaire, elle a également introduit STUPS, un ensemble d’outils « Platform-as-a-service » sur AWS qui peut être utilisé par plusieurs équipes autonomes. Cet ensemble d’outils permet aux départements de fixer et d’atteindre rapidement leurs objectifs de reporting.
  • Gruner + Jahr : ces deux dernières années, la maison d’édition allemande Gruner + Jahr a décentralisé ses applications en utilisant de plus en plus de fournisseurs de cloud, y compris AWS, GCP et Microsoft Azure. Avec l’aide du LeanIX Value Stream Management, l’entreprise a pu créer un pont entre son architecture d’entreprise et un grand nombre de services cloud.

Quelles est la différence entre les API et les Microservices ?

API veut dire application programming interface et peut être considérée comme un contrat d’actions qui sont demandées à un service particulier.

Si l’architecture microservices désigne une technique de développement de logiciel, un microservice désigne quant à lui une petite application autonome.