Résumé des Microservices PDF

Summary

Ce document résume les concepts clés des microservices, y compris les avantages, les inconvénients, et les motifs d'architecture associés. Il aborde également la gestion de ces services et illustre les concepts à l'aide de cas d'usage. Le document couvre des informations sur les bases, les concepts clés et les exemples concrets de mise en œuvre.

Full Transcript

3. Avantages 1. Microservices : Définition et Concepts Scalabilité : Ajuste uniquement les services nécessaires Microservice : Une unité logicielle autonome réalisant une...

3. Avantages 1. Microservices : Définition et Concepts Scalabilité : Ajuste uniquement les services nécessaires Microservice : Une unité logicielle autonome réalisant une (exemple : augmenter les instances du service de recherche 2. Caractéristiques clés des Microservices fonctionnalité métier spécifique, indépendante des autres en cas de forte demande). Modularité : Chaque service traite une fonction précise services. Développement rapide : Les équipes peuvent travailler en (exemple : gestion des utilisateurs). Architecture Microservices : Approche où une application est parallèle sur différents services. Autonomie : Les services peuvent être développés, déployés divisée en plusieurs services indépendants, souvent Flexibilité technologique : Chaque service peut utiliser des et maintenus indépendamment. connectés via des API. langages ou des bases de données différents. Découplage faible : Réduction des interdépendances entre API (Application Programming Interface) : Interface Isolation des pannes : Une panne locale n’affecte pas services pour une meilleure évolutivité. permettant à différentes applications ou services de l’ensemble de l’application. communiquer. Réutilisabilité : Les services peuvent être partagés entre plusieurs applications. 4. Contraintes 5. Motifs d'architecture importants 6. Exemples pratiques Complexité accrue : La gestion, le déploiement et la Circuit Breaker : Bloque les appels vers un service défaillant Netflix avec AWS : surveillance nécessitent des outils spécifiques. pour éviter les pannes en cascade. Zuul : Gateway centralisant les requêtes client. Transactions distribuées : Synchronisation complexe pour Retry Pattern : Réessai automatique après une erreur, avec Hystrix : Circuit Breaker pour gérer les pannes. des opérations impliquant plusieurs services. des délais fixes ou exponentiels. Domain-Driven Design (DDD) : Latence réseau : Les communications entre services Event Broker : Intermédiaire gérant la distribution Bounded Context : Limite claire pour chaque service. introduisent des délais supplémentaires. d’événements entre producteurs et consommateurs. Collaboration avec les experts métier pour concevoir les Gestion des erreurs : Requiert des mécanismes robustes pour API Gateway : Point d’entrée unique pour tous les services, services. gérer les échecs et réessais. gérant l’authentification et le routage. 7. Sécurisation 9. Logging 8. Déploiement et maintenance Authentication : Confirme l’identité d’un utilisateur (exemple Définition : Le logging consiste à capturer et enregistrer les CI/CD (Continuous Integration/Continuous Deployment) : : mot de passe ou SSO). événements pour diagnostiquer, surveiller et auditer les Automatisation des tests et des déploiements pour Authorization : Définit ce qu’un utilisateur peut faire après systèmes. garantir la qualité. authentification. Outils Clés : Conteneurs (Docker) : Emballage des services pour une SSO (Single Sign-On) : Connexion unique pour accéder à ELK Stack : (Elasticsearch, Logstash, Kibana) pour portabilité et un déploiement simplifiés. plusieurs services. centraliser et explorer les logs. Kubernetes : Orchestrateur pour gérer et déployer les JWT (JSON Web Token) : Format sécurisé pour transmettre Fluentd : Collecte et envoie les logs vers diverses conteneurs à grande échelle. des informations sur l'utilisateur entre services. destinations. 10. Supervision et monitoring 9. Logging (suite) Prometheus : Collecte les métriques système pour les Pratiques Essentielles : analyser. Centralisation : Regrouper les logs de tous les services. 11. Concepts complémentaires Grafana : Outil de visualisation des données pour créer des Correlation ID : Suivre une requête unique à travers les Scalabilité horizontale : Ajouter des instances pour répartir la tableaux de bord. services. charge. Log4j : Bibliothèque de journalisation pour Java permettant Niveaux de logs : INFO, DEBUG, WARN, ERROR pour Scalabilité verticale : Augmenter les ressources d’une de générer des logs dans divers formats (fichier, console, classifier les événements. instance existante. etc.). Bénéfices : Service Catalog : Répertoire des services disponibles pour Splunk : Plateforme d’analyse et de gestion des logs, utilisée Diagnostic rapide des problèmes. une découverte facile. pour collecter, indexer et visualiser les données générées par Visualisation des anomalies en temps réel. des systèmes IT. Idéal pour diagnostiquer des problèmes et Conformité réglementaire grâce à des journaux traçables. identifier des anomalies. 7.3. Architecture Microservices 7.2. Architecture en Couches (Layered Architecture) Définition : Approche où une application est décomposée en Définition : Application divisée en couches logiques petits services indépendants, chacun ayant une fonction distinctes avec des responsabilités spécifiques. spécifique. 7.1. Architecture Monolithique Exemple de couches : Caractéristiques : Définition : Application conçue comme un seul bloc avec tous Interface utilisateur (UI) : Gestion des interactions Modularité : Chaque microservice est autonome. les composants interconnectés. utilisateur. Indépendance : Services déployables indépendamment. Caractéristiques : Règles métier : Logique de traitement des données. Polyglotte : Différents services peuvent utiliser des Une seule base de code pour toutes les fonctionnalités. Accès aux données : Interaction avec les bases de langages ou technologies variés. Les appels mémoire (interne) sont rapides. données. Faible couplage : Communication via API ou messages. Adaptée aux applications simples ou petites équipes. Caractéristiques : Avantages : Avantages : Chaque couche a un rôle bien défini. Scalabilité : Chaque service peut être mis à l’échelle Performance : Les appels de fonction mémoire sont plus Les couches supérieures s’appuient sur les couches indépendamment. rapides que les appels réseau. inférieures. Flexibilité technologique : Permet d’utiliser le langage ou Simplicité : Une seule application à déployer. Avantages : la technologie adaptée à chaque service. Développement : Debugging facilité grâce à la Modularité : Simplifie le remplacement ou la mise à jour Résilience : Un service défaillant n’affecte pas centralisation du code. des composants. nécessairement l’ensemble du système. Inconvénients : Réutilisation : Une couche peut être partagée entre Réutilisabilité : Certains microservices peuvent être Elasticité limitée : Difficile de dimensionner plusieurs applications. utilisés dans plusieurs projets. indépendamment des parties spécifiques. Centralisation des règles : Facilite la gestion de la logique Cycle de développement rapide : Favorise les Maintenance complexe : Plus la taille du code augmente, métier. déploiements fréquents et les mises à jour continues. plus la maintenance devient difficile. Inconvénients : Inconvénients : Dépendances technologiques : Limitée à un seul langage Performance réduite : Les appels entre couches ajoutent Complexité accrue : Nécessite une gestion rigoureuse des ou une seule plateforme. de la latence. interactions (API, orchestration). Risque accru : Un crash d'une partie de l'application peut Rigidité : Difficile d'ajuster ou de contourner certaines Coût opérationnel élevé : Besoin d’infrastructures pour le affecter l'ensemble. couches. monitoring, la gestion des défaillances, etc. Couplage : Si mal conçu, peut créer une dépendance forte Réseau : Dépendance accrue aux performances réseau, entre les couches. ajoutant une possible latence. Sécurité : Plus de points d’attaque potentiels en raison des nombreux services exposés.

Use Quizgecko on...
Browser
Browser