Académique Documents
Professionnel Documents
Culture Documents
Logiciel
Architecture:
MicroserviceArchitecture
Régis ATEMENGUE
@regis_ate www.regisatemengue.com
Machine Translated by Google
Objectifs du cours
Comprendre le microservice
Architecture et Microservice
Terminologie
@regis_ate www.regisatemengue.com
Machine Translated by Google
ConceptionMonolithe
Les monolithes peuvent être une décision architecturale
adéquate en fonction de la situation, ne pas le reconnaître limite
nos options
Le type de monolithes le plus fréquent est celui qui a été construit
sur plusieurs années sans limites claires et logiques
enchevêtrées.
Application Web de commerce électronique
Modèle
Base de données unique
Interface utilisateur
@regis_ate www.regisatemengue.com
Machine Translated by Google
DéployerMonolith
L'application est un artefact unique et est déployée en une seule fois. Tout
cela est un processus unique s'exécutant sur une machine.
Il y a des avantages à maintenir une seule application avec une seule base de
code. Nous manquons souvent ces avantages car nous sommes
submergés par leurs limites.
Un monolithe est une excellente option pour le prototypage
précoce jetable. Vous avez besoin de moins de compétences techniques et
architecturales.
Monolithe unique
Base de données unique
Interface utilisateur
ExposeAPIS
Plusieurs instances
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qui ne va pas avec le monolithe
Un monolithe est une application entière qui s'exécute en un seul Mettre à jour le code d'un monolithe est une affaire risquée. C'est tout
processus. ou rien. Lorsque vous poussez un changement de code qui brise le
monolithe, toute l'application cesse de fonctionner, vos clients sont
la majorité des logiciels ont été développés avant la révolution du laissés au sec et votre entreprise perd de l'argent.
cloud et les microservices.
La plupart des produits ont généralement besoin de croître et
d'évoluer. et à mesure que votre monolithe grossit et possède des
fonctionnalités plus utiles, il devient plus difficile de justifier de
jeter le prototype.
@regis_ate www.regisatemengue.com
Machine Translated by Google
Monolithe
Avantages Les inconvénients
'
Simple à développer Nouveaux membres de l'équipe productivité
Simple à construire Des équipes en croissance
Simple à tester Code plus difficile à comprendre
Simple à déployer Pas de technologies émergentes
Simple à mettre à l'échelle Scaler pour de mauvaises raisons
Le flux d'affaires est visible Conteneur surchargé
Aucun surcoût réseau et limite les dépendances externes
LocalValidation
Réutilisation du code
Test de bout en bout
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'un microservice ?
Le microservice s'inspire fortement des idées de conception pilotée par le domaine (DDD),
un processus de conception logique pour les projets logiciels. Un concept en particulier
DDD. contexte délimité, microservice décidément inspiré
Le concept de borné représente un style de découplage. Lorsqu'un développeur définit un
domaine, ce domaine comprend de nombreuses entités et comportements, identifiés
dans des artefacts tels que des schémas de code et de base de données.
@regis_ate www.regisatemengue.com
Machine Translated by Google
DomainDrivenDesign
Domaine : Ecommerce
Sousdomaines
Utilisateur
Commande
Produit
Catalogue
Dépendances
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'un microservice ?
Micro
Microservice
Service
Le microservice est un processus logiciel minuscule et indépendant qui s'exécute selon
son propre calendrier de déploiement et peut être mis à jour indépendamment
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'un microservice ?
Grand ou petit
Pas de mesure universelle
Faitquelquechose
Portéedesfonctionnalités
Contexte délimité
Identifier les sousdomaines
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'un microservice ?
Prestations de service
Composant déployable indépendamment
Interopérabilité
Communication basée sur les messages
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'un microservice ?
Un service unique peut avoir des connexions avec le monde extérieur ou d'autres services, et il peut également avoir une base de données et/ou un
stockage de fichiers joints
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'une architecture de microservice ?
L'architecture de microservices est un style architectural qui structure une application
comme une collection de services qui sont :
Déployable indépendamment
Couplage lâche
Organisé autour des capacités métier
Possédé par une petite équipe
L' architecture de microservices permet à une organisation de fournir des applications
volumineuses et complexes rapidement, fréquemment, de manière fiable et durable
une nécessité pour être compétitive et gagnante dans le monde d'aujourd'hui.
source : microservices.io
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'une application microservice ?
L'application de microservice est traditionnellement connue sous le nom d' application distribuée,
un système composé de composants minuscules qui vivent dans des processus séparés et
communiquent via le réseau. Chaque service ou composant réside sur un ordinateur
(virtuel) logiquement distinct et parfois même sur un ordinateur physiquement distinct.
L' application de microservice est un programme distribué composé de nombreux petits
services qui collaborent pour réaliser les caractéristiques et les fonctionnalités du projet global.
@regis_ate www.regisatemengue.com
Machine Translated by Google
Qu'estce qu'une application microservice ?
Une application de microservice est composée de plusieurs petits services indépendants s'exécutant dans un cluster
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesÉléments
Organisation
Magasin de données
Interface utilisateur
Prestations de service
Services distribués
Évolutivité et disponibilité
Déploiement
La topologie du style d'architecture des microservices
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (organisation)
Équipes
Equipe par sousdomaine
Des équipes à la bonne taille
Indépendant
Responsable
Agile et DevOP
Communication
Gestion
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (organisation)
Base de code
Code
Documentation
Dépôt
Gite
Subversion
Version
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (DataStore)
Synchronisation des données
La synchronisation des données est le processus d'établissement de la cohérence entre les magasins de données source
et cible, et l'harmonisation continue des données au fil du temps. Il est fondamental pour une grande variété d'applications, y
compris la synchronisation de fichiers et la synchronisation d'appareils mobiles. (Wikipédia)
Aucune transaction distribuée
Immédiatement cohérent
Cohérence éventuelle
Capturerchangementdonnées
Source de l'événement
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (interface utilisateur)
Des équipes indépendantes
Propre ensemble de composants
UniqueUI
Application unique
Composition de l'interface utilisateur
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesÉléments (Services)
les services déployés communiqueront éventuellement entre eux à l'aide d'un protocole de communication et choisiront un
style de communication
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (style de communication de services)
RPC (RemoteProcedureInvocation)
RPC
Demande/Réponse
Synchrone
Asynchrone
Techno : REPOS, SAVON, gRPC
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Services : style de communication)
Messagerie
Message ou événement
Courtier ou canal
Publier
S'abonner
Coupé
Techno : Kafka.RabbitMQ
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Services : style de communication)
Échange de format de protocole
Texte
XML. JSON., YAML
Lisible par l'homme
Mise en œuvre facile
Binaire
gRPC
Plus compact
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Services : style de communication)
API et contrats
Programme d'application API
Interface
Contracter
Rest.SOAP.gRPC
DécrivezAPI : WSDL.
fanfaronnade,IDL
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Services : style de communication)
API et contrats par appareil
Différents appareils
DifferentAPIS
Différents contrats
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Services : style de communication)
API et contrats par appareil
Différents appareils
DifferentAPIS
Différents contrats
@regis_ate www.regisatemengue.com
Machine Translated by Google
Services distribués
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (services distribués)
ServiceRegistrypatternServiceRegistrypattern
la mise en œuvre d'une architecture de microservice nécessite que les services en cours d'exécution soient fiables. les adresses IP/
l'emplacement des services peuvent changer dynamiquement. Comment les applications clientes connaissentelles les adresses et
les instances des services disponibles ?
ServiceRegistry : est une base de données qui contient les adresses et les emplacements de chaque service. Les instances de
service sont enregistrées dans le registre de service au démarrage et désenregistrées à l'arrêt.
Changement d'emplacement
Adresse de la base de données ou téléphone
Livre
1Autoinscription
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (services distribués)
ServiceRegistrypatternServiceRegistrypattern
Les clients de service et/ou les routeurs interrogent le registre de service pour trouver les instances disponibles d'un service. Un registre
de service peut invoquer l'API de contrôle de santé d'une instance de service pour vérifier qu'il est capable de traiter les demandes.
1Découverte
2Invocation
Exemples : Euerka, Zookeeper, Consul
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (services distribués)
Modèle de disjoncteur
Les services peuvent communiquer de manière synchrone et asynchrone à l'aide du protocole RPC. Lors d'une requête synchronisée, il peut arriver
qu'un service ne soit pas disponible pour répondre à la requête. Les causes peuvent être une surcharge de service ou une panne de réseau. La
défaillance d'un service peut potentiellement affecter d'autres services dans l'ensemble de l'application. C'est ce qu'on appelle un effet Domino.
Comment empêcher qu'une panne de réseau ou de service ne se répercute en cascade sur d'autres services ?
Servicedisponible
Panne de réseau
Lourde charge
effet domino
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (services distribués)
Modèle de disjoncteur
Un disjoncteur est un moyen d'invoquer le service distant via un proxy afin de dévier l'appel si vous en avez besoin.
Un client de service doit invoquer un service distant via un proxy qui fonctionne de la même manière qu'un disjoncteur électrique. Lorsque le nombre
de pannes consécutives franchit un seuil, le disjoncteur se déclenche et, pendant la durée d'une période de temporisation, toutes les tentatives
d'invoquer le service à distance échoueront immédiatement. Une fois la temporisation expirée, le disjoncteur autorise le passage d'un nombre limité
de demandes de test. Si ces demandes aboutissent, le disjoncteur reprend son fonctionnement normal. Sinon, en cas d'échec, la période de
temporisation recommence.
Invoquerviaproxy
Dévier les appels
Réintroduire du trafic
Exemple : Hystrix, JRugged
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (services distribués)
APIGatewayPattern
si vous souhaitez concevoir et créer de grandes applications complexes basées sur des microservices avec plusieurs applications. La
passerelle API est un modèle qui implémente un point d'entrée unique pour tous les clients. La passerelle API gère les demandes de l'une des
deux manières. Certaines requêtes sont simplement transmises/routées vers le service approprié. Il gère d'autres demandes en se déployant
sur plusieurs services.
Résoutil le problème ? Comment les clients d'une application basée sur des microservices accèdentils à des services individuels ?
Accéder aux services individuels
Point d'entrée unique
Interface unifiée
Préoccupations transversales
Traduction API
Exemple : Zuul. Metty, Finagle
@regis_ate www.regisatemengue.com
Machine Translated by Google
Sécurité
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (sécurité)
Autorisation et authentification
La sécurité est importante dans tout type d'application. L'autorisation et l'authentification sont les concepts utilisés pour contrôler l'accès aux services
et l'application des politiques de sécurité.
'
En termes simples, l'authentification est le processus de vérification d'un s identité, tandis que l'autorisation est le processus de vérification de
utilisateur auquel il a accès (auth0.com).
Nous utilisons le système de gestion des identités et des accès (IAM). IAM contrôle la validation des utilisateurs et l'accès aux ressources.
Communément appelée IAM, cette technologie garantit que les bonnes personnes accèdent aux bonnes ressources numériques au bon moment et
pour les bonnes raisons.
Résoutil le problème ? Comment les clients d'une application basée sur des microservices accèdentils à des services individuels ?
IdentifieretGestionDeL'Accès
Authentification unique
Exemples : Kerberos, OpenID, OAuth 2.0
SAML
Okta, KeyCloak, Shiro
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (sécurité)
Autorisation et authentification
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (sécurité)
Jeton d'accès
Dans un système distribué, il est essentiel d'affirmer l'authenticité des demandes de manière cohérente dans tous les services. En d'autres
termes, une fois authentifié, comment un microservice communiquetil l'identité de la requête aux autres microservices ?
Nous avons utilisé un jeton d'accès qui stocke en toute sécurité des informations sur un utilisateur et est ensuite échangé entre les
services. Chaque service doit s'assurer que le jeton est valide et en extrait les informations de l'utilisateur pour vérifier si un utilisateur est
autorisé à effectuer l'opération ou non.
Stocke des informations sur l'utilisateur
Échangésentreservices
Jeton Web JSON
Biscuit
@regis_ate www.regisatemengue.com
Machine Translated by Google
Évolutivité et disponibilité
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (évolutivité et disponibilité)
Évolutivité
L'évolutivité est la capacité d'un système informatique (matériel ou logiciel) à continuer à bien fonctionner lorsqu'il change de taille ou de volume. Un
système évolutif s'étend de manière transparente pour répondre à la demande accrue des clients et aux charges de travail plus importantes sans
affecter la qualité du service.
Nous avons deux types d'évolutivité. évolutivité verticale et évolutivité horizontale. l'évolutivité d'une application peut être mesurée par le nombre de
requêtes qu'elle peut traiter simultanément.
'
La mise à l'échelle horizontale (ou « évolution vers l'extérieur ») fait référence à l'ajout de plusieurs nœuds à s pool de ressources pour répondre aux
une demande accrue du système. Vous n'améliorez pas les spécifications de la machine existante. Au lieu de cela, vous ajoutez plus de serveurs de
même taille au cluster et partagez la charge de travail sur plusieurs appareils. (source section.io)
La mise à l'échelle verticale (ou " mise à l'échelle ") fait référence à l'ajout de plus de matériel à une machine existante afin que vous exécutiez la même
charge de travail avec de meilleures spécifications. Par exemple, si un serveur nécessite plus de puissance de traitement, la mise à l'échelle verticale
de l'appareil signifierait la mise à niveau de son processeur (source section.io)
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (évolutivité et disponibilité)
Échelle verticale et horizontale
Vertical
Plus de CPU et de RAM
Horizontal
Plus d'appareils
Réplication de services
Regroupement
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (évolutivité et disponibilité)
Équilibrage de charge client
ILoading Balancing est le processus de partage ou de distribution des tâches entre les ressources pour assurer la fiabilité des ressources et rendre le
traitement des tâches plus efficace.
L'équilibrage de charge client est une liste d'applications serveur partagées avec l'application client. L'application cliente choisira une instance de serveur
en fonction des paramètres de routage. Les clients d'équilibrage de charge sont souvent utilisés avec le registre de service car l'application doit
s'enregistrer au démarrage.
Plusieurs cas
Quelleinstancechoisir
Enregistrement
Exemple : Ruban, Meraki
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (évolutivité et disponibilité)
Disponibilité
Les systèmes disponibles signalent la disponibilité en termes de minutes ou d'heures d'indisponibilité par an. Par exemple, un système hautement disponible
devrait être disponible 99, 999 % du temps. Dans notre architecture, nous avons quelques points de défaillance uniques, également appelés SPOF. Un point de
défaillance unique fait partie d'un système qui, s'il échoue, empêchera l'ensemble du système de fonctionner. Par exemple, nous n'avons qu'une seule
passerelle, un seul courtier de messages, un seul registre de services et un seul système de gestion des identités et des accès.
Soyez opérationnel
Point de défaillance unique
passerelle
Registre des courtiers
JE SUIS
Multiplier les instances Sync
@regis_ate www.regisatemengue.com
Machine Translated by Google
Surveillance
@regis_ate www.regisatemengue.com
Machine Translated by Google
Éléments de microservices (évolutivité et disponibilité)
Surveillance
L'un des aspects les plus importants d'un système distribué est la surveillance. Cela vous permet de prendre des mesures proactives. Une caractéristique
clé de la surveillance est qu'elle doit être centralisée. Il est important de visualiser ce qui se passe dans une architecture, de voir l'état de chaque service. les
outils de surveillance ont besoin d'un tableau de bord de surveillance tel que Kibana, Grafana ou Splunk.
@regis_ate www.regisatemengue.com
Machine Translated by Google
Déploiement
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Déploiement
Chacun de nos microservices doit être indépendamment déployable et évolutif. Les microservices doivent également être isolés les uns
des autres, le déploiement est donc important. Vous pouvez déployer chaque instance de microservice sur son propre hôte, vous
pouvez avoir un serveur physique ou virtuel et vous pouvez également exécuter plusieurs instances de différents services sur un seul hôte.
Lorsque l'architecture devient un peu encombrée, on peut se perdre dans le packaging d'un microservice avec ses bonnes dépendances
comme le système d'exploitation et le système de fichiers. Une façon de simplifier le déploiement consiste à empaqueter chaque
microservice en tant qu'image de conteneur et à le déployer en tant que conteneur. Le rôle du conteneur est d'encapsuler les détails de
la technologie utilisée pour créer un service. Il peut également imposer des limites à l'utilisation du processeur et de la mémoire. En
fournissant une image qui contient toutes les dépendances du microservice, il devient facile de le faire passer du développement au
test, et enfin à la production.
Les conteneurs sont un moyen de regrouper nos microservices, mais nous devons orchestrer tous ces conteneurs en exécutant
plusieurs conteneurs sur plusieurs machines. Nous devons également démarrer les bons conteneurs au bon moment, déterminer
comment ils peuvent communiquer entre eux, tenir compte du stockage et gérer les pannes de conteneur ou de matériel.
Faire tout cela manuellement serait un cauchemar. Heureusement, nous avons des orchestrateurs comme Kubernetes, Docker Swarm,
Mesos et Marathon pour automatiser ces tâches et réduire la charge opérationnelle.
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Héberger
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
MultipeSericesperHost
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Conteneurs
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Conteneurs
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Orchestrateur
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Livraison continue
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Livraison continue
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Environnements
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Configuration externe
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroservicesElements (Déploiement)
Configuration externe
source : vision plurielle
@regis_ate www.regisatemengue.com
Machine Translated by Google
MicroserviceArchitecture
Résumé
Terminologie des microservices
Stockage de données
Interface utilisateur
Services distribués
Sécurité
SurveillanceDéploiement
@regis_ate www.regisatemengue.com
Machine Translated by Google