Que sont les microservices ?

Les microservices décrivent une approche architecturale cloud-native du développement logiciel qui structure une application à partir de services faiblement couplés en communication les uns avec les autres via des API ou des protocoles de messagerie. Chaque service est autonome et indépendant et exécute un processus unique. Alors que les développeurs cherchent à créer des applications évolutives et résilientes, les microservices sont devenus de plus en plus populaires.

 

Les microservices expliqués

Les microservices, Ă©galement connus sous le nom d'architecture microservices, sont un type d'architecture logicielle utilisĂ© dans le dĂ©veloppement d'applications Cloud Native. Les applications conçues selon ce modĂšle comprennent de petits composants indĂ©pendants et faiblement couplĂ©s qui peuvent ĂȘtre dĂ©ployĂ©s et qui, ensemble, fournissent les capacitĂ©s de l'application.

Dans une architecture de microservices, chaque service exécute une fonction métier distincte et communique avec d'autres microservices par le biais d'interfaces bien définies, la plupart du temps à l'aide d'API RESTful.

S'éloignant de l'application monolithique développée en une seule unité, les microservices permettent aux développeurs de construire avec des modules qu'ils peuvent développer, tester et déployer de maniÚre indépendante, ce qui accélÚre la mise sur le marché. La nature découplée des microservices permet aux développeurs d'introduire de nouveaux codes et de nouvelles fonctionnalités plus fréquemment qu'ils ne le pourraient autrement, ce qui permet aux applications modernes de suivre l'évolution des besoins des clients.

Plus de dĂ©veloppement d'applications Cloud Native, remplaçant leurs applications monolithiques hĂ©bergĂ©es par des serveurs web individuels par des applications conteneurisĂ©es, natives du cloud et rĂ©parties sur un cluster de serveurs hĂŽtes.

 

De l'architecture orientée services aux microservices

L'architecture orientée services (SOA) est apparue au début des années 2000 comme un moyen de construire de grands systÚmes distribués en les décomposant en services plus petits et faiblement couplés. L'architecture microservices est apparue comme une évolution naturelle de l'architecture SOA.

Le concept de microservices a été introduit par Fred George lors d'un atelier sur l'architecture logicielle en 2011. George avait essayé de résoudre des problÚmes d'évolutivité avec l'architecture SOA alors qu'il travaillait sur un site de commerce électronique et il a eu l'idée de construire de petits services autonomes.

L'architecture microservices a repris les principes SOA d'orientation des services et les a affinĂ©s pour les applications cloud-natives modernes. Les services Ă  gros grain de la SOA sont devenus des "micro" services Ă  grain fin et granulaire, ce qui les rend trĂšs efficaces et offre la flexibilitĂ© nĂ©cessaire pour adapter une pile technologique Ă  un service donnĂ©. L'architecture microservices a mĂȘme rĂ©duit la charge de communication en remplaçant les API SOAP encombrantes par des options lĂ©gĂšres, telles que les API REST ou les files d'attente de messages.

Les microservices ont rapidement gagné en popularité parmi les architectes de logiciels, et des entreprises comme Netflix, Amazon, The Guardian et Spotify ont commencé à adopter cette architecture.

L'architecture de microservices est à la base des avantages associés à l'application moderne et Cloud Native.

Figure 1 : L'architecture de microservices est à la base des avantages associés à l'application moderne et Cloud Native.

 

Avantages des microservices

Les microservices fournissent un framework pour construire des applications Cloud Native qui peuvent s'adapter à l'évolution des exigences de l'entreprise. Les innombrables avantages découlent de l'architecture de l'application.

Agilité

L'architecture microservices se prĂȘte Ă  un dĂ©veloppement et Ă  un dĂ©ploiement indĂ©pendants. Contrairement aux applications monolithiques, oĂč le changement d'une ligne de code implique la mise Ă  jour de toute l'application, les dĂ©veloppeurs peuvent modifier ou remplacer des services sans affecter le systĂšme distribuĂ©. La possibilitĂ© de dĂ©ployer des services individuels facilite l'ajout de nouvelles fonctionnalitĂ©s ou le retour en arriĂšre des modifications apportĂ©es Ă  une application.

ÉvolutivitĂ©

La mise à l'échelle d'une application entiÚre n'est pas optimale. Avec les microservices, seuls les composants qui nécessitent une mise à l'échelle sont mis à l'échelle. Les développeurs peuvent s'occuper d'un service individuel en fonction des besoins, ce qui permet en fin de compte d'améliorer les performances en cas de charge importante, d'utiliser efficacement les ressources et de réduire les coûts d'infrastructure.

Choix

Dans l'architecture microservices, l'application Cloud Native ne partage pas une pile et une base de données communes. Les développeurs peuvent choisir les outils qu'ils préfÚrent et les technologies pour répondre aux exigences distinctes des services individuels.

Intégration

Les développeurs peuvent écrire des microservices dans n'importe quel langage et les connecter à des microservices programmés dans n'importe quel langage. De plus, les microservices peuvent fonctionner sur n'importe quelle plateforme, ce qui permet de les intégrer aux systÚmes existants.

Réutilisation du code

L'architecture microservices permet aux développeurs de construire des services modulaires qu'ils peuvent réutiliser dans les applications. En travaillant avec des composants réutilisables, les programmeurs réduisent le temps de développement et améliorent la qualité du code, car ils investissent dans une culture "écrire une fois, réutiliser souvent".

Tolérance de panne

L'architecture microservices favorise la rĂ©silience. Les services Ă©tant conçus pour fonctionner de maniĂšre autonome, la dĂ©faillance d'un seul d'entre eux entraĂźne rarement l'arrĂȘt de l'application, comme c'est souvent le cas pour les applications monolithiques.

Collaboration

L'architecture microservices permet aux équipes de travailler simultanément sur différents services, ce qui se traduit par un délai de mise sur le marché plus rapide. Si les développeurs prennent des décisions sans avoir à se coordonner avec d'autres équipes, les microservices favorisent également la collaboration entre les équipes, puisque chacune d'entre elles est responsable du développement et de la maintenance d'une partie de l'ensemble. Cela peut conduire à un meilleur alignement sur les objectifs de l'entreprise et à une utilisation plus efficace des ressources.

Itération constante

L'application construite avec des microservices est faite pour Ă©voluer. Les dĂ©veloppeurs peuvent rapidement dĂ©ployer des microservices de base en tant que produit minimum viable et mettre Ă  niveau l'application au fur et Ă  mesure que les Ă©quipes complĂštent les services supplĂ©mentaires. Les nouvelles technologies peuvent ĂȘtre intĂ©grĂ©es dans la conception au fur et Ă  mesure de leur apparition. L'application basĂ©e sur les microservices reste en cours, Ă©voluant constamment vers la perfection thĂ©orique.

 

Quand utiliser les microservices ?

Bien que les microservices basés sur des conteneurs offrent de nombreux avantages, ils ne constituent pas toujours la bonne architecture d'application à choisir. Lorsque vous prenez des décisions en matiÚre d'ingénierie logicielle, pensez à vos objectifs pour l'application, ainsi qu'aux obstacles au développement et aux besoins que vous prévoyez pour la durée de vie de l'application. Les microservices fonctionnent mieux avec les applications complexes. Les scénarios à envisager pour l'utilisation des microservices sont les suivants :

Grandes applications

Si vous construisez une application vaste et complexe, les microservices vous permettront de diviser l'application en morceaux gérables, ce qui facilitera son développement, son déploiement et sa maintenance.

Complexité du calendrier

L'architecture microservices peut accueillir des services indĂ©pendants avec des rythmes de dĂ©veloppement diffĂ©rents. MĂȘme si un service connaĂźt un retard inattendu, le projet peut se poursuivre sans incidence globale sur le calendrier de dĂ©veloppement de l'application.

Mises à jour fréquentes

L'architecture microservice est idéale pour les applications qui nécessiteront des mises à jour fréquentes, car les services indépendants permettent aux développeurs de modifier le module plutÎt que l'application.

Grande évolutivité

Si votre application doit gérer un volume de trafic important ou doit évoluer rapidement, les microservices sont indispensables. C'est notamment le cas si vous devez mettre à l'échelle des parties spécifiques de l'application, plutÎt que l'ensemble de l'application.

Équipes multiples

Si plusieurs Ă©quipes de dĂ©veloppement travaillent sur la mĂȘme application, les microservices vous aideront Ă  conserver agilitĂ© et efficacitĂ©. Chaque Ă©quipe peut travailler sur son microservice, en utilisant la pile technologique qui lui convient, sans se soucier du reste de l'application.

Architecture décentralisée

Si vous souhaitez construire une application avec une architecture dĂ©centralisĂ©e, les microservices sont autonomes et peuvent ĂȘtre dĂ©ployĂ©s Ă  diffĂ©rents endroits, mĂȘme parmi diffĂ©rents fournisseurs de services cloud.

Cloud hybride

Si vous prévoyez une architecture de cloud hybride, dans laquelle certains services continueront à fonctionner sur place et d'autres dans le cloud, les microservices vous aideront à gérer la complexité de l'application.

Appels API représentant les demandes des clients acheminées par la passerelle API vers les terminaux des microservices internes.

Figure 2 : Les appels API représentant les demandes des clients acheminées par API gateway vers les terminaux des microservices internes.

 

Construire et déployer des applications basées sur les microservices

L'architecture microservices exige une planification minutieuse. Certaines technologies et pratiques communes à l'environnement de production permettent aux développeurs de développer, de maintenir et d'exploiter efficacement des applications basées sur des microservices.

DevOps

Les pratiques DevOps, notamment CI/CD, sont essentielles à l'approche architecturale des microservices. Contrairement aux applications monolithiques, les microservices sont des systÚmes distribués intrinsÚquement complexes, avec de nombreuses piÚces mobiles et des piles technologiques indépendantes. Cette complexité exige une collaboration fréquente entre les équipes de développement et d'exploitation afin de garantir une intégration transparente des composants.

Les pratiques DevOps fournissent les outils de collaboration, de communication et d'automatisation nécessaires pour rassembler efficacement les équipes tout au long du cycle de vie du développement logiciel.

Livraison continue

La livraison continue va de pair avec les microservices, permettant aux développeurs de déployer des mises à jour logicielles fréquemment et de maniÚre fiable en faisant appel à des outils d'automatisation de l'infrastructure, tels que des serveurs d'intégration continue, des pipelines de déploiement et des cadres de tests automatisés pour rationaliser le processus CI/CD.

La livraison constante est particuliĂšrement importante pour garantir que chaque service peut ĂȘtre mis Ă  jour et publiĂ© indĂ©pendamment des autres microservices.

REST

Les microservices communiquent entre eux - et la plupart le font au sein d'applications web - ce qui rend REST complémentaire. REST, ou Representational State Transfer, est un modÚle de conception architecturale pour construire des API RESTful, qui permettent aux services de communiquer via HTTP dans des formats standard, tels que XML, HTML et JSON. Mais les API REST sont essentielles pour les applications basées sur les microservices, et ce pour plusieurs raisons.

Les API REST sont lĂ©gĂšres et agnostiques en termes de plateforme, ce qui signifie qu'elles fournissent une interface standardisĂ©e qui permet aux microservices de communiquer, quelle que soit leur technologie sous-jacente. Étant donnĂ© que les exigences contiennent les informations nĂ©cessaires pour complĂ©ter la demande, les API REST ne nĂ©cessitent pas de contexte stockĂ© sur le serveur. Ils peuvent traiter de gros volumes de demandes sans compromettre les performances, et les services d'une architecture microservices basĂ©e sur REST peuvent Ă©voluer de maniĂšre indĂ©pendante, en communiquant efficacement de maniĂšre apatride.

Conteneurs

Bien que les microservices permettent aux Ă©quipes de choisir le langage et le cadre de leur service, travailler avec diffĂ©rents langages dans le mĂȘme pipeline de CD pose des problĂšmes. Containers fait abstraction de la variance entre les services, car chaque microservice devient une unitĂ© autonome progicialisĂ©e avec sa base de code, sa base de donnĂ©es et ses dĂ©pendances. Le pipeline de CD, dĂ©sormais homogĂšne, peut effectuer des tests cohĂ©rents sur chaque conteneur.

Les services sont capables d'interagir sans interférer les uns avec les autres lorsqu'ils sont séparés par des conteneurs, et une fois déployés, les conteneurs fournissent un environnement d'exécution léger et portable qui permet aux services de fonctionner de maniÚre cohérente sur toutes les plateformes. Des outils comme Docker et Kubernetes sont largement utilisés pour gérer les microservices conteneurisés.

Orchestrateur Kubernetes

Un outil d'orchestration comme Kubernetes peut faire abstraction de l'infrastructure sous-jacente et automatiser la gestion, le déploiement et la mise à l'échelle des conteneurs sur plusieurs serveurs. Son extensibilité permet également aux développeurs et aux opérateurs d'utiliser leurs outils logiciels libres et commerciaux préférés, réduisant ainsi le travail manuel de gestion des conteneurs.

Sans serveur

L'informatique sans serveur est une autre option pour dĂ©ployer des microservices. Les architectures sans serveur utilisent des plateformes de fonctions en tant que service (FaaS) pour crĂ©er des unitĂ©s de dĂ©ploiement encore plus petites et Ă©voluer Ă  la demande. Bien que les architectures sans serveur puissent augmenter les dĂ©pendances des fournisseurs, elles offrent une rĂ©duction des coĂ»ts opĂ©rationnels, de la complexitĂ© et des dĂ©lais d'ingĂ©nierie.

 

Meilleures pratiques en matiĂšre de microservices

La conception d'une architecture de microservices exige une planification et une réflexion approfondies. Pour créer des applications basées sur les microservices réussies, les développeurs doivent observer les bonnes pratiques suivantes :

  • Conception axĂ©e sur le domaine : La conception axĂ©e sur le domaine (DDD) est une approche de conception qui se concentre sur le domaine d'activitĂ© et le comportement de l'application. Il aide les dĂ©veloppeurs Ă  diviser l'application en composants plus petits et plus faciles Ă  gĂ©rer, ce qui facilite la construction, le dĂ©ploiement et la maintenance.
  • Limites du service : Lors de la conception d'une architecture de microservices, il est essentiel de dĂ©finir des limites de service claires. Chaque microservice doit avoir une responsabilitĂ© bien dĂ©finie.
  • Petits services : Gardez les services "micro", concentrĂ©s sur une seule responsabilitĂ©. Si vous perdez de vue ce principe fondamental, vous sacrifierez la facilitĂ© de gestion.
  • Conception de l'API : Les microservices communiquent par le biais d'API. Utilisez donc des API cohĂ©rentes, Ă©volutives et sĂ©curisĂ©es qui limitent l'accĂšs aux donnĂ©es aux applications, utilisateurs et serveurs autorisĂ©s.
  • Gestion dĂ©centralisĂ©e des donnĂ©es : Les applications microservices nĂ©cessitent une variĂ©tĂ© d'options de stockage et de base de donnĂ©es. Chaque microservice doit disposer de son propre datastore. Cette approche vous aide Ă  Ă©viter les incohĂ©rences de donnĂ©es et vous permet de mettre Ă  l'Ă©chelle chaque microservice de maniĂšre autonome. Vous voulez que l'Ă©quipe de dĂ©veloppement choisisse la base de donnĂ©es pour chaque service afin de s'assurer qu'elle convient le mieux Ă  son projet.
  • Pipelines CI/CD: La mise en Ɠuvre de CI/CD vous aidera Ă  trouver et Ă  corriger les bogues rapidement, ce qui est particuliĂšrement prĂ©cieux avec plusieurs bases de code Ă  gĂ©rer dans une architecture de microservices.
  • RĂ©silience intentionnelle : ProtĂ©gez l'application contre les arrĂȘts dus Ă  des dĂ©faillances de dĂ©pendances. N'utilisez pas d'appels de procĂ©dure Ă  distance (RPC) entre les microservices, si possible, et intĂ©grez des fonctions telles que des disjoncteurs pour arrĂȘter les dĂ©faillances en cascade.
  • SOP: Élaborer des procĂ©dures opĂ©rationnelles normalisĂ©es qui dĂ©finissent les conventions de codage, les structures de rĂ©pertoire et les protocoles de communication. Le respect d'un ensemble de normes permet de crĂ©er des microservices cohĂ©rents et gĂ©rables.

 

Adopter les microservices

eBay, Etsy, Uber - d'innombrables entreprises ont démantelé leurs applications monolithiques et les ont refaçonnées en architectures basées sur les microservices pour capitaliser sur les avantages d'échelle, l'agilité de l'entreprise et les gains financiers.

Les organisations qui prévoient de passer aux microservices devraient d'abord adopter DevOps, ce qui vous mettra en condition pour gérer les complexités que vous rencontrerez. De maniÚre générale, anticipez les étapes décrites ci-dessous lors de l'élaboration de votre projet.

Identifier les capacités de l'entreprise

La premiĂšre Ă©tape de la migration vers l'architecture microservices consiste Ă  identifier les capacitĂ©s ou les fonctionnalitĂ©s commerciales que votre application doit prendre en charge. Cela vous aidera Ă  dĂ©finir le champ d'application de votre application et Ă  prendre des dĂ©cisions sur les capacitĂ©s Ă  dĂ©velopper en prioritĂ©, ainsi que sur la maniĂšre dont ces microservices doivent ĂȘtre conçus et intĂ©grĂ©s les uns aux autres.

Décomposer l'application monolithique

La plupart des organisations utilisent la conception pilotée par domaine ou la décomposition basée sur les fonctionnalités pour décomposer leurs applications monolithiques.

AprÚs avoir identifié les capacités commerciales de l'application, définissez les limites des services pour chaque microservice, en veillant à ce que chaque microservice ait une responsabilité distincte et bien définie. Vous voudrez cartographier les dépendances entre les capacités de l'entreprise, les datastores et les systÚmes externes. Sur la base des contextes délimités et des dépendances, définissez les microservices qui remplaceront l'application monolithique.

Chaque microservice, axé sur une seule capacité commerciale, doit avoir des interfaces claires. Examinez les modalités d'accÚs aux entités de données et, enfin, réfléchissez à la maniÚre de partitionner les données afin de réduire les dépendances entre les services.

Définir les interfaces de service

Mettez en Ɠuvre les interfaces de service pour chaque microservice, en veillant Ă  ce que l'interface reflĂšte la seule responsabilitĂ© du microservice. Vous pouvez utiliser diffĂ©rentes techniques, telles que les API RESTful ou les protocoles de messagerie, pour dĂ©finir les interfaces de service.

Mettre en Ɠuvre et tester les services

En fonction de vos exigences et de votre expertise, choisissez les langages de programmation et les cadres pour mettre en Ɠuvre les services. RĂ©pĂ©tez la conception si nĂ©cessaire, notamment en testant les nouvelles interfaces, les protocoles de communication et les datastores.

Conteneuriser les services

Une fois les services mis en Ɠuvre et testĂ©s, vous voudrez les conteneuriser Ă  l'aide de technologies de conteneurs, telles que Docker ou Kubernetes. La conteneurisation vous permettra de dĂ©ployer et de gĂ©rer les services de maniĂšre indĂ©pendante.

Automatiser le déploiement et l'orchestration

Automatisez l'orchestration des services Ă  l'aide d'outils tels que Kubernetes ou Docker Swarm. En plus de rationaliser efficacement le dĂ©ploiement des services, l'automatisation via Kubernetes ou Docker amĂ©liorera la fiabilitĂ© et la disponibilitĂ© de l'application. L'une ou l'autre de ces plates-formes peut dĂ©tecter une dĂ©faillance ou une absence de rĂ©ponse d'une instance de service et prendre des mesures pour remĂ©dier au problĂšme. Kubernetes, par exemple, peut redĂ©marrer les instances dĂ©faillantes ou les reprogrammer sur d'autres nƓuds, tandis que Docker peut migrer automatiquement le conteneur dĂ©faillant vers un autre nƓud.

ContrÎler et gérer les services

La décomposition d'une application monolithique n'est pas un processus unique. Il nécessite une maintenance et des mises à jour au fur et à mesure de l'évolution des besoins de l'application et de ses utilisateurs. Surveillez les nouveaux microservices et suivez les indicateurs clés, tels que le temps de réponse et l'utilisation des ressources.

 

Sécuriser les microservices

Les applications microservices hautement distribuĂ©es et cloud-natives introduisent des complexitĂ©s en matiĂšre de sĂ©curitĂ©. Au lieu d'un seul point d'entrĂ©e, ils comportent des dizaines, voire des centaines, de points de vulnĂ©rabilitĂ© potentiels - et chacun d'entre eux doit ĂȘtre sĂ©curisĂ©. Les API et les dĂ©pendances du code ne reprĂ©sentent que deux sources de risque dans la surface d'attaque croissante de l'application moderne.

Sécurité des applications web et des API

Les applications modernes consomment des entrĂ©es provenant de diverses sources - requĂȘtes web standard, appels API d'appareils mobiles, Ă©vĂ©nements cloud, communication de tĂ©lĂ©mĂ©trie d'appareils IoT, stockage cloud, etc. Qui plus est, la demande web d'un seul client (c'est-Ă -dire le trafic nord-sud) peut engendrer des centaines d'appels API entre microservices internes (c'est-Ă -dire le trafic est-ouest).

La complexité des applications web centrées sur les API nécessite des stratégies évolutives, flexibles et multicouches qui fonctionnent pour tout type de charge de travail dans tout type d'environnement ou d'architecture cloud. Sécuriser l'interface web frontale de l'application Cloud Native ne suffit pas. Les exigences des applications Cloud Native nécessitent une protection de la couche applicative pour les API Cloud Native. La sécurité des applications web et des API (WAAS) est essentielle.

Dépendances du code et analyse de la composition des logiciels

Les composants logiciels libres représentent environ 70 % des applications Cloud Native. Bien que cela accélÚre le développement, de nombreux progiciels open-source et leurs dépendances contiennent des vulnérabilités. En outre, chaque version d'un progiciel de logiciel libre dépendant peut modifier des fonctionnalités essentielles. Sans une visibilité totale, les vulnérabilités ne sont pas détectées.

Les outils autonomes d'analyse de la composition des logiciels (SCA) mettent en Ă©vidence les risques liĂ©s aux logiciels libres trop tard dans le cycle de dĂ©veloppement, ce qui entraĂźne une accumulation de vulnĂ©rabilitĂ©s qui ne peuvent pas toujours ĂȘtre rĂ©solues. Des outils distincts pour le SCA et la sĂ©curitĂ© de l'IaC donnent lieu Ă  des alertes bruyantes sans contexte et sans connaissance des risques interconnectĂ©s. Parce que les lacunes sont inĂ©vitables sans couverture de l'exĂ©cution et de la charge de travail, il est prĂ©fĂ©rable de sĂ©curiser les applications Cloud Native avec une sĂ©curitĂ© Cloud Native intĂ©grĂ©e.

Code-to-Cloud CNAPP

Identifiant et hiérarchisant les risques critiques de l'ensemble de l'application cloud-native, une cloud-native application protection platform (CNAPP) intÚgre plusieurs types de sécurité pour offrir une protection complÚte, de code à cloud - gestion de la posture de sécurité cloud (CSPM), protection de la charge de travail cloud, gestion des droits à l'infrastructure cloud (CIEM), gestion de la posture de sécurité Kubernetes (KSPM), sécurité de l'infrastructure en tant que code, WAAS, SCA et bien d'autres encore.

Les responsables de la sécurité du cloud qui explorent la meilleure façon de sécuriser les besoins de développement rapide des applications employant des technologies cloud-natives, telles que les conteneurs, les microservices et les fonctions sans serveur, devraient envisager d'adopter un CNAPP.

 

FAQ sur les microservices

Toutes les applications cloud-natives sont des applications microservices, mais toutes les applications microservices ne sont pas cloud-natives. L'architecture microservices peut ĂȘtre mise en Ɠuvre sur place ou dans le cloud et ne nĂ©cessite pas nĂ©cessairement de technologies ou d'outils spĂ©cifiques au cloud.
Les microservices communiquent via des API, et une passerelle API est souvent utilisée comme couche intermédiaire, en particulier lorsque le nombre de services d'une application augmente. Située à la périphérie de vos microservices, la passerelle API agit comme un proxy pour gérer tout le trafic entrant, en fournissant un point d'entrée unique et en acheminant toutes les demandes.
Un maillage de services est une couche d'infrastructure dédiée appliquée à un systÚme basé sur des microservices qui permet aux développeurs de séparer et de gérer la communication entre services au sein d'une architecture de microservices. La technologie de maillage de services peut prendre en charge des éléments tels que la découverte de services, l'équilibrage des charges et la gestion du trafic, ce qui permet aux développeurs de se concentrer sur l'écriture du code plutÎt que sur la gestion de l'infrastructure.
Les microservices Ă©tant des systĂšmes distribuĂ©s avec de multiples composants et services, la journalisation et la surveillance jouent un rĂŽle essentiel dans la prĂ©servation de la santĂ© et des performances globales du systĂšme. Chaque microservice gĂ©nĂšre un journal, qui doit ĂȘtre agrĂ©gĂ© et analysĂ© pour identifier les problĂšmes dans le systĂšme.
Les microservices sans Ă©tat ne conservent pas d'informations sur l'Ă©tat entre les requĂȘtes. Conçus pour ĂȘtre autonomes, ils ne s'appuient pas sur des donnĂ©es prĂ©alablement stockĂ©es pour traiter les demandes entrantes. Les microservices sans Ă©tat sont plus faciles Ă  gĂ©rer et Ă  faire Ă©voluer, mais peuvent nĂ©cessiter une complexitĂ© supplĂ©mentaire pour maintenir la cohĂ©rence des donnĂ©es sur plusieurs exigences. Les microservices sans Ă©tat sont souvent utilisĂ©s pour des tĂąches simples et indĂ©pendantes, telles que la validation ou l'autorisation de donnĂ©es, oĂč les opĂ©rations avec Ă©tat ne sont pas exigĂ©es.
Les microservices avec Ă©tat sont un type de microservice qui maintient l'Ă©tat d'une application. Cela signifie que le microservice a accĂšs aux donnĂ©es persistantes entre les requĂȘtes et peut les modifier, ce qui peut inclure les donnĂ©es de session de l'utilisateur, les connexions Ă  la base de donnĂ©es ou d'autres informations Ă  l'Ă©tat stable. Les microservices avec Ă©tat peuvent offrir des avantages tels qu'une amĂ©lioration des performances, une meilleure cohĂ©rence des donnĂ©es et une rĂ©duction de la complexitĂ© de la conception de l'application. Elles nĂ©cessitent toutefois une gestion supplĂ©mentaire et peuvent ĂȘtre difficiles Ă  Ă©chelonner horizontalement.
Si un domaine reprĂ©sente un problĂšme Ă  rĂ©soudre - comme c'est le cas dans la conception dirigĂ©e par le domaine (DDD) - le modĂšle de domaine est le modĂšle qui met en Ɠuvre la solution au problĂšme.
Le contexte délimité représente un ensemble de caractéristiques fonctionnelles, un modÚle de domaine, dans les limites d'un domaine. En d'autres termes, tout comme un sous-domaine est un segment du domaine, un contexte délimité est un segment de la solution. Un microservice est donc un contexte délimité, mais tous les contextes délimités ne sont pas des microservices. En fait, les contextes délimités ne sont pas nécessairement isolés les uns des autres.
Le traçage distribuĂ© est une technique qui permet aux dĂ©veloppeurs de suivre une requĂȘte Ă  travers plusieurs microservices et d'identifier tout problĂšme dans le flux de la requĂȘte. Les outils de traçage distribuĂ©s permettent aux dĂ©veloppeurs de suivre le flux des demandes Ă  travers le systĂšme et d'identifier les goulets d'Ă©tranglement ou les problĂšmes dans le flux des demandes.
Les architectures microservices sont conçues et mises en Ɠuvre Ă  l'aide du langage pattern microservices. Les langages de modĂšles comprennent des modĂšles pour la recherche d'Ă©vĂ©nements, la gestion des donnĂ©es, la communication et bien d'autres choses encore.
Les modÚles de découverte de services aident les applications et les services à se trouver les uns les autres dans un environnement distribué de microservices. Les instances de service changent dynamiquement en raison de l'échelle, des mises à niveau et des défaillances de service, et ces modÚles fournissent des mécanismes de découverte pour faire face à la transience. L'équilibrage de la charge peut utiliser des modÚles de découverte de services en utilisant les contrÎles de santé et les défaillances de services comme déclencheurs pour rééquilibrer le trafic.
Les modĂšles de microservices d'adaptation traduisent les relations entre des classes ou des objets autrement incompatibles. Une application qui s'appuie sur des API tierces peut utiliser un modĂšle d'adaptateur pour assurer la communication entre l'application et les API.
Les modÚles d'application Strangler aident à gérer le processus de refonte d'une application monolithique en microservices en remplaçant progressivement des parties du monolithe par des microservices.
Les modÚles "backend-for-frontend" (BFF) identifient la maniÚre dont les données sont récupérées entre le serveur et les clients. Le BFF insÚre une couche entre l'interface utilisateur et les ressources auxquelles l'interface fait appel, ce qui permet aux développeurs de créer et de prendre en charge un type de backend par interface utilisateur, en utilisant les meilleures options pour cette interface. Cela permet d'améliorer les performances du frontend en adaptant les ressources aux besoins de l'interface.
Les modÚles d'entités et d'agrégats permettent de classer les données de maniÚre significative. Par exemple, un site de commerce électronique peut utiliser le modÚle d'entité pour représenter les produits individuels et le modÚle d'agrégat pour représenter les commandes, qui sont des ensembles de produits commandés par un acheteur.
La mise en cache est un élément important de nombreuses applications microservices, car elle permet d'améliorer les performances et de réduire la charge sur le backend. La plupart des fournisseurs de services cloud (CSP) proposent à leurs clients un service de mise en cache géré.
Le stockage d'objets fait partie intĂ©grante de nombreuses applications microservices, car il permet de stocker et d'extraire des fichiers et des objets de donnĂ©es volumineux. La plupart des CSP proposent un service de stockage d'objets gĂ©rĂ© qui peut ĂȘtre utilisĂ© pour stocker et rĂ©cupĂ©rer des objets pour des applications microservices.