Tutoriel sur les microservices : qu'est-ce que c'est, Architecture et exemple

Que sont les microservices ?

Microservices est un modรจle d'architecture orientรฉ services dans lequel les applications sont construites comme un ensemble de diverses plus petites unitรฉs de service indรฉpendantes. C'est un gรฉnie logiciel approche qui se concentre sur la dรฉcomposition dโ€™une application en modules ร  fonction unique avec des interfaces bien dรฉfinies. Ces modules peuvent รชtre dรฉployรฉs et exploitรฉs indรฉpendamment par de petites รฉquipes qui possรจdent l'intรฉgralitรฉ du cycle de vie du service.

Le terme ยซ micro ยป dรฉsigne le dimensionnement d'un microservice qui doit รชtre gรฉrable par une seule รฉquipe de dรฉveloppement (5 ร  10 dรฉveloppeurs). Dans cette mรฉthodologie, les grandes applications sont divisรฉes en plus petites unitรฉs indรฉpendantes.

Qu'est-ce que le monolithique Architecture ?

En termes simples, vous pouvez dire que l'architecture monolithique est comme un grand conteneur dans lequel tous les composants logiciels d'une application sont regroupรฉs dans un seul package.

Discutons d'un exemple de boutique de commerce รฉlectronique dans le contexte d'une architecture monolithique.

Monolithique Architecture
Monolithique Architecture de l'application de commerce รฉlectronique

Dans toute application de commerce รฉlectronique, il existe des fonctionnalitรฉs standards telles que la recherche, Revvue et notes, et paiements. Ces fonctionnalitรฉs sont accessibles aux clients via leur navigateur ou leurs applications. Lorsque le dรฉveloppeur du site de commerce รฉlectronique dรฉploie l'application, il s'agit d'une seule unitรฉ monolithique. Le code pour diffรฉrentes fonctionnalitรฉs comme la recherche, RevLa vue, les notes et les paiements sont sur le mรชme serveur. Pour faire รฉvoluer l'application, vous devez exรฉcuter plusieurs instances (serveurs) de ces applications.

Qu'est-ce que le microservice Architecture ?

Microservice Architecture est un style de dรฉveloppement architectural qui permet de crรฉer des applications sous forme d'un ensemble de petits services autonomes dรฉveloppรฉs pour un domaine d'activitรฉ. Il s'agit d'une variante de l'architecture de style structurel qui permet d'organiser les applications sous forme d'un ensemble de services faiblement couplรฉs. Le microservice Architecture contient des services fins et des protocoles lรฉgers.

Prenons un exemple d'application de commerce รฉlectronique dรฉveloppรฉe avec une architecture de microservices. Dans cet exemple d'architecture de microservices, chaque microservice est axรฉ sur une capacitรฉ commerciale unique. Recherche, notation et Review et Payment ont chacun leur instance (serveur) et communiquent entre eux.

Microservices Architecture
Microservices Architecture

Dans le monolithique Architecture, tous les composants fusionnent en un seul module. Mais, dans les microservices ArchiDans leur structure, ils sont rรฉpartis en modules individuels (microservices) qui communiquent entre eux, comme le montre l'exemple de microservices ci-dessus.

La communication entre microservices est une communication sans รฉtat oรน chaque paire de requรชte et de rรฉponse est indรฉpendante. Ainsi, les microservices peuvent communiquer sans effort. Dans le microservice Architecture, les Donnรฉes sont fรฉdรฉrรฉes. Chaque microservice possรจde son magasin de donnรฉes distinct. Suivant dans ce Java Tutoriel sur les microservices, nous dรฉcouvrirons la diffรฉrence entre les microservices et l'architecture monolithique.

Microservices vs monolithiques Architecture

Microservices Monolithique Architecture
Chaque unitรฉ de lโ€™application entiรจre doit รชtre la plus petite et doit รชtre capable dโ€™atteindre un objectif commercial spรฉcifique. Une base de code unique pour tous les objectifs commerciaux
Le dรฉmarrage du service est relativement rapide Le dรฉmarrage du service prend plus de temps
L'isolation des dรฉfauts est facile. Mรชme si un service tombe en panne, un autre peut continuer ร  fonctionner. L'isolation des dรฉfauts est difficile. Si une fonctionnalitรฉ spรฉcifique ne fonctionne pas, le systรจme complet tombe en panne. Afin de rรฉsoudre ce problรจme, l'application doit รชtre reconstruite, retestรฉe et รฉgalement redรฉployรฉe.
Tous les microservices doivent รชtre faiblement couplรฉs afin que les modifications apportรฉes ร  lโ€™un nโ€™affectent pas lโ€™autre. Lโ€™architecture monolithique est รฉtroitement couplรฉe. Les modifications dans un module de code affectent lโ€™autre
Les entreprises peuvent dรฉployer davantage de ressources vers des services gรฉnรฉrant un retour sur investissement plus รฉlevรฉ Puisque les services ne sont pas isolรฉs, lโ€™allocation individuelle des ressources nโ€™est pas possible
Plus de ressources matรฉrielles pourraient รชtre allouรฉes au service frรฉquemment utilisรฉ. Dans l'exemple de commerce รฉlectronique ci-dessus, un plus grand nombre d'utilisateurs consultent la liste des produits et effectuent des recherches par rapport aux paiements. Ainsi, davantage de ressources pourraient รชtre allouรฉes au microservice de recherche et de liste de produits. La mise ร  lโ€™รฉchelle des applications est ร  la fois un dรฉfi et un gaspillage.
Les microservices restent toujours cohรฉrents et disponibles en permanence. Les outils de dรฉveloppement sont surchargรฉs car le processus doit repartir de zรฉro.
Les donnรฉes sont fรฉdรฉrรฉes. Cela permet ร  chaque microservice d'adopter un modรจle de donnรฉes le mieux adaptรฉ ร  ses besoins. Les donnรฉes sont centralisรฉes.
Petites รฉquipes ciblรฉes. Dรฉveloppement parallรจle et plus rapide Une grande รฉquipe et des efforts considรฉrables de gestion dโ€™รฉquipe sont nรฉcessaires
La modification du modรจle de donnรฉes d'un microservice n'affecte pas les autres microservices. Le changement de modรจle de donnรฉes affecte l'ensemble de la base de donnรฉes
Interagit avec d'autres microservices en utilisant des interfaces bien dรฉfinies N'est pas applicable
Les microservices fonctionnent sur le principe qui se concentre sur les produits et non sur les projets Mettre l'accent sur l'ensemble du projet
Aucune dรฉpendance croisรฉe entre les bases de code. Vous pouvez utiliser diffรฉrentes technologies pour diffรฉrents microservices. Une fonction ou un programme dรฉpend des autres.

Dรฉfis des microservices

  • Les MicroServices s'appuient les uns sur les autres et devront communiquer entre eux.
  • Par rapport aux systรจmes monolithiques, il existe davantage de services ร  surveiller, dรฉveloppรฉs ร  l'aide de diffรฉrents langages de programmation.
  • Comme il sโ€™agit dโ€™un systรจme distribuรฉ, il sโ€™agit dโ€™un modรจle intrinsรจquement complexe.
  • Diffรฉrents services auront leur mรฉcanisme distinct, ce qui entraรฎnera une grande quantitรฉ de mรฉmoire pour des donnรฉes non structurรฉes.
  • Une gestion efficace et un travail dโ€™รฉquipe nรฉcessaires pour รฉviter les problรจmes en cascade
  • Reproduire un problรจme sera une tรขche difficile lorsqu'il disparaรฎtra dans une seule version et reviendra dans la derniรจre version.
  • Le dรฉploiement indรฉpendant est compliquรฉ avec les microservices.
  • Lโ€™architecture de microservices entraรฎne de nombreuses opรฉrations supplรฉmentaires.
  • Il est difficile de gรฉrer les applications lorsque de nouveaux services sont ajoutรฉs au systรจme
  • Un large รฉventail de professionnels qualifiรฉs est nรฉcessaire pour prendre en charge des microservices distribuรฉs de maniรจre hรฉtรฉrogรจne
  • Les microservices sont coรปteux, car vous devez conserver diffรฉrents espaces serveur pour diffรฉrentes tรขches commerciales.

SOA contre microservices

Les services SOA sont gรฉrรฉs dans l'organisation par un registre qui fait office de rรฉpertoire. Les applications doivent rechercher les services dans le registre et appeler le service.

Dans un autre monde, SOA C'est comme un orchestre oรน chaque artiste joue avec son instrument tandis que le directeur musical donne des instructions ร  tous.

D'un autre cรดtรฉ, les microservices sont une forme d'architecture orientรฉe services dans laquelle les applications sont construites comme un ensemble de diffรฉrents services plus petits au lieu d'un seul logiciel ou application.

Les microservices sont comme une troupe oรน chaque danseur est indรฉpendant et sait ce qu'il doit faire. Ainsi, sโ€™ils ratent quelques รฉtapes, ils savent comment revenir sur le bon enchaรฎnement. Maintenant, dans ce didacticiel sur l'architecture des microservices, dรฉcouvrons la diffรฉrence entre SOA et microservices.

Voici une comparaison dรฉtaillรฉe entre SOA et Microservices

Paramรจtres SOA Microservices
Type de conception Dans SOA, les composants logiciels sont exposรฉs au monde extรฉrieur pour รชtre utilisรฉs sous forme de services. Micro Service fait partie de SOA. Il s'agit d'une implรฉmentation de SOA.
Dรฉpendance Les unitรฉs commerciales sont dรฉpendantes. Ils sont indรฉpendants les uns des autres.
Taille du logiciel La taille du logiciel est plus grande que celle de n'importe quel logiciel conventionnel La taille du logiciel est toujours petite dans les microservices
Pile technologique La pile technologique est infรฉrieure ร  celle du Microservice. La pile technologique des microservices pourrait รชtre trรจs volumineuse
Nature de la demande De nature monolithique Full stack dans la nature
Indรฉpendant et concentrรฉ Les applications SOA sont conรงues pour effectuer plusieurs tรขches mรฉtier. Ils sont conรงus pour effectuer une seule tรขche commerciale.
Dรฉploiement Le processus de dรฉploiement prend du temps. Le dรฉploiement est simple et prend moins de temps.
Coรปt โ€“ efficacitรฉ Plus rentable. Less rentable.
ร‰volutivitรฉ Less par rapport aux microservices. Trรจs รฉvolutif.
Logique mรฉtier Les composants de logique mรฉtier sont stockรฉs dans un domaine de service unique. Protocoles filaires simples (HTTP avec XML JSON) L'API est pilotรฉe par des SDK/clients. La logique mรฉtier peut vivre ร  travers les domaines du Service Bus de l'entreprise, comme les couches entre les services Middleware

Outils de microservices

1) Wiremock : tester les microservices

WireMock est une bibliothรจque flexible pour stubbing et moquer les services Web. Il peut configurer la rรฉponse renvoyรฉe par l'API HTTP lorsqu'elle reรงoit une requรชte spรฉcifique. Il est รฉgalement utilisรฉ pour tester les microservices.

Lien de tรฉlรฉchargement:http://wiremock.org/

2) Docker

Docker est un projet open source qui nous permet de crรฉer, dรฉployer et exรฉcuter des applications ร  l'aide de conteneurs. En utilisant ces conteneurs, les dรฉveloppeurs peuvent exรฉcuter une application comme un seul package. Il vous permet d'expรฉdier des bibliothรจques et autres dรฉpendances dans un seul package.

Lien de tรฉlรฉchargement:https://www.docker.com/

3) Hystrix

Hystrix est une bibliothรจque Java de tolรฉrance aux pannes. Cet outil est conรงu pour sรฉparer les points d'accรจs aux services, systรจmes et bibliothรจques tierces distants dans un environnement distribuรฉ comme les microservices. Il amรฉliore le systรจme global en isolant les services dรฉfaillants et en empรชchant l'effet en cascade des pannes.

Lien de tรฉlรฉchargement:https://github.com/Netflix/Hystrix

Meilleures pratiques de microservices Architecture

  • Magasin de donnรฉes sรฉparรฉ pour chaque microservice
  • Conservez un code dโ€™un niveau de maturitรฉ similaire.
  • Construction sรฉparรฉe pour chaque service Micro.
  • Traitez toujours โ€“ grave comme un apatride.

Rรฉsumรฉ

  • Les microservices sont un modรจle d'architecture orientรฉ services dans lequel les applications sont construites comme un ensemble de diverses plus petites unitรฉs de service indรฉpendantes.
  • Microservice Architecture est un style de dรฉveloppement architectural qui permet de construire une application comme une collection de petits services autonomes dรฉveloppรฉs pour un domaine d'activitรฉ.
  • L'architecture monolithique est comme un grand conteneur dans lequel tous les composants logiciels d'une application sont regroupรฉs dans un seul package.
  • Dans un microservice, chaque unitรฉ de l'application entiรจre doit รชtre la plus petite et doit รชtre capable d'atteindre un objectif commercial spรฉcifique.
  • Dans l'architecture monolithique, une base de code volumineuse peut ralentir l'ensemble du processus de dรฉveloppement. Les nouvelles versions peuvent prendre des mois. La maintenance du code est difficile
  • Deux types de microservices sont 1) sans รฉtat 2) avec รฉtat
  • Microservices dans Java dรฉpendent les uns des autres et ils devront communiquer les uns avec les autres. Vous aide ร  mettre l'accent sur une fonctionnalitรฉ spรฉcifique et les besoins de l'entreprise
  • L'architecture orientรฉe services, connue sous le nom de SOA, est une รฉvolution de l'informatique distribuรฉe basรฉe sur le modรจle de conception de demande ou de rรฉponse pour les applications synchrones et asynchrones.
  • Dans SOA, les composants logiciels sont exposรฉs au monde extรฉrieur pour รชtre utilisรฉs sous forme de services, tandis que Micro Service fait partie de SOA. C'est une implรฉmentation de SOA
  • Wiremock, Docker et Hystrix sont des outils de microservices populaires

Rรฉsumez cet article avec :