0% ont trouvé ce document utile (0 vote)
992 vues18 pages

Cours Microservices

Ce document décrit les caractéristiques d'une architecture microservices. Il explique la différence entre une approche monolithique et une approche microservices, et détaille les principales caractéristiques d'une architecture microservices comme la division en composants, l'organisation autour des capacités métiers et une gouvernance décentralisée.

Transféré par

Bochra Arfaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
992 vues18 pages

Cours Microservices

Ce document décrit les caractéristiques d'une architecture microservices. Il explique la différence entre une approche monolithique et une approche microservices, et détaille les principales caractéristiques d'une architecture microservices comme la division en composants, l'organisation autour des capacités métiers et une gouvernance décentralisée.

Transféré par

Bochra Arfaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les Microservices

Architectures Logicielles

Dr. Lilia SFAXI


Slide 1
[Link]/liliasfaxi
PLAN

Définition des Microservices

Approche Monolithique vs Microservices

Caractéristiques de l’Architecture Microservices

2
Définition des Microservices
Microservices

Style d’architecture
Approche pour développer une seule application comme suite de petits
services :
• Déployables les uns indépendamment des autres
• Chacun s’exécute sur son propre processus
• Communiquent via des mécanismes légers, souvent une ressource
HTTP
• Construits autours des compétences métier
• Peuvent être rédigés dans des langages et technologies différentes
• Peuvent utiliser des technologies de stockage de données diverses

3
Approche Monolithique vs Approche Microservices
Microservices
Approche Monolithique
• Application construire comme une seule unité
• Usuellement, les applications sont divisées en trois parties:
• L’interface utilisateur
• Une base de données
• Une couche métier
• La couche métier se charge de:
Gérer les requêtes HTTP, Exécuter la logique du domaine, Extraire et modifier les
données de la base de données, Sélectionner et charger les vues HTML…
• Cela représente une application Monolithe
• Toute modification du système implique la compilation et déploiement d’une
nouvelle version de la couche métier

Dr. Lilia SFAXI


Slide 4
[Link]/liliasfaxi
Approche Monolithique vs Approche Microservices
Microservices
Approche Monolithique: Caractéristiques et Avantages
• Approche naturelle pour la construction d’un système
• Toute la logique métier tourne sur un seul processus
• Utilisation des caractéristiques de base de votre langage pour diviser
l’application en classes, packages, namespaces…
• Il est possible de lancer et tester l’application Monolithe sur la
machine du développeur, puis la déployer en production
• Il est possible d’utiliser un Load Balancer pour gérer la répartition de
charge entre plusieurs instances de cette application
• Applications qui produisent de bons résultats, rapidement conçues et
déployées
Mais…

Dr. Lilia SFAXI


Slide 5
[Link]/liliasfaxi
Approche Monolithique vs Approche Microservices
Microservices
Approche Monolithique: Inconvénients
• Avec l’utilisation massive du cloud, les utilisateurs deviennent
frustrés
• Les cycles de changement sont très reliés:
• Une modification dans une petite partie de l’application requiert un re-build
et redéploiement entier
• Il est difficile de garder une structure modulaire et une séparation
des préoccupations
• La mise à l’échelle d’une partie qui a besoin de plus de ressources
requiert celle de toute l’application
Besoin de construire des applications sous formes de services
indépendants

Dr. Lilia SFAXI


Slide 6
[Link]/liliasfaxi
Approche Monolithique vs Approche Microservices
Microservices

Approche Microservices
• S’inspire des principes de conception du système UNIX
• loin d’être récents, mais peu considérés dans le développement logiciel
• Services sont déployables indépendamment les uns des autres
• Mise à l’échelle plus facile et ciblée à chaque service
• Chaque service définit des limites bien fermes
• Chaque service peut être écrit dans un langage différent
• Chaque service peut être géré par une équipe différente

Dr. Lilia SFAXI


Slide 7
[Link]/liliasfaxi
Approche Monolithique vs Approche Microservices
Microservices

Dr. Lilia SFAXI


Slide 8
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Division en Composants via les Services
• S’inspirer du monde réel, qui est une association de composants reliés
• Composant: Unité logicielle qui est indépendamment remplaçable et
modifiable
• Utilisation simultanée de librairies et de services:
• Librairies : composants reliés dans un programme et invoqués via des appels de
fonctions in-memory
• Services : composants out-of-process , communiquant via des mécanismes
distants tels que les web services ou les appels de procédures distantes
• Avantage des services:
• Indépendamment déployables : un changement dans un service ne nécessite
que le déploiement du service concerné
• Interface de composant plus explicite
• Inconvénients des services:
• Appels distants plus coûteux

Dr. Lilia SFAXI


Slide 9
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Organisation autours des Capacités Métiers
• La décomposition classique d’une application est souvent orientée
vers les couches techniques (vue, contrôle et modèle)
• Cela entraîne souvent que chaque changement touchera plusieurs équipes,
ce qui est coûteux en temps et en budget
UI Métier BD

• Solution : Division logique des équipes Service1


• Chaque service concerne un domaine
métier différent
• Les équipes sont inter-fonctionnelles, avec
tous les niveaux de compétences
(UI, stockage et gestion de projet)
Service2 Service3
Dr. Lilia SFAXI
Slide 10
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Produits, pas Projets
• Traditionnellement, l’effort de développement utilise un modèle de
projet: l’objectif est de livrer un logiciel complet
• À la fin du projet, le logiciel est transmis à une équipe de maintenance, et
l’équipe de développement est dissoute
• Dans la vision Microservices, une équipe doit posséder un produit ,
durant tout son cycle de vie
• L’équipe de développement est entièrement responsable du logiciel produit
• « You build it, you run it »
• L’équipe reste au courant du comportement de son produit en production
• Cette approche peut être prise pour les applications monolithiques,
mais la granularité plus fine des services peut rendre plus efficace la
relation développeur-client.
Dr. Lilia SFAXI
Slide 11
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Extrémités Intelligentes et Canaux Stupides
• Plusieurs approches mettent beaucoup d’intelligence dans les canaux
de communication entre les services
• Exemple: ESB , avec des opérations sophistiquées pour le routage, la
chorégraphie, la transformation…
• Les applications utilisant les microservices favorisent l’utilisation de
communications sans intelligence, qui ne font que transmettre les
messages, alors que le service lui-même fait le reste
• Protocoles utilisés:
• HTTP pour les requêtes/réponses, principes et protocoles du web
• Bus de messagerie asynchrone et léger, ne faisant qu’un simple routage (ex:
RabbitMQ ou ZeroMQ)

Dr. Lilia SFAXI


Slide 12
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Une Gouvernance Décentralisée
• Gouvernance centralisée => tendance à s’orienter vers une technologie et
plateforme unifiée
• Difficile de trouver une seule technologie qui résout tous les problèmes
• Dans les architectures Microservices, chaque service pourra utiliser la
technologie/langage/plateforme le plus adéquat pour ses besoins
• Chaque équipe est responsable du service qu’elle réalise
• Responsabiliser les équipes et les obliger à fournir un code de qualité depuis le
début
• Favoriser l’idée du partage, de l’open source, aider les autres développeurs à
résoudre les mêmes problèmes
• Abandonner l’idée classique des contrats de services pour des concepts
plus modernes, plus légers, par ex:
• Tolerant Reader: le consommateur d’un service utilise uniquement les données
dont il a besoin pour éviter le dilemme du YAGNI ( You Aren’t Gonna Need IT )

Dr. Lilia SFAXI


Slide 13
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Gestion des Données Décentralisée
• Le modèle conceptuel diffère entre les différents systèmes, ou
services d’une même application
• Décentralisation des décisions sur le stockage des données
• Utilisation de bases de données différentes ou de différentes instances d’une
même base de données, pour chaque service
• Approche Polyglot Persistence : une variété de technologies de stockage pour
plusieurs types de données
• Architecture souvent distribuée, donc il est difficile d’assurer une
consistance continue via le principe de transactions, car cela induit un
couplage temporel et un problème de disponibilité
• Les Microservices optent plutôt pour le principe de consistance éventuelle

Dr. Lilia SFAXI


Slide 14
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Automatisation de l’Infrastructure
• Devenue très populaire avec l’évolution du cloud
• Principes de:
• Livraison Continue : le logiciel est développé de manière à ce qu’il puisse être
livré en production à tout moment
• Intégration Continue : les membres de l’équipe intègrent leur travail
fréquemment, à raison de plusieurs intégrations par jour, chaque intégration
étant vérifiée par un build et des tests automatiques
• Besoin donc d’outils d’automatisation de l’infrastructure

Dr. Lilia SFAXI


Slide 15
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Design for Failure
• Les applications sont conçues pour être tolérantes aux fautes
• Si un service est inaccessible, le client doit y répondre le plus
gracieusement possible
• Rajoute de la complexité par rapport à une application monolithique
• Les équipes réfléchissent à l’impact de l’échec de chaque service sur
l’utilisateur
• Il faut que:
• Les failles soit détectées très rapidement
• Restaurer le service automatiquement, si possible
• Le monitoring en temps réel des applications Microservices est très
important

Dr. Lilia SFAXI


Slide 16
[Link]/liliasfaxi
Architecture Microservices : Caractéristiques
Microservices
Conception évolutive
• La décomposition de services permet de contrôler les changements de
l’application sans les ralentir
• L’évolution de l’application est donc plus fluide
• Les composants sont définis de manière à être indépendamment
remplaçables et mis à jour
• Donc, la modification d’un composant ne devrait pas affecter ses
collaborateurs de manière significative
• Utilisation du principe de conception modulaire : définir la modularité
suivant le patron du changement
• Regrouper dans le même module les éléments qui changent en même temps,
ou dont le changement de l’un affecte l’autre

Dr. Lilia SFAXI


Slide 17
[Link]/liliasfaxi
Sources

Articles
• Martin Fowler, Microservices, [Link] rédigé
le 25/03/14, consulté le 13/11/15
• Chris Richardson, MicroServices Patterns and Best Practices, [Link]
rédigé en 2014, consulté le 6/12/15
• Sebastiàn Peyrott, An Introduction to Microservices part 2: The API Gateway,
[Link]
rédigé le 13/09/2015, consulté le 6/12/15

18

Vous aimerez peut-être aussi