Vous êtes sur la page 1sur 18

Les Microservices

Architectures Logicielles

Dr. Lilia SFAXI


Slide 1
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/liliasfaxi
Approche Monolithique vs Approche Microservices
Microservices

Dr. Lilia SFAXI


Slide 8
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/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
www.liliasfaxi.wix.com/liliasfaxi
Sources

Articles
• Martin Fowler, Microservices, http://martinfowler.com/articles/microservices.html rédigé
le 25/03/14, consulté le 13/11/15
• Chris Richardson, MicroServices Patterns and Best Practices, http://microservices.io/
rédigé en 2014, consulté le 6/12/15
• Sebastiàn Peyrott, An Introduction to Microservices part 2: The API Gateway,
https://auth0.com/blog/2015/09/13/an-introduction-to-microservices-part-2-API-gateway/
rédigé le 13/09/2015, consulté le 6/12/15

18

Vous aimerez peut-être aussi