Transcription
1. Introduction au cours: Êtes-vous prêt à révolutionner
la façon dont vous créez, déployez et faites évoluer des systèmes
logiciels modernes, introduisant bien entendu l'architecture de
microservices
de maîtrise , conçue pour vous transformer en un ingénieur
logiciel hautement qualifié doté expertise
et de microservices de
pointe. microservices qui
deviennent l'
architecture incontournable pour créer des systèmes
logiciels
hautement maintenables, évolutifs et résilients. Alors que le secteur
continue d'évoluer, maîtrise des microservices
est devenue essentielle pour prospérer dans le paysage du
génie logiciel. Dans ce cours complet et indépendant du
langage, vous approfondirez les principes fondamentaux
des microservices meilleures pratiques
pour
la conception
et la mise en œuvre de ces systèmes
modulaires. Mais ce n'est pas tout : notre instructeur
expérimenté vous
guidera à travers
des études de cas réels, des exercices
pratiques et
des applications pratiques qui vous permettront affiner vos compétences et de
consolider vos connaissances. Et devinez quoi ? Ce cours est parfait pour les apprenants
de tous niveaux, que vous
soyez un débutant ou un ingénieur expérimenté. Nous avons ce qu'il vous faut. À la fin de ce cours. Vous aurez la confiance
et l'expertise nécessaires pour maîtriser l'architecture
des microservices et créer des systèmes
logiciels qui
résisteront à l'épreuve du temps. Alors qu'est-ce que tu attends ? L'avenir du génie
logiciel ? Les poids, en vous
inscrivant au cours de maîtrise en
architecture des microservices
informatiques dès aujourd'hui et
libérez votre potentiel de création de systèmes logiciels
comme jamais auparavant. Entamons ensemble cet
incroyable voyage.
2. Quels sont les microservices ?: Le monde du
développement logiciel a évolué rapidement
au cours des dernières décennies. Les entreprises et les organisations sont-elles
confrontées à des besoins croissants en matière d'évolutivité, de maintenabilité
et de flexibilité ? Les ingénieurs logiciels
ont cherché meilleurs moyens de créer des systèmes
répondant à ces exigences. L'une des
avancées les plus importantes en matière architecture
logicielle est le
concept de microservices. Dans cette section, nous allons explorer
les principes fondamentaux
des microservices, discuter de leurs avantages
et de leurs principes fondamentaux, et donner un aperçu
des concepts clés qui sous-tendent cette approche
transformatrice du développement logiciel. Les microservices trouvent leurs
racines au début des années 2000, mais ce n'est qu'
au début de 2010 que le terme microservices
a été inventé et popularisé par les
praticiens du domaine. Ce
style architectural répondait aux limites
des architectures
monolithiques, qui ont longtemps dominé le paysage du
développement logiciel. Dans une architecture monolithique, tous les composants d'un système
logiciel sont
regroupés en une seule unité
étroitement couplée. Bien que cette approche
présente des avantages en termes de simplicité, elle peut entraîner divers
défis à mesure que le système se développe,
notamment une
complexité, des défis à mesure que le système se développe,
notamment une
complexité, difficultés
et une évolutivité accrues et des cycles de
déploiement plus lents. Les microservices, quant à eux, sont conçus comme un
ensemble de petits services
autonomes et
faiblement couplés qui fonctionnent ensemble pour fournir
les fonctionnalités souhaitées. Chaque service est responsable d'une fonctionnalité spécifique
et peut être développé, déployé et adapté
indépendamment des autres. Cette approche modulaire offre plusieurs avantages par rapport aux architectures
monolithiques, notamment une flexibilité accrue, une
meilleure évolutivité et une meilleure isolation des pannes. Pour mieux comprendre les
microservices, prenons l'exemple d'une application de commerce électronique dans
une architecture monolithique. L'ensemble de
l'application
est construit comme
une seule unité, ensemble de
l'application
est construit comme tous les composants étant étroitement liés
entre eux. Cela peut entraîner
plusieurs défis, tels que les cycles de développement des poumons, difficulté de dimensionner des
parties spécifiques de l'application et un risque accru de
défaillance contractuelle. En effet, une
architecture de microservices pour la même
application de commerce électronique
diviserait le système en
plusieurs services, chacun étant responsable
d'une fonction spécifique, telle que la gestion des stocks, traitement des
paiements
ou l'exécution des commandes. Ces services peuvent être développés, déployés et étendus
indépendamment,
ce qui se traduit par une agilité, une
résilience et une facilité
de maintenance accrues .
3. Avantages et défis des microservices: microservices présentent
plusieurs avantages par rapport aux architectures
monolithiques traditionnelles. Premièrement, l'évolutivité
grâce aux microservices, chaque service peut être dimensionné
indépendamment en fonction ses
besoins en ressources et de ses modèles d'utilisation spécifiques. Cela permet une allocation plus efficace des ressources et permet aux applications de gérer plus efficacement
des charges accrues. Pour accélérer le développement et le déploiement, les microservices
permettent à de petites équipes
interfonctionnelles de travailler manière indépendante sur différentes
parties de l'application. Cela se traduit par des cycles de
développement plus courts et des déploiements plus rapides ce qui permet aux entreprises commercialiser plus rapidement
de
nouvelles fonctionnalités et améliorations. Troisièmement, meilleure isolation des pannes dans une architecture de microservices, service
F1 échoue, il est moins susceptible d'avoir un impact sur
l'ensemble du système. Cela facilite l'
identification et la résolution des problèmes traduit par une
disponibilité et une résilience
accrues des applications . Pour faciliter la maintenance
et l'évolution, microservices sont plus petits
en taille et en portée, ce qui les rend plus faciles à comprendre, à
modifier et à gérer. Cela facilite également l'amélioration
continue, car services
individuels
peuvent être mis à jour ou remplacés sans affecter
l'ensemble de l'application. Malgré leurs avantages, les
microservices
ont également introduit de nouveaux défis
et de nouvelles considérations. Premièrement, complexité accrue, la
gestion de plusieurs services, leurs interactions et de leurs
déploiements peut s'avérer plus complexe que la gestion d'une seule application
monolithique. Les développeurs doivent examiner
attentivement modèles de
communication, la cohérence
des données et l'orchestration
des services. En effet, microservices nécessitent davantage de ressources
d'infrastructure, surveillance et de
gestion que les
applications monolithiques. Pour y remédier,
les entreprises doivent investir dans outils
robustes, une automatisation
et une observabilité. Troisièmement, la latence du réseau : lorsque les microservices
communiquent entre eux via le réseau, latence peut devenir un problème, en particulier pour les services présentant des niveaux d'interaction
élevés.
Les développeurs doivent concevoir des modèles de
communication
soigneusement conçus et
envisager des stratégies
telles que la mise en cache, Les développeurs doivent concevoir des modèles de
communication
soigneusement conçus et
envisager des stratégies
telles une communication
synchrone et des microservices de synthèse. Ou pour une approche moderne de l'architecture
logicielle offrant une évolutivité, une
flexibilité et une
résilience
accrues par rapport
aux applications
monolithiques traditionnelles. Cependant, ils ont également introduit nouveaux défis et complexités que les développeurs doivent
examiner et résoudre avec soin. Tout au long de ce cours, nous
explorerons les principes, les
meilleures pratiques et
les outils nécessaires pour créer, maintenir et faire évoluer efficacement
des
applications de microservices.
4. Décomposition de service: L'architecture de microservices
offre plusieurs avantages par rapport aux architectures
monolithiques traditionnelles. Pour tirer pleinement parti des
avantages des microservices, il est essentiel de comprendre
et de concevoir avec soin les composants clés d' une
architecture de microservices réussie. Dans cette section,
nous explorerons décomposition des
services, la gestion
des données, la découverte de
services et les modèles de
communication en tant que principaux
éléments constitutifs des microservices. L'un des aspects les plus
critiques de l'architecture
des microservices
est
la décomposition du système en services
individuels. décomposition appropriée des services vous
permet de créer des services ciblés, autonomes et
évolutifs, ce qui se traduit par un système plus facile à maintenir
et résilient. Pour identifier et
concevoir des microservices, tenez compte des directives
suivantes. La conception pilotée principale, DDT, est une approche qui
met l'accent sur
la compréhension du domaine du problème et
la modélisation du système sur la base des concepts fondamentaux du
domaine. En utilisant DDD, vous pouvez identifier le domaine dans des contextes et des
agrégats
délimités qui correspondent
souvent aux limites de vos
microservices. Par exemple, dans une application de commerce électronique, services peuvent être divisés en domaines tels que le catalogue de produits, les
achats, les cartes, le traitement des
paiements, exécution des commandes, la responsabilité
unique. Chaque microservice doit avoir une
responsabilité unique clairement définie. respect de ce principe permet de garder les services petits,
ciblés et faciles à comprendre, à
tester et à maintenir. Déploiabilité indépendante. Les services doivent être conçus
pour être déployables indépendamment, ce qui signifie qu'ils peuvent
être déployés et mis à jour sans impact sur les autres
services du système. Cela garantit des cycles de déploiement
plus rapides et plus sûrs et réduit le risque de défaillances
généralisées dues
à un seul changement.
5. Gestion de données: La gestion des données est un aspect
essentiel de l'architecture des microservices. L'idée est de s'assurer
que chaque service votre système peut fonctionner de
manière indépendante et gérer ses propres données sans avoir à
recourir à d'autres services pour vous aider à mieux comprendre gestion des
données
dans les microservices Explorons quelques
pratiques et exemples clés. Base de données par service Dans une architecture de
microservices, il est recommandé de disposer d' une base de données ou d'un schéma distinct
pour chaque microservice. Cela signifie que chaque service possède son propre système de stockage auquel les autres services
ne peuvent pas accéder directement. Ainsi, vous évitez les
modèles d'accès aux données
conflictuels et vous vous
assurez que chaque service peut
fonctionner indépendamment. Par exemple, imaginez que vous créez une boutique en ligne proposant des microservices pour
gérer les produits, comptes
clients et les commandes. Chacun de ces
services aurait sa propre base de données pour
stocker des données spécifiques. Le service produit peut utiliser une base de données conçue
pour une recherche rapide, tandis que le
service des comptes clients peut utiliser une base de données optimisée pour le stockage sécurisé
des informations personnelles. La cohérence des données dans une architecture de
microservices, la conservation des données et la synchronisation entre les
différents services peuvent être difficiles, car chaque
service possède sa propre base Il est donc important de trouver un moyen maintenir la cohérence services sans s'appuyer sur transactions de base de données
traditionnelles. L'un des moyens d'y parvenir est d'
adopter la cohérence finale, ce
qui signifie que notre système
finira par qui signifie que notre système
finira devenir
cohérent. Même si les modifications mettent un certain
temps
à se propager entre les services.
Il existe plusieurs modèles que
vous pouvez utiliser pour à se propager entre les services gérer cohérence
finale,
tels que l'un, les architectures
pilotées par les événements, et ce modèle, selon services
communiquent entre eux par le biais d'événements. Lorsqu'un service met à jour ses données, il peut publier un événement pour informer les autres services
de la modification. Les autres services
peuvent ensuite consommer l'événement et mettre à jour
leurs données en conséquence. Par exemple, lorsqu'un
client passe une commande, le service des commandes peut
créer un événement tel que commande passée et
l'envoyer dans une file de messages. Le service d'inventaire peut
profiter de cet événement et actualiser les niveaux
de stock en fonction des sagas Les
enquêtes sont une série de
transactions locales qui peuvent être utilisées pour coordonner
les actions entre plusieurs services. Cela peut être utilisé pour maintenir
la cohérence en garantissant que chaque étape de la séquence
est terminée avec succès, ou annuler en cas d'échec, par exemple
si un service de paiement ne
traite pas un paiement,
un sujet peut s'assurer que
les
services de commande et d'inventaire annulent leurs mises à jour
correspondantes. Trois, les
transactions de compensation. Ces transactions ont contribué à
maintenir la cohérence en appliquant une action compensatoire cas de problème Si un service ne parvient pas à
terminer son action, une
transaction compensatoire peut annuler les modifications apportées par
d'autres services. Par exemple, si un client annule une commande, la
transaction compensatrice rétablira les niveaux de stock
et remboursera le paiement. Partage et réplication des données Dans une architecture de microservices, il est essentiel
d'éviter le
partage direct des données entre les services afin de
préserver leur autonomie. Utilisez plutôt des méthodes de
communication synchrones, telles que des événements ou des files de
messages, pour partager des données entre les
services lorsque cela est nécessaire. Exemple de
besoin du service client pour mettre à jour l'adresse de livraison du
client. Il peut envoyer un message au service de commande avec
les
nouvelles informations d'adresse,
le service de commande
peut ensuite mettre à jour ses enregistrements en conséquence sans avoir besoin d'accéder directement à la base de données du service
client. En comprenant ces
concepts et pratiques, même les débutants peuvent gérer
efficacement données dans une
architecture de microservices, garantissant ainsi que leurs
services restent indépendants, maintenables
et évolutifs.
6. Motifs de communication: Les microservices doivent
communiquer entre eux pour
partager des informations et
collaborer sur des tâches. Les microservices
communiquent entre eux pour assurer la fonctionnalité
globale du système. La conception d'une
communication efficace et fiable entre
les services est un aspect clé d' une
architecture de microservices réussie Voici quelques modèles de
communication populaires pour compte notre
communication synchrone. Cela implique une
communication en temps réel entre les services, utilisant
souvent les protocoles HTTP rest
sont gRPC. La communication synchrone
peut entraîner un couplage
étroit entre les services. Il est donc essentiel de l'utiliser
judicieusement et d'envisager des mécanismes de
secours tels que les
disjoncteurs pour éviter les pannes en cascade. Une communication synchrone et ce modèle de services
communiquent indirectement, souvent via des files de messages, sont des architectures
pilotées par les événements. Une
communication synchrone permet de découpler les
services les
uns des autres, d'améliorer l'évolutivité et
d'améliorer la tolérance aux pannes. Par exemple, dans une
application de commerce électronique, lorsqu'un client passe une commande, le service des commandes peut publier un événement dans
une file de messages. Le service d'inventaire pourrait alors consommer le message et mettre à jour ses données d'inventaire
en conséquence. Passerelle API. Api Gateway est un point d'entrée
unique permettant aux consommateurs
externes d'accéder aux microservices
du système Il peut gérer des tâches telles que le
routage des demandes, l'authentification et la limitation du débit, fournissant une
interface cohérente et sécurisée aux microservices.
7. Découverte de service: Dans un environnement de microservices, les services doivent se trouver et communiquer entre
eux de manière dynamique. La découverte de services y
contribue en permettant aux services de s'
enregistrer, découvrir d'autres services et de
se connecter sans codage en dur Les adresses
réseau s'appuient
sur des configurations centrales. Il existe deux approches principales en matière
de découverte de services. Tout d'abord, la découverte en ligne. Avec cette approche,
les clients sont responsables de
trouver les services disponibles à
l'aide d'un registre de services. exemples de
registres de services, citons Netflix, Eureka ou annulez lorsqu' un client a besoin de communiquer
avec le service. première requête concerne le registre des
services pour trouver l'adresse réseau appropriée
pour la découverte côté serveur. Dans cette approche, un
équilibreur de charge ou une passerelle d'API est chargé de rechercher les services
disponibles et de leur acheminer les demandes. Parmi les outils de
découverte côté serveur, citons AWS, Application Load
Balancer ou Kubernetes clients d'
entrée envoient des demandes
à l'équilibreur de charge, qui transmet ensuite
la demande au service approprié en
fonction des informations
du registre des services, comprendre et de mettre en œuvre
efficacement composants
clés de l'architecture des
microservices, tels que la décomposition des services, la gestion des données, les modèles de
communication et la découverte de services
sont essentiels à la création d'applications de
microservices performantes. En maîtrisant ces concepts, même les débutants peuvent commencer leur parcours vers la
création de systèmes
logiciels de haute qualité, maintenables et évolutifs.
8. Concevoir des API: Les
interfaces de programmation d'applications constituent un élément essentiel de l'
architecture des microservices, car elles définissent la manière dont
les services interagissent les uns avec les autres. La conception d'une API claire, concise et cohérente est
essentielle pour garantir que vos microservices peuvent communiquer efficacement et que votre système reste maintenable au fur et à mesure de son
évolution lors de la conception de l'API. En ce qui concerne vos microservices, prenez en compte les
meilleures pratiques suivantes. Adoptez une convention
de dénomination cohérente. Utilisez des noms clairs et descriptifs
pour les points de terminaison, les ressources et les paramètres afin de
faciliter la compréhension
et l'utilisation de vos API . Par exemple, si votre microservice
gère les commandes des clients, vous pouvez utiliser une convention de
dénomination, commandes
légères pour représenter une
personne ou la ressource. Utilisez le contrôle de version. Implémentez la gestion des versions pour
vos API afin de permettre une évolution
et des modifications fluides sans perturber les
clients existants ou les autres services. Par exemple, vous pouvez
inclure la version de l'API et l'URL ou utiliser des en-têtes personnalisés pour indiquer le numéro de version. Privilégiez les principes RESTful le
cas échéant, adhérez aux principes RESTful et utilisez des méthodes HTTP standard. Obtenez, publiez, publiez, supprimez pour rendre vos API intuitives
et faciles à utiliser. Par exemple, utilisez la
méthode get pour récupérer d'abord
une commande spécifique afin de créer une nouvelle commande, passez pour mettre à jour une commande existante et supprimez pour supprimer une commande. Les API documentaires fournissent
une documentation complète pour aider les développeurs à
comprendre comment interagir avec vos services. Incluez des informations sur les points
disponibles, l'authentification, les paramètres d'entrée
et les réponses attendues. Des outils tels que Swagger ou
OpenAPI peuvent vous aider à générer une documentation d'
API interactive, ce qui permet
aux développeurs d'
explorer et de tester plus facilement vos services.
9. Développer un code spécifique au service: Lors du développement de code pour des microservices
individuels, il est essentiel de maintenir la
séparation des préoccupations et se concentrer sur les
fonctionnalités spécifiques fournies par chaque service. Cela vous aidera à garantir que vos microservices
restent modulaires, maintenables et faciles à adapter Pour y parvenir, suivez
ces instructions. Encapsulez la logique métier. Conservez la
logique métier spécifique à chaque microservice contenu
dans ce service, afin d'éviter qu'il
ne soit mêlé d'autres services ou à des dépendances
externes. Par exemple, si vous avez un microservice chargé de traiter les commandes des
clients, assurez-vous que tout le
traitement lié aux commandes s'effectue au sein ce service et n'est pas
réparti entre plusieurs services. Met en œuvre des principes solides. Solid est l'acronyme de cinq
principes de conception logicielle qui contribuent à promouvoir un code propre et
maintenable. L'application de principes solides à vos microservices
peut faciliter leur compréhension, modification et leur extension. Un seul
principe de responsabilité. Ce principe stipule qu'
une classe ou un module doit avoir une raison de changer.
En adhérant au SRP, vous vous assurez que chaque partie de
votre microservice se concentre sur un seul aspect des fonctionnalités du
système. Par exemple, dans votre service de commande, vous pourriez avoir une
classe
responsable du calcul des frais d'expédition. Ce cours doit
se concentrer uniquement sur le calcul des
frais d'expédition et ne pas traiter d'
autres tâches telles que la mise à jour l'inventaire ou la gestion des données
clients. Selon le principe d'ouverture et de fermeture, ce principe stipule que les entités
logicielles doivent être ouvertes à l'extension mais
fermées à la modification. En adhérant à l'OCP, vous vous assurez que vos
microservices peuvent être étendus sans avoir à
modifier leur code existant. Par exemple, vous pouvez avoir une classe de validation des odeurs
dans votre service de commande. Si de nouvelles
règles de validation sont introduites, vous devriez pouvoir les
ajouter sans modifier le code de
validation existant, éventuellement à l'aide d'un plug-in
ou d'un modèle de décorateur. Utilisez des modèles de conception appropriés. Utilisez des modèles de
conception bien établis adaptés votre
cas d'utilisation spécifique pour améliorer la qualité globale de
vos microservices. Par exemple, pensez à implémenter le modèle de référentiel
pour l'accès aux données, qui peut vous aider à
encapsuler et centraliser le logit d'accès aux données, facilitant ainsi la
gestion et les tests. En suivant ces directives et en comprenant les exemples, même les débutants peuvent développer efficacement
du code spécifique aux
services, ce qui se traduit par une
architecture de microservices plus facile à maintenir et plus évolutive.
10. Traitement des erreurs: La gestion robuste des erreurs est un aspect essentiel
du développement de microservices, car
elle contribue à garantir la fiabilité et la
résilience de votre système Tenez compte des
recommandations suivantes lors de la mise en œuvre de la gestion des erreurs
dans vos microservices. Premièrement, réponses aux erreurs
standardisées établissent un format cohérent
pour les réponses aux
erreurs afin de faciliter la compréhension des
développeurs et gérez les erreurs entre les
différents services. Par exemple, vous pouvez utiliser une structure JSON qui
inclut un code d'erreur, message
d'erreur et des
détails supplémentaires comme celui-ci. Code d'erreur 404 Message d'erreur, ou détails introuvables, la commande spécifiée
n'existe pas. Pour utiliser des codes d'
état et
des messages d'erreur significatifs , nous avons utilisé les codes
d'état HTTP
standard et avons fourni des messages
d'erreur clairs et formatifs afin de permettre aux clients
de mieux comprendre les problèmes qui surviennent. Par exemple, renvoyez un code d'
état 404 avec le message
d'erreur descriptif lorsque la ressource demandée n'
est pas trouvée, ou un code d'état 400 avec les détails
appropriés lorsqu'un
client soumet des données non valides. Troisièmement, implémentez une gestion appropriée des
exceptions, détectez et gérez les exceptions manière appropriée au sein de
vos microservices, en veillant à ce qu'elles n'entraînent pas de
défaillance inattendue
du service. En outre, enregistrez les exceptions pour permettre un débogage
et un diagnostic efficaces des
problèmes de conception, pour une dégradation progressive
en cas de panne, concevez vos
microservices pour qu'ils se dégradent correctement en renvoyant des erreurs
significatives, fournissant des
données de secours ou en mettant en œuvre des
disjoncteurs pour empêcher défaillances en
cascade
dans l'ensemble du système.
11. Collaboration entre les équipes de développement: collaboration efficace entre les équipes de
développement est cruciale dans un environnement de microservices, car plusieurs équipes travaillent souvent plusieurs équipes travaillent souvent
simultanément
sur différents services mise en œuvre des meilleures
pratiques et
l'utilisation des bons outils peuvent rationaliser la
collaboration et garantir que vos microservices sont développés dans une optique de
maintenabilité et d'
extensibilité au lieu de Une collaboration efficace entre les équipes de
développement est cruciale dans
un environnement de microservices, car
plusieurs équipes travaillent souvent
simultanément
sur différents services. La
mise en œuvre des meilleures
pratiques et
l'utilisation des bons outils peuvent rationaliser la
collaboration et garantir
que vos microservices sont
développés dans une optique de
maintenabilité et d'
extensibilité au lieu de
stratégies
et exemples suivants. Tout d'abord, des normes de
codage établies, définissent et appliquent des normes de
codage sein de ses équipes de développement afin promouvoir une base de
code cohérente facile à comprendre et à gérer. Cela inclut des directives
sur les conventions de dénomination, le formatage du code et les commentaires. Par exemple, le
guide de style JavaScript d'Airbnb est un ensemble populaire
de normes de codage que nombreuses entreprises adoptent
ou personnalisent pour garantir qualité de code
constante. En adhérant à un guide de style
partagé, les développeurs peuvent
naviguer et comprendre plus facilement une qualité de code
constante. En
adhérant à un guide de style
partagé,
les développeurs peuvent
naviguer et comprendre plus facilement le code de
chacun, ce qui rend la collaboration
plus efficace. Pour utiliser un système de contrôle de version. Utilisez un
système de contrôle de version tel que Git pour suivre les modifications apportées à
votre base de code et faciliter la collaboration
entre les membres de l'équipe. Appliquez une stratégie de
branchement cohérente telle que Git Flow ou GitHub Flow, et encouragez l'utilisation
de pull requests et révisions de
code pour
maintenir la qualité du code. Par exemple,
les équipes de développement peuvent créer des branches de fonctionnalités pour les
nouvelles fonctionnalités, les
fusionner dans une
branche principale après un examen par les pairs et utiliser les branches
de publication pour préparer le déploiement. Cette approche structurée permet de maintenir
l'organisation de la base de code et permet
aux équipes de collaborer plus efficacement. Gratuit, implémentez l'intégration
continue
et la livraison continue. Adoptez un pipeline CI CD pour
automatiser la création, les tests et le déploiement
de vos microservices. Cette approche permet un
retour rapide sur les modifications de code et garantit que vos services sont toujours prêts à être publiés. Des outils tels que Jenkins, Travis CI et Circle CI peuvent aider à
automatiser ces processus. Par exemple, chaque fois qu'
un développeur envoie du code vers un référentiel
distant, le pipeline CI CD peut
automatiquement exécuter des tests, créer l'application et déployer dans un
environnement intermédiaire, fournissant ainsi un retour rapide
sur les modifications. Pour tirer parti des outils de communication et de
collaboration,
utilisez des outils tels que Slack, Microsoft Teams ou Jira pour faciliter la communication
entre les équipes de développement et tout le monde soit au
courant de avancement, des
priorités et des problèmes
du projet. Par exemple, l'intégration de référentiels
Git à des plateformes de communication telles que Slack permet aux développeurs recevoir des notifications
pour les pull requests, révisions de
code et les fusions. même temps, Jira peut vous aider à
suivre les témoignages d'utilisateurs , les
bogues et d'autres tâches, en veillant à ce que tous les
membres de l'équipe comprennent l'état actuel du développement et
les priorités du projet. En suivant ces pratiques de
développement essentielles, vous serez mieux équipé
pour créer des solutions de
microservices de haute qualité, maintenables et évolutives. En outre, l'intégration exemples
concrets
et d'études de cas provenant d'autres
projets réussis peut fournir des informations
précieuses et vous aider à orienter vos
décisions de mise en œuvre. Étudier la manière dont des entreprises
comme Netflix, Amazon et Spotify ont mis en œuvre
des microservices peut être une source d'inspiration et des leçons
qui peuvent être appliquées aux besoins
spécifiques de votre organisation.
12. Introduction au test de microservices: développement de microservices
présente de nombreux avantages, tels qu'une évolutivité
et une maintenabilité améliorées. Cependant, cela présente également des défis
uniques, en particulier en ce
qui concerne les tests. Garantir la qualité
et la fiabilité des services individuels et
des interactions entre
eux est essentiel à création d'un système robuste basé sur
des microservices. Et dans cette section,
nous aborderons diverses stratégies de test
adaptées aux microservices, notamment les tests unitaires, les tests d'intégration
et les tests de bout en bout. Et discutez de l'importance
des essais sous contrat. Nous présenterons également des frameworks et des
outils de
test populaires pour vous aider à
tester efficacement vos microservices.
13. Test d'unité: Les tests unitaires consistent
à tester des composants ou des
unités
individuels de vos microservices. Ces tests se sont concentrés sur
la fonctionnalité d' une
classe ou d'une fonction de module unique, afin de garantir que chaque élément de votre base de code
fonctionne comme prévu. tests unitaires constituent
la base de toute stratégie de
test efficace et doivent constituer la première
étape de
la validation des fonctionnalités de
vos microservices. Lors de l'écriture de tests unitaires, il est essentiel de
créer des
scénarios de test couvrant un large
éventail de scénarios, y compris des entrées attendues
et inattendues. Cela permet de découvrir les cas
extrêmes et les bogues
potentiels avant qu'ils ne
se transforment en problèmes de production. frameworks
et outils de test unitaire les plus populaires incluent
J unit pour Java, Mocha pour JavaScript
et Python pour Python. Chacun de ces frameworks est
conçu pour permettre aux développeurs d'écrire
et d'exécuter plus facilement des tests unitaires, leur
permettant ainsi d'
identifier et de résoudre les
problèmes à un stade précoce du processus de
développement. Regardons un exemple
de test unitaire. Prenons l'exemple d'un microservice
qui gère les comptes utilisateurs. L'une de ses fonctions est de
créer de nouveaux comptes avec une adresse e-mail valide
et un mot de passe fort. Dans ce cas, des tests
unitaires peuvent être écrits pour vérifier les scénarios
suivants. Premièrement, la fonction
crée correctement un compte
avec un e-mail valide et un passe
fort. La fonction rejette toute demande de
création de compte avec un e-mail non valide. Troisièmement, la fonction rejette toute demande de création de compte avec un mot de passe faible. En utilisant des frameworks de tests unitaires
tels que JUnit ou moca, vous pouvez créer des scénarios de test pour
chacun de ces scénarios et assurer que votre fonction de
création de compte se comporte comme prévu.
14. Tests d'intégration: Une fois que vous avez vérifié
la fonctionnalité des composants
individuels par le
biais de tests unitaires, l'étape suivante est le test
d'intégration. Les tests d'intégration
visaient à valider les interactions entre
plusieurs composants ou services, en veillant à ce qu'ils fonctionnent
ensemble de manière fluide. Cela est particulièrement important dans une architecture de microservices où les services dépendent
souvent les uns des autres pour
fonctionner correctement. tests d'intégration doivent couvrir à la fois
les interactions internes au sein d'un même service et les interactions
externes
entre les services. Lorsque vous testez des
interactions externes, il est essentiel de prendre en compte
différents scénarios, tels que la latence du réseau, service
et la disponibilité, ainsi que les incohérences des données. Des outils tels que Postman, so PI et Insomnia sont souvent utilisés
pour tester les API RESTful, permettant aux développeurs d'envoyer requêtes
HTTP à leurs services
et de vérifier les réponses. En outre, les outils de
virtualisation des services, tels que Wire Mark or Not, peuvent être utilisés pour simuler le comportement des dépendances
externes, ce qui rend les tests d'intégration
plus fiables et plus efficaces. Examinons l'exemple de
test d'intégration, continuant avec l'exemple de microservice de
compte utilisateur. Supposons que ce service interagisse
également avec un service de notification par courrier électronique pour envoyer un e-mail de bienvenue une fois compte créé avec
succès Des tests d'
intégration pourraient
être effectués pour vérifier qu' un
service de compte utilisateur appelle correctement le
service de notification par e-mail avec les paramètres appropriés
tels que le destinataire, adresse
e-mail et le modèle d'
e-mail vers le courrier électronique réponse du
service de notification avec l'état de réussite lorsqu'il envoie
correctement l'e-mail. Pour tester ces scénarios, vous pouvez utiliser un outil tel que
Postman pour envoyer des demandes au service de
votre compte utilisateur
et vérifier si
les services de notification par e-mail ont été correctement appelés. Vous pouvez également utiliser un outil de virtualisation des services
tel que Wire Mark pour simuler le comportement
des services de notification par e-mail et valider les interactions
entre les deux services.
15. Tests de bout en bout: Les tests de bout en bout
adoptent une approche holistique pour valider l'ensemble du système
du point de vue de l'utilisateur. Ce type de test
implique la simulation scénarios utilisateur
réels afin de garantir que tous les composants et
services fonctionnent
correctement ensemble pour répondre
aux cas d'utilisation prévus. Les tests de bout en bout sont généralement plus complexes que les tests unitaires ou
d'intégration car ils nécessitent une
compréhension approfondie de l'architecture des systèmes
et des flux utilisateurs. écriture et la maintenance de ces tests peuvent
prendre beaucoup de temps, mais ils sont essentiels pour garantir la fiabilité globale de votre système basé sur des microservices. Des outils tels que Selenium, Puppeteer et Cyprus peuvent être utilisés
pour des tests de bout en bout, automatiser
les interactions des utilisateurs avec les applications
Web et valider
le comportement des systèmes. Examinons un exemple de
test de bout en bout. Dans un scénario de test de bout en bout pour le microservice de compte utilisateur, vous pourriez simuler l'
ensemble du parcours utilisateur, à savoir la d'un compte, connexion et la mise à jour de
son profil et, enfin, la suppression de
son compte. Le test consisterait à
enregistrer un nouveau compte avec des informations d'identification
valides pour vérifier que l'
e-mail de bienvenue a bien été reçu. Troisièmement, vous connecter avec
les informations d'identification nouvellement créées pour mettre à jour le
profil de l'utilisateur avec de nouvelles informations. Phi, en supprimant le compte de l'utilisateur l'aide d'un outil tel que
Selenium ou Cyprus, vous pourriez automatiser l'
ensemble de ce parcours utilisateur et vous assurer que tous les composants et services impliqués dans ces actions fonctionnent
ensemble comme prévu.
16. Test de contrat: Dans une architecture de microservices, il est essentiel de s'assurer
que les services respectent
les contrats qu'ils ont
établis avec leurs consommateurs. Les tests sous contrat valident qu' un service répond aux
attentes de ses clients en termes d'
entrées, de sorties et de comportement. tests
contractuels pilotés par les consommateurs sont une approche populaire qui consiste à créer des tests basés
sur les attentes des consommateurs. Cela permet
aux fournisseurs de vérifier que leurs services répondent aux exigences
des consommateurs tout en donnant aux consommateurs l'
assurance que les services du fournisseur sont
compatibles avec leurs besoins. Des outils tels que Packed
et Spring Cloud Contract sont largement utilisés pour implémenter le CDC dans les systèmes de
microservices. Regardons un exemple de
test de contrat. Supposons que le microservice du
compte utilisateur ait plusieurs consommateurs, tels qu'
une application Web , une application mobile et une intégration
tierce. Ces consommateurs
s'attendent
à ce que le service expose des points de terminaison spécifiques, l'exception de certains formats d'entrée et renvoie les données selon une structure
particulière. Dans le cadre d'un test de
contrat piloté par le consommateur, vous créeriez des tests basés sur les attentes de chaque consommateur, telles que les points finaux requis, validation des
entrées
et le format de sortie. À l'aide d'un outil tel que packed, vous pouvez générer des
fichiers de contrat qui décrivent ces attentes et
les partager avec le fournisseur. Le fournisseur peut ensuite utiliser
ces fichiers contractuels pour vérifier que son service répond aux
exigences du consommateur. En mettant en œuvre ces stratégies de
test, vous pouvez identifier et résoudre problèmes à un stade précoce du processus de
développement, garantissant ainsi la
fiabilité, la maintenabilité
et l'évolutivité du terme
microservices .
17. Sécuriser les microservices: La sécurisation des microservices
est un élément crucial du processus de
développement logiciel. Lorsque les microservices interagissent
entre eux et avec des clients externes, il est essentiel de
garantir l'intégrité, la confidentialité et
la disponibilité de ces services. Dans cette section, nous examinerons les meilleures pratiques pour
sécuriser vos
applications de microservices,
en sécuriser vos
applications de microservices, abordant des aspects
tels que l'authentification, l' autorisation et
la sécurisation des communications entre les services.
18. Authentification: L'authentification est le
processus de vérification de l'identité d'un utilisateur, d'un
système ou d'un service. Dans une architecture de microservices, vous devez authentifier
à la fois les clients externes et services
internes qui interagissent
avec vos services. Il existe plusieurs approches pour implémenter l'authentification certaines méthodes populaires
étant les jetons Web JSON. Jwt est un format de jeton
compact largement utilisé qui vous permet transmettre des
informations
en toute sécurité entre des parties et dans le contexte
des microservices Vous pouvez utiliser JWT pour coder l'
identité d'un utilisateur ou d'un service, en émettant un jeton en cas
d'authentification réussie Chaque demande ultérieure adressée
à vos services doit inclure le
JWT dans l'en-tête, permettant à vos services de
vérifier l'identité des couleurs. Imaginons un scénario
dans lequel vous disposez d'un microservice de gestion des utilisateurs chargé de gérer
l'authentification des utilisateurs. Lorsqu'un utilisateur se connecte à l'
aide de ses informations d'identification, le Service vérifie
les informations d'identification et émet un
jeton Web JSON au client,
refuse, puis inclut ce jeton et les demandes
ultérieures adressées à d'autres microservices. Chaque microservice
peut
vérifier indépendamment la signature du jeton, garantissant ainsi l'authentification de l'utilisateur
sans avoir besoin d'un service
d'authentification centralisé. Dans cet exemple de code, le
service de gestion des utilisateurs rencontre des problèmes chez JWT en cas
d'authentification réussie. To OAuth 2.02 0.0 est une
norme largement adoptée pour autoriser l' accès aux
applications Web et aux API. Dans un scénario de microservices, vous pouvez utiliser OAuth
2.0 pour déléguer responsabilités
d'authentification à un fournisseur d'
identité centralisé ou à un service d'authentification. Vos microservices peuvent ensuite s'appuyer sur cette autorité de confiance pour vérifier l'identité des
clients et des autres services.
19. Autorisation: Une fois qu'un utilisateur ou des services
sont authentifiés, vous devez appliquer
des contrôles d'accès afin de vous assurer
qu'ils disposent des autorisations nécessaires pour
accéder à vos ressources de
microservices. Certaines stratégies de mise
en œuvre de l'autorisation et vos microservices consistent en un contrôle d'accès
basé sur les rôles. Avec le RBAC, vous définissez des rôles avec des autorisations spécifiques et ces rôles sont
attribués aux utilisateurs ou aux services. Lorsqu'une demande arrive, vous vérifiez le rôle des couleurs et les autorisations associées avant d'accorder l'accès aux ressources
demandées. Supposons que vous disposiez d'une application de
commerce électronique avec plusieurs microservices, tels que la gestion des commandes , la gestion des
produits et la gestion des
stocks, différents utilisateurs peuvent
avoir différents niveaux d'accès à ces services. Par exemple, un administrateur
peut avoir accès à tous les services, tandis qu'
un vendeur peut avoir accès à la gestion des commandes et gestion des
produits uniquement pour implémenter ce niveau de contrôle Vous pouvez utiliser le RBAC lorsque vous
générez un JWT pour un utilisateur, incluant son rôle dans
la charge utile du jeton. Chaque microservice peut ensuite vérifier le rôle de l'utilisateur par
rapport à un ensemble de rôles
prédéfinis afin de
déterminer si l'utilisateur est autorisé à accéder à
la ressource demandée. Dans cet exemple de code Node.js, le
microservice de gestion des commandes vérifie si un utilisateur possède le rôle requis
pour accéder à la ressource. contrôle d'
accès basé sur les attributs ou back utilise des
attributs pour
définir des politiques de
contrôle d'accès qui offrent plus de
flexibilité que le RBAC, vous
permettant de créer des
politiques dynamiques basées sur les couleurs, les attributs et le
contexte de la demande.
20. Sécuriser la communication: Lorsque les microservices interagissent
entre eux et avec des clients externes, il est essentiel de sécuriser canaux de
communication afin de protéger les
données contre tout accès non autorisé ,
toute altération ou toute écoute clandestine. Il existe plusieurs
méthodes pour sécuriser les communications dans un environnement de
microservices. première, Transport Layer
Security, TLS, est la norme de facto pour
sécuriser les communications
sur un réseau. Il chiffre les données transmises entre les clients et les services, les protégeant ainsi contre tout accès
non autorisé et temporaire vers un protocole TLS mutuel. Alors que le protocole TLS standard vérifie
l'identité du serveur, le protocole mTLS fournit un niveau de
sécurité
supplémentaire en vérifiant également l'identité du
client. Cela est particulièrement utile dans un
environnement de microservices où services doivent souvent
s' authentifier mutuellement
avant d'échanger des données. La mise en œuvre de mTLS
permet de garantir que seuls les
clients et services autorisés peuvent communiquer avec
vos microservices.
21. Prendre les préoccupations de sécurité propres aux microservices: L'architecture des microservices pose des défis
de sécurité uniques qui doivent être résolus. Examinons quelques exemples. Premièrement, la sécurité de la passerelle API En tant que point d'entrée vers
vos microservices, la passerelle API joue un rôle crucial dans la
sécurisation de votre système. Assurez-vous que votre
passerelle d'API met en œuvre robustes d'authentification, d'
autorisation, de limitation du débit mécanismes
robustes d'authentification, d'
autorisation, de limitation du débit
et de validation des entrées afin de protéger vos
microservices contre demandes
malveillantes protection contre le déni
de service distribué. architectures de microservices Les architectures de microservices sont particulièrement vulnérables aux attaques
DDoS car
leur
nature distribuée peut créer de multiples
points de défaillance. Pour atténuer les risques d'attaques DDoS. Vous devez mettre en œuvre des mécanismes de
défense tels que la limitation du débit, filtrage
IP et l'analyse
du trafic. Vous pouvez également
tirer parti des services de protection
DDoS basés sur le cloud proposés par des fournisseurs tels qu'AWS Shield,
Cloudflare ou Akamai. Troisièmement, découverte sécurisée des services Dans une architecture de microservices, services doivent se découvrir uns les autres pour
communiquer efficacement, garantissant ainsi la sécurité de votre mécanisme de
découverte de services, essentiel pour empêcher des services
non autorisés de
participer à votre système. Au lieu de recourir à des solutions de découverte de
services sécurisées, telles que
des conseils en matière d'ACL et de TLS, ou optez pour un contrôle d'
accès basé sur les rôles et un cryptage client-serveur. Pour des raisons de sécurité des données,
les microservices
géraient souvent des données sensibles qui devaient être protégées à la fois en
transit et au repos. Pour sécuriser les données au repos à l'aide mécanismes de
corruption et de contrôle d'accès fournis par vos solutions de stockage de données,
tels que le cryptage des bases de données contrôles d'accès au niveau du
stockage. De plus, utilisez toujours protocoles de communication
sécurisés tels que HTTPS, gRPC sur TLS pour protéger les
données en transit. En adhérant à ces bonnes
pratiques et en incorporant
des exemples concrets, vous pouvez garantir la sécurité et la fiabilité de vos applications
de
microservices . Comprendre les défis
de sécurité uniques et les
relever efficacement vous
aidera à créer un
système logiciel robuste, maintenable et
évolutif qui résiste au paysage des menaces
modernes. Au fur et à mesure que vous progressez dans
votre parcours vers les microservices, toujours la priorité à la sécurité et restez au courant des
derniers développements, outils et méthodologies
pour assurer la sécurité de votre système.
22. Stratégies de déploiement: Le déploiement de microservices est un aspect essentiel de la mise en œuvre d'une architecture de
microservices réussie. Un déploiement approprié garantit que vos
applications de microservices sont résilientes, performantes et facilement évolutives. Cette section aborde les
différentes stratégies de déploiement, la conteneurisation et l'
orchestration à l'aide d' outils tels que Kubernetes. Nous verrons également comment
dimensionner efficacement vos applications de microservices pour s'adapter à l'évolution des charges. Différentes
stratégies de déploiement peuvent être utilisées pour atteindre
différents objectifs, tels que l'absence de temps d'arrêt, annulations et le lancement progressif des
fonctionnalités. Examinons les trois stratégies de déploiement
courantes.
23. Déploiement Blue-Green: Cette stratégie implique le
déploiement d'une nouvelle version de votre diplôme de microservice
parallèlement à la version actuelle Le trafic bleu
est ensuite progressivement transféré de l'environnement bleu
à l'environnement universitaire. En cas de problème, trafic peut être facilement redirigé vers
l'environnement bleu, minimisant ainsi l'impact
des échecs de déploiement. Regardons un exemple de
déploiement bleu-vert pour illustrer un déploiement
bleu-vert Supposons que nous ayons une application de
boutique en ligne dotée d'un microservice
chargé du traitement des paiements. Nous avons développé
une nouvelle version
du microservice de traitement des paiements qui introduit certaines optimisations des
performances. Pour déployer cette nouvelle version
avec un temps d'arrêt minimal, nous pouvons utiliser la stratégie de
déploiement bleu-vert. abord, créez un environnement distinct
avec la nouvelle version
du
microservice de traitement des paiements et assurez-vous que l'environnement est configuré
avec les ressources nécessaires, telles que des bases de données et files de
messages, pour prendre en charge
le nouveau microservice. Ensuite, configurez
votre équilibreur de charge ou passerelle d'
API pour acheminer un petit pourcentage
du trafic vers l'environnement vert, tandis que la majeure partie
du trafic continue d'être dirigée vers l'environnement
bleu. Free surveille en permanence
la nouvelle version
du microservice de traitement des paiements et l'environnement vert, en vérifiant l'absence d'erreurs ou problèmes de
performance afin d'
augmenter progressivement le pourcentage de trafic acheminé vers l'
environnement vert à mesure que vous gagnez en
confiance dans la nouvelle version,
sa stabilité et ses performances. Lorsque l'environnement vert
a reçu 100 %
du trafic et que
la nouvelle version
du microservice
fonctionne comme prévu, vous pouvez désactiver
l'environnement bleu.
24. Déploiement des canaries: Cette approche consiste en une nouvelle version
des microservices déployés
auprès d'un petit sous-ensemble d'utilisateurs. surveillance et la validation
sont effectuées pour s'assurer que la nouvelle version
se comporte comme prévu. En cas de succès, la
nouvelle version sera progressivement déployée auprès de
l'ensemble de la base d'utilisateurs. Cette stratégie vous permet
de tester de nouvelles fonctionnalités auprès d' un public plus restreint et de
détecter les problèmes à un stade précoce. Regardons un exemple de
déploiement de Canary. Supposons que nous ayons une plateforme de
commerce électronique dotée d'un microservice chargé de
gérer les profils des clients. Nous souhaitons tester une nouvelle fonctionnalité
qui permet aux clients de lier leurs
comptes de réseaux sociaux à leurs profils. Pour déployer cette fonctionnalité à l'aide de la stratégie de déploiement Canary. abord, créez
une nouvelle version
du microservice de profil client qui inclut la fonctionnalité Lincoln
sur les réseaux sociaux. Déployer la nouvelle version
du microservice auprès d'un
petit sous-ensemble d'utilisateurs, en veillant à
surveiller attentivement et à recueillir les
commentaires de ces utilisateurs. Troisièmement, si la nouvelle
fonctionnalité fonctionne bien et reçoit des commentaires
positifs, déployez progressivement le microservice
mis à jour d'un public plus large. Pour continuer à surveiller et valider les nouvelles fonctionnalités, les
performances et la stabilité. Au fur et à mesure que vous étendez le déploiement, en
cas de problème, vous pouvez revenir
à la version précédente
du microservice.
25. Déploiement de roulement: La
stratégie de déploiement continu
implique la prise d'une instance
du microservice à la fois. Le processus de déploiement passe par chaque instance de
manière séquentielle ce qui vous permet de
surveiller la mise à jour et la restauration en cas de problème. Les déploiements continus
minimisent l'impact sur l'ensemble du système car seul un faible pourcentage d' instances sont mises
à jour à tout moment. Examinons un exemple de
déploiement continu. Pour démontrer un
déploiement continu, prenons l'exemple d'une application de
prévisions météorologiques dotée d'un microservice chargé de
récupérer les données météorologiques à
partir d'une API externe. Nous souhaitons déployer une mise
à jour de ce microservice qui utilise une nouvelle API pour
récupérer les données météorologiques. Pour minimiser l'impact
du déploiement, nous pouvons utiliser la stratégie de
déploiement continu. d'abord, préparez
la nouvelle version
du microservice de récupération de données météorologiques qui utilise la nouvelle API pour déployer la nouvelle version
du microservice sur
une instance unique, vous
assurant de surveiller performances
et la stabilité de
cette instance. Troisièmement, s'ils ont été mis à jour
et fonctionnent correctement depuis, passez à
la mise à jour
de l'instance suivante du microservice. Pour continuer à mettre à jour les
instances une par une, en surveillant de près les
performances et la stabilité de chaque instance au fur et à mesure de sa
mise à jour en cas de problème, rétablissez
le déploiement vers la version précédente
du microservice. En utilisant ces stratégies de
déploiement, vous pouvez minimiser les temps d'arrêt
et réduire le risque
de problèmes dans votre application de
microservices. Sélectionnez la stratégie de
déploiement la plus appropriée en fonction de leurs
besoins et exigences spécifiques. Prise en
compte de facteurs tels que la complexité du système, l'impact sur les utilisateurs et le
niveau souhaité d'atténuation des risques.
26. Containerization: La conteneurisation, qui utilise
souvent des données plus sombres, est une méthode populaire pour empaqueter et déployer
des microservices. Les conteneurs offrent
plusieurs avantages, notamment l'isolation. Chaque microservice s'exécute dans
un environnement isolé, ce qui réduit le risque de conflits et simplifie la gestion des
dépendances. de vue de la portabilité, les conteneurs peuvent fonctionner sur n'importe quelle plateforme
supportant la technologie Dark, ce qui facilite le déploiement et l'exécution vos microservices dans
différents environnements. Trois conteneurs d'évolutivité
peuvent être facilement répliqués, ce qui permet une mise à l'échelle rapide de vos microservices afin de
gérer des charges accrues. Examinons un
exemple de création d' un conteneur Docker pour un
microservice Node.js afin de créer
un fichier Docker dans le répertoire
racine de
vos microservices avec le contenu suivant. Créez l'image Docker à l'aide
de la commande suivante. Docker build t, mon microservice exécutant un conteneur à partir de
l'image Docker exécute 3 000 microservices P3 000.
27. Orchestration avec Kubernetes: Kubernetes est un
puissant outil d'
orchestration de conteneurs qui permet
de déployer, dimensionner et de gérer des applications
conteneurisées, y compris des microservices. Les concepts de Kubernetes incluent des nœuds uniques, des machines
physiques ou virtuelles qui transforment vos conteneurs en pods. Unité
la plus petite et la plus simple du modèle d'objet Kubernetes représentant une instance
unique d' un processus en cours d'exécution dans un cluster. Trois services un point de terminaison réseau stable
qui peut être utilisé pour exposer vos microservices à d'autres composants
ou à des dépliants externes pour les déploiements ou une abstraction de
haut niveau pour gérer l'
état souhaité de vos microservices, tel que le nombre de
répliques et la stratégie de mise à jour. Voici un exemple de déploiement d' un microservice dans le fichier YAML
point de déploiement créé par Kubernetes pour la
première fois avec le contenu suivant. Ensuite, appliquez la configuration de
déploiement à l'aide de la commande
kubectl apply suivante.
28. Microservices : horizontale et verticale: architectures de microservices doivent être conçues pour être évolutives, afin de garantir des
performances et une résilience optimales. les principales approches de mise à l'échelle
des microservices, citons la mise à l'échelle
horizontale, qui consiste à
ajouter d'autres instances de
vos microservices pour
gérer un plus grand nombre de lobes. Il s'agit de l'approche la plus
courante pour dimensionner
les microservices. Elle peut être réalisée à l'aide de Kubernetes en ajustant le champ des répliques dans votre configuration de
déploiement. à l'échelle verticale,
en augmentant les ressources telles que processeur et la mémoire disponibles
pour vos microservices. Cela peut être utile pour
des charges de travail spécifiques, mais peut présenter des limites en raison des contraintes
matérielles sous-jacentes. Lors de la conception de vos
microservices, tenez compte des principes suivants
pour garantir leur évolutivité. Conçus pour l'apatridie, microservices doivent
être plus stricts, c'est-à-dire qu'ils ne doivent pas
dépendre du stockage local de l'État. Cela vous permet de
dimensionner facilement vos microservices horizontalement sans vous
soucier la
cohérence
des données entre les instances. Implémentez la mise en cache. Utilisez des stratégies
de mise en cache pour stocker en mémoire les données fréquemment
consultées, réduire la latence et
améliorer les performances. Stockage des données optimisé, choix des
technologies de base de données adaptées vos microservices et
optimisation des performances de requêtes afin
de réduire les blocages
lors de la mise à l'échelle. Pour illustrer comment dimensionner efficacement les
microservices, prenons un
exemple d'application comportant plusieurs microservices, notamment un service de
catalogue de produits, un service d'authentification
utilisateur
et un service de traitement des commandes. d'exemple de mise à l'échelle horizontale, supposons que le
service de catalogue de produits une augmentation significative
du trafic en raison d'une campagne
marketing. L'augmentation du trafic entraîne des temps de réponse
plus lents et réduit les performances. Pour faire
face à l'augmentation de la charge, vous pouvez adapter horizontalement
le service de catalogue de produits. Tout d'abord, assurez-vous que votre service de
catalogue de produits est plus strict, ce qui vous permet d'
ajouter davantage d'instances sans vous soucier de la cohérence
des données. Ensuite, mettez à jour la configuration de votre
déploiement et Kubernetes en augmentant
le champ des répliques, qui détermine le
nombre d'instances exécutées pour un
microservice spécifique. Par exemple, vous pouvez augmenter
le nombre de répliques de 3 à 6 pour doubler la capacité de votre service de catalogue de
produits. Configurez votre équilibreur de charge ou passerelle d'
API pour
répartir le trafic de
manière uniforme entre les instances
disponibles du service de catalogue de produits. Surveillez en permanence
les performances et latence du service de
catalogue de produits, en vous assurant que la
capacité accrue répond à la demande. Regardons un exemple de mise à
l'échelle verticale. Le
service d'authentification des utilisateurs connaît un pic de demandes à mesure que le
nombre d'utilisateurs augmente, ce qui entraîne une
augmentation de l'utilisation du processeur. Pour y remédier,
vous pouvez
dimensionner verticalement le service d'
authentification utilisateur. abord, analysez l'utilisation des
ressources de votre
service d'authentification utilisateur afin déterminer l'
augmentation requise des ressources de processeur et de
mémoire pour mettre à jour la configuration du déploiement
et Kubernetes en augmentant les
limites de ressources telles que le processeur et la
mémoire alloués au service
d'authentification utilisateur. Troisièmement, vérifiez que l'
allocation de ressources mise à jour améliore les performances
et les temps
de réponse du service
d'authentification utilisateur. Principes de mise à l'échelle en pratique, appliquons les principes
d'apatridie, de mise en cache et d'optimisation du stockage des données
à notre exemple d'application. Pour le service de catalogue de produits, garantissez l'apatridie en
stockant les données des produits dans un magasin de données centralisé
plutôt que dans
des instances individuelles. Cela vous permet de faire
évoluer le service horizontalement sans vous
soucier de la cohérence des données. Implémentez la mise en cache pour le
service de catalogue de
produits afin de
stocker en mémoire les informations sur les produits fréquemment consultées, réduisant ainsi
le besoin d'accéder au magasin de données pour chaque demande améliorant
ainsi les temps de réponse. Stockage des données optimisé pour le
service de traitement des commandes en choisissant une
technologie de base de données adaptée, par exemple une base de données Nosql pour un schéma
flexible et écritures
rapides et en optimisant les performances des
requêtes. Cela garantit que le
service peut gérer efficacement des charges
accrues à
mesure que vous adaptez l'application. En suivant ces
bonnes pratiques et stratégies, vous pouvez adapter efficacement vos applications de microservices vos applications de microservices
à l'évolution des charges, tout en garantissant des
performances et une résilience optimales.
29. Introduction à la surveillance et à l'observabilité: Dans une architecture de microservices, les
applications sont composées de plusieurs services indépendants qui
communiquent entre eux
pour répondre aux
exigences de l' entreprise. Par conséquent, il est essentiel de
disposer d'une stratégie de surveillance et
d'observabilité efficace pour garantir la santé et les
performances globales du système. Dans cette section, nous
aborderons l'importance
de la surveillance et de l' observabilité dans un environnement de microservices et
présenterons les meilleures pratiques
et les outils de surveillance, de journalisation et de suivi à l'aide exemples
pratiques, de surveillance
par rapport à l'observabilité. Avant de se plonger dans les
meilleures pratiques et les meilleurs outils, il est essentiel de faire la différence entre surveillance
et observabilité. surveillance fait référence au processus de collecte et d'analyse des données de votre application afin
d'identifier les problèmes potentiels, les problèmes de
performance
ou d'autres anomalies. La surveillance vous fournit des informations
précieuses sur l'état
actuel de votre système, ce qui vous permet de
résoudre les problèmes de manière proactive avant
qu'ils ne s'aggravent. Par exemple, la surveillance peut vous
aider à identifier un pic de taux d'erreur au sein
d'un microservice spécifique. Vous pouvez ensuite rechercher
la cause des erreurs et appliquer des correctifs pour
éviter d'autres problèmes. L'observabilité, quant à elle, est la capacité de comprendre
l'état interne de notre système sur la base des données générées par le système lui-même, telles que les journaux,
les mesures et les traces. Et le système observable vous
fournit
les données nécessaires
pour diagnostiquer et résoudre les problèmes, même dans environnements de microservices
complexes. Imaginez un scénario dans lequel un utilisateur rencontre des temps de réponse lents lorsqu'il interagit
avec
votre application avec un haut niveau
d'observabilité Vous pouvez analyser
les traces, les journaux et les mesures pour identifier
la cause première du problème et appliquer
les correctifs nécessaires.
30. Meilleures pratiques de surveillance et d'observabilité: La mise en œuvre d'une stratégie
complète de surveillance et d'observabilité est essentielle pour maintenir
l'intégrité et les performances de vos applications de
microservices. Tenez compte des
meilleures pratiques suivantes. Premièrement, collectez et
agrégez des indicateurs. Collectez les indicateurs de
chaque microservice, tels que les taux de demandes, taux
d'erreur et les types de réponses, regroupez ces indicateurs dans un emplacement
centralisé pour obtenir une vue d'ensemble de l'
état et des performances du système. Par exemple, une simple
application de commerce électronique peut être composée de microservices pour la gestion des
stocks, l'authentification des utilisateurs et le
traitement des commandes en collectant des
métriques auprès de chacun des
ces services et leur
regroupement dans
un emplacement central. Vous pouvez surveiller l'
état général de l'application et identifier rapidement les
problèmes ou les blocages. Pour implémenter la journalisation structurée, utilisez la connexion structurée pour enregistrer événements et les contextes
importants
au sein de vos microservices. Les journaux structurés sont
plus faciles à analyser, à filtrer et à analyser, ce qui vous permet identifier
et de résoudre
rapidement les problèmes. Par exemple, au lieu d'enregistrer des messages texte
non structurés, utilisez JSON ou un autre format
structuré pour enregistrer les informations pertinentes, telles que l'horodatage, le nom du
microservice, niveau de
journalisation et un message
décrivant l'événement. Cela facilite la
recherche et l'analyse des données des journaux, qui vous permet d'identifier les tendances et modèles au sein de
vos microservices. Troisièmement, le traçage distribué,
implémentez le suivi distribué pour suivre les demandes au fur et à mesure
qu'elles transitent par vos microservices. Cela vous permet de comprendre les interactions
entre les services et identifier la source
de problèmes potentiels
ou de problèmes de performance. Par exemple, dans l'application de commerce électronique
mentionnée précédemment, un utilisateur peut rencontrer temps de réponse
lents
lorsqu'il passe une commande. En mettant en œuvre le suivi
distribué, vous pouvez suivre la demande depuis l'interface utilisateur
via des microservices d'authentification, de gestion des
stocks et de
traitement des commandes. Cela peut vous aider à
identifier la source
du ralentissement et à prendre
des mesures correctives. Pour configurer les alertes
et les notifications. Configurez des alertes et
des notifications pour vous informer de
manière proactive
des problèmes potentiels, tels que des
taux d'erreur accrus ou des pics de latence. Cela vous permet de répondre
rapidement aux problèmes avant qu'ils n'
affectent vos utilisateurs. Par exemple, configurez une alerte pour un microservice qui
envoie un e-mail ou une notification Slack lorsque le taux d'erreur dépasse
un seuil prédéfini. Cela peut vous aider à
identifier et à résoudre rapidement les problèmes en minimisant l'
impact sur vos utilisateurs.
31. Outils et technologies: De nombreux outils
et technologies
de surveillance sont disponibles pour vous aider à mettre en œuvre une stratégie de surveillance
et d'observabilité
efficace . Vous trouverez ci-dessous quelques outils
populaires que vous pouvez utiliser dans vos
applications de microservices. Un, Prométhée. Prometheus est un système de
surveillance et d'
alerte open source qui collecte et stocke des statistiques
chronologiques à partir de vos microservices. Il intègre un puissant langage
de
requête de QL qui
vous permet d'analyser
les mesures collectées et de générer des informations
utiles sur l'état et les performances de
votre application. Pour rembourser. Rwanda est une
plateforme de
visualisation et d'analyse open source qui s'
intègre à diverses sources de données, telles que Prometheus, pour créer des tableaux
de bord personnalisables. Le remboursement vous permet de visualiser
les indicateurs, de créer des alertes et de mieux
comprendre les performances et l'état
de santé de vos microservices. Three, ELK Stack, ELK Stack, Elasticsearch,
Log Stash et Kibana sont une solution
open source populaire pour la gestion et l'analyse des journaux. Elasticsearch stocke
et indexe les journaux, Log Stash traite et
enrichit les données des journaux. Kibana fournit également une
interface utilisateur permettant de rechercher, visualiser et d'analyser les journaux. Pour la gélose. Hagar est un système de
suivi distribué open source développé par Era qui fournit des fonctionnalités de suivi de
bout en bout
pour vos microservices. Il vous permet de suivre les demandes fur et à mesure qu'elles transitent par
vos services, ce qui vous permet d'identifier les blocages et d'identifier
la source des problèmes.
32. Surveillance de microservices dans Kubernetes: Kubernetes est une
plateforme d'orchestration de
conteneurs largement utilisée qui fournit un support intégré pour surveillance et l'observabilité. Lorsque vous déployez des microservices
dans Kubernetes, vous pouvez tirer parti des fonctionnalités
suivantes pour améliorer votre stratégie de surveillance et
d'observabilité. Un, le serveur de métriques Kubernetes. Le serveur de métriques est un composant
intégré de Kubernetes qui collecte des mesures d'utilisation
des ressources, telles que l'utilisation du processeur et de
la mémoire à partir de
vos microservices. Ces indicateurs peuvent être utilisés pour surveiller les performances
de vos services
et prendre des décisions éclairées concernant l'allocation et la mise à l'échelle des
ressources. ce qui concerne la
journalisation dans Kubernetes, Kubernetes prend en charge l'agrégation des journaux
au niveau du cluster, ce qui vous permet de collecter les
journaux de tous vos microservices et de
les stocker dans un emplacement central. Cela simplifie la
gestion et l'analyse des journaux, vous
aidant à identifier les tendances et modèles au sein de vos services. Troisièmement, Kubernetes, journalisation des
entrées et des sorties. journalisation des entrées et
des sorties fournit une visibilité sur le trafic réseau entrant et sortant de vos microservices. En analysant ces données, vous pouvez détecter les menaces
de sécurité potentielles ou les problèmes de
performance
de votre application. En résumé, la surveillance et observabilité sont des
aspects essentiels de la gestion des applications de
microservices, car elles vous
permettent de
maintenir l'intégrité et les performances de votre système. En mettant en œuvre les
meilleures pratiques et tirant parti
des outils et technologies appropriés, vous pouvez diagnostiquer
et résoudre efficacement les problèmes, garantissant ainsi le bon fonctionnement de vos applications
basées sur des microservices.
33. Coque de Microservices Netflix: Netflix, le
premier
service de streaming vidéo au monde avec plus de 220
millions d'abonnés, a réussi à créer une
architecture système robuste, évolutive et résiliente en adoptant
des microservices et un ws. Cette étude de cas examine l'architecture du système de
Netflix et présente les leçons qui
peuvent être tirées de mise en œuvre réussie
de microservices. L'architecture système de Netflix comprend deux composants principaux chez
Ws pour héberger les
données et Open Connect, un réseau de
diffusion de contenu interne pour répondre aux demandes. Nous utilisons ces deux composants
simultanément pour offrir une expérience fluide
à des millions d'utilisateurs. L'architecture logicielle est composée de trois composants
principaux : le
client, le backend et le réseau de diffusion de
contenu. Netflix a développé
de nombreux microservices pour gérer différents
aspects de son activité, tels que la gestion des utilisateurs, la gestion
du contenu, les moteurs de
recommandation, la
facturation et les services de lecture. Chaque microservice est développé, déployé et géré
indépendamment, ce qui facilite la mise
à jour et la mise à l'échelle des services
individuels sans
affecter l'ensemble du système. Netflix est une
passerelle d'API construite à
l'aide de la bibliothèque du zoo qui agit comme un point d'entrée unique pour
toutes les demandes externes. La passerelle API est
chargée de gérer le routage, l'authentification,
la limitation du débit et la sécurité. En utilisant une passerelle d'API, Netflix peut rationaliser
la communication entre les clients
et les microservices, en fournissant une
interface unifiée et améliorant la
gérabilité des systèmes. Examinons les modèles de
communication utilisés par les microservices Netflix. Premièrement, la communication synchrone implique une
communication directe en temps réel
entre les microservices. En général, Netflix
utilise les protocoles HTTP, HTTPS et des API
RESTful pour les communications
synchrones Lorsqu'un utilisateur lance une demande, exemple pour lire une vidéo, plusieurs microservices
communiquent de manière synchrone pour valider la demande de l'utilisateur, vérifier l'état de l'abonnement
et récupérer l'URL de la vidéo. Ainsi, une
communication synchrone permet aux microservices d'
interagir sans attendre de réponse
immédiate. D'où le couplage,
leurs dépendances. Netflix utilise des files d'attente de messages, comme Apache Kafka pour une communication
synchrone, permettant aux microservices
d'échanger des messages sans nécessiter de réponse
immédiate. Ce
modèle de communication est souvent utilisé pour des tâches gourmandes en données, telles que la
connexion des utilisateurs, génération de recommandations
ou la mise à jour des métadonnées vidéo. Dans un écosystème de microservices, il est essentiel de disposer
d'un mécanisme
permettant aux microservices de se découvrir
mutuellement et de répartir les demandes
entrantes sur
plusieurs instances
à mutuellement et de répartir les demandes
entrantes sur des
fins d'équilibrage de charge Netflix a développé Eureka, un registre de
services permettant découverte de
services et équilibrage de
charge entre
ses microservices Eureka permet
à chaque microservice de s'enregistrer lui-même et découvrez d'autres services
enregistrés pour communiquer efficacement avec
eux. Netflix a implémenté
la bibliothèque Hystrix en
tant que mécanisme de disjoncteur pour gérer défaillances
potentielles et la communication avec les
microservices Hystrix boucle la communication
entre les microservices surveille le
taux de réussite des demandes si le taux d'erreur dépasse un seuil
prédéterminé, Hystrix déclenche le
disjoncteur, interrompant ainsi la communication
avec le service défaillant et en fournissant une réponse de
secours. Cette approche permet de maintenir la résilience
du système et minimiser l'impact des
défaillances sur l'ensemble du système.
34. Leçons apprises des Microservices de Netflix: Sur la base de l'étude de cas de Netflix, voici les
leçons tirées de mise en œuvre de microservices par
Netflix. Premièrement, adoptez la modularité. décomposition de programmes
logiciels plus volumineux en composants
plus petits
permet une mise à l'échelle rapide, isolation
facile des composants
défectueux et des
capacités de suivi améliorées. Pour tirer parti du Cloud. L'utilisation de
services cloud tels qu'AWS peut fournir une
infrastructure de données évolutive et robuste capable de
répondre aux demandes de
millions d'utilisateurs. Troisièmement, la diffusion de
contenu optimisée, développement d'un réseau de diffusion de
contenu interne tel qu'Open Connect peut garantir une
expérience de streaming fluide aux utilisateurs différentes zones
géographiques. Pour surveiller et
isoler les microservices. La mise en œuvre d'outils tels que Zoom et Hystrix pour surveiller le
trafic, sécuriser les données et isoler les
microservices peut contribuer à maintenir un système
résilient aux performances élevées. Cinquièmement, utiliser le traitement
des données en temps réel, tirer parti
des pipelines de traitement de flux et des outils de mégadonnées peut améliorer l'expérience utilisateur en fournissant des recommandations
et des suggestions
personnalisées. En conclusion, architecture des microservices de
Netflix repose sur divers
modèles et outils de communication pour permettre interactions
efficaces et fiables entre les services. En mettant en œuvre la découverte de
services , l'équilibrage de
charge,
des disjoncteurs et des passerelles d'API, Netflix a créé un système résilient et hautement
évolutif capable de traiter des millions de demandes émanant de sa base d'utilisateurs
mondiale. compréhension
de ces modèles
et outils de communication peut fournir des informations
précieuses aux organisations
qui souhaitent adopter une architecture similaire
basée sur des microservices.
35. Exercice : déterminer les limites de service: Bienvenue dans
cet exercice pratique sur l'identification des limites des
services dans l'architecture
des microservices. cet exercice, nous mettrons en pratique
nos
connaissances en matière de conception de microservices et décomposerons une application de
commerce électronique hypothétique en microservices potentiels. Allons-y. Très bien, passons brièvement en revue l'application de commerce électronique avec
laquelle je travaillerai. Notre application comporte six domaines fonctionnels
principaux. Premièrement, du catalogue
de produits au panier. Trois, la gestion des commandes. Pour la gestion des stocks,
combattez la gestion des utilisateurs. Sixièmement, le traitement des paiements. Votre tâche consiste à utiliser les principes de la décomposition des
services pour identifier les microservices potentiels pour chaque domaine fonctionnel, tenant compte des dépendances
entre eux et en visant à minimiser le couplage tout en
maximisant la cohésion.