0% ont trouvé ce document utile (0 vote)
214 vues41 pages

Microservices et Architectures Modernes

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)
214 vues41 pages

Microservices et Architectures Modernes

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

Plan

Introduction
Concepts
Mise en oeuvre
Outils
Conclusion

Intergiciels et Services
Microservices

Master 2 Traitement de l’Information et Web


Lionel Médini
Janvier 2020
Plan

Objectifs de ce > Introduction


Concepts

cours
Mise en oeuvre
Outils
Conclusion

• Un point de vue génie logiciel sur les


architectures microservices
– Caractéristiques des architectures microservices
– Patterns liés aux architectures
– Mise en place d’applications fondées sur ces
architectures
• Complémentaire à l’approche TIW7
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• L’architecture « monolithique »
– Exemple d’architecture (Web)
Java VM
Container Web
Interface Métier
Servlet Données
Servlet
Serveur HTTP

Serveur HTTP

Classe
JSP JSP
Redirection Classe
JSP Classe
Servlet
Servlet Classe

Front Application SGBD


Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• L’architecture « monolithique »
– Exemple d’architecture (serveur d’applis)
Web Services Java Persistence
JNDI
APIs API
Serv
JSP
let
Accès aux
Container Web
systèmes
JSP
Client Web existants
Systèmes existants
Java
Serveur (CICS, progiciels)
Transaction
d’applications API

Bean Bean
JDBC
Container EJB
Bean
Applet ou client Serveur de BD
autonome Java Authorization
Java Message
JavaMail Contract for
Service API Containers
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• L’architecture « monolithique »
– Avantages
• Technologies homogènes
– Types d’objets / composants adaptés aux besoins architecturaux
– Stack « mainstream » -> facilement intégrable
• Framework
– Puissance, généricité, services annexes…
• Déploiement
– Simple, outils intégrés dans la stack
• Cohésion de l’équipe de développement
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• L’architecture « monolithique »
– Inconvénients
• Technologies homogènes
– Types d’objets / composants pas toujours adaptés aux besoins métier
– Intégration de composants dans d’autres technos difficile
– Choix technologiques à long terme
• Framework
– Peut devenir chargé quand la complexité de l’application augmente
• Déploiement
– Nécessite l’arrêt de toute l’application
– Peut prendre du temps quand l’application grossit
• Couplage fort entre les équipes de développement
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• L’architecture « monolithique »
– Inconvénients
• Scalabilité
– Verticale
» L’application a la responsabilité de s’« auto-scaler »
» Limitée aux ressources du serveur
– Horizontale
» Nécessite de réinstancier l’OS et le framework
» Gestion des ressources partagées à l’extérieur de l’application
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• Les architectures orientées-services

M1 M2 M3 M4

Échanges de données

Finances RH Risques …

Source :
http://planforsoa.blogspot.fr/2012/02/soa-
service-oriented-architecture.html
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• Les architectures orientées-services


– Avantages
• Modularité, couplage faible
– Séparation des préoccupations (et des développements)
– Possibilité de redéployer composant par composant
• Simplification du processus de développement
– Liberté des choix technologiques
– Indépendance des équipes de dév
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• Les architectures orientées-services


– Avantages
• Interfaces de communication réseau
– Pérennité des standards
– Distribution possible
• Plus adaptées
– Aux environnements distribués
– Aux échanges de services entre plusieurs applications
• « Scalability by design »
Plan

Position du > Introduction


Concepts

problème
Mise en oeuvre
Outils
Conclusion

• Les architectures orientées-services


– Inconvénients
• Complexité
– Des mécanismes de communications
– Des architectures applicatives
• Overhead
– Nécessite plus de ressources au final (VM, OS, plateforme
d’exécution…)
– Nécessite des services de monitoring/coordination
• Testabilité plus délicate
Plan

Microservices : > Introduction


Concepts

définition
Mise en oeuvre
Outils
Conclusion

• Martin Fowler :
« While there is no precise definition of this architectural
style, there are certain common characteristics around
organization around business capability,
automated deployment,
intelligence in the endpoints, and
decentralized control of languages and data. »

Source : https://martinfowler.com/articles/microservices.html
Plan
Introduction

Concepts
> Concepts
Mise en oeuvre
Outils
Conclusion

• Application
– Une application = un assemblage de « petits » services
indépendants
– Chaque microservice réalise un processus métier ou une
préoccupation transverse
• « capability », « unité fonctionnelle »
• Ex : vente, CRM, comptabilité, front-end, GUI…
– Techniquement, les services sont
• Programmés dans des langages hétérogènes
• Exécutés dans des processus séparés
• Liés à leurs propres supports de persistance
• Développés et déployés dans des projets distincts
Plan
Introduction

Concepts
> Concepts
Mise en oeuvre
Outils
Conclusion

• Bounded context
– Pattern issu du Domain-Driven Design
– Découpage d’un projet en groupements fonctionnels
– Isolation de ces groupements
entre eux
– Chaque groupement est
un mini-projet indépendant
• Développement
• Déploiement
• Services de support et Source : https://martinfowler.com/
de pilotage articles/microservices.html
 Un microservice est un « running bounded context »
Plan
Introduction

Concepts
> Concepts
Mise en oeuvre
Outils
Conclusion

• « Smart endpoint, dumb pipe »


– La gestion centralisée de l'application est réduite au
minimum
• Chaque service embarque un morceau de l’ « intelligence »
de l’application
• Les services peuvent utiliser des mécanismes de stockage
différents
• La logique de communication est répartie dans les services
et non dans un médium de communication centralisé (ESB)
• Communication par mécanismes « légers »
Plan
Introduction

Méthodologie
Concepts
> Mise en oeuvre
Outils
Conclusion

• Comment concevoir et déployer une application


à base de microservices ?
– Maintenable
– Scalable
• Hypothèse
– Application complexe : framework, nombreux
use cases…
– Utilisation de patterns d’isolation : couches, adapter,
façade…
Plan
Introduction

Patterns liés
Concepts
> Mise en oeuvre
Outils
Conclusion

Source : https://microservices.io/articles/applying.html
Plan

Décomposition de
Introduction
Concepts

l’application
> Mise en oeuvre
Outils
Conclusion

• Objectif : séparer en plusieurs conteneurs


– Architecture stable
– Modules cohésifs et faiblement couplés
– Cycles de vie des composants des modules similaires
– Modules testables
– Équipes resserrées ≤ 10 et autonomes
Plan

Décomposition de
Introduction
Concepts

l’application
> Mise en oeuvre
Outils
Conclusion

• Problème : comment découper ?


• 2 possibilités
– Par « business capability » : processus producteurs de
valeur
• Liés à l’activité économique de l’entreprise (business
architecture modeling)
– Par sous-domaines d’activité : typologie des processus
« classique » (cf. CM urbanisation)
• Opérationnels, de support, de pilotage
• Critères de choix : granularité & aspects humains…
Plan
Introduction

Aspects humains
Concepts
> Mise en oeuvre
Outils
Conclusion

• Loi de Conway : l’organisation entre les équipes doit


refléter l’architecture du produit
– Des équipes plus petites
 agilité, autonomie, efficacité
– Chaque équipe est responsable d’un service
• Choix technologiques, conception, déploiement, maintenance
– Avantages pour le produit
• Cycles de développement courts
• Déploiements indépendants
• Testabilité
• Isolation des / tolérance aux bugs
Plan

Gestion des
Introduction
Concepts

données
> Mise en oeuvre
Outils
Conclusion

• Problème : comment gérer les accès aux données


une fois les services séparés dans des conteneurs
différents ?
• Plusieurs solutions :
– 1 BD par service
• Avantage : plus simple à réaliser (si pas besoin de synchro)
• Inconvénients : performances, synchronisation
• Patterns liés : Saga, CQRS
Plan

Gestion des
Introduction
Concepts

données
> Mise en oeuvre
Outils
Conclusion

• Problème : comment gérer les accès aux données


une fois les services séparés dans des conteneurs
différents ?
• Plusieurs solutions :
– 1 BD partagée entre plusieurs services
• Avantage : plus simple à réaliser (si accès concurrents)
• Inconvénients : goulot d’étranglement
– Remarque : des solutions intermédiaires existent aussi
Plan

Communication
Introduction
Concepts

entre conteneurs
> Mise en oeuvre
Outils
Conclusion

• Problème : conserver des mécanismes de


communication « légers »
• Solution : « Dumb pipe, smart endpoint »
– Opérateur | (pipe)
– REST (HTTP)
• Adapté à l’ « éclatement » d’une application monolithique en
micro-services
• Correspond à l’utilisation de patterns GRASP (lesquels ?)
• Scalable à l’aide de mécanismes du Web (duplication, load-
balancing)
 Penser « ressource » dès la conception
– Bus de messages (JMS, AMQP…)
Plan

Communication
Introduction
Concepts

entre conteneurs
> Mise en oeuvre
Outils
Conclusion

• Problème : conserver des mécanismes de


communication « légers »
• Solution : « Dumb pipe, smart endpoint »
– Opérateur | (pipe)
– REST (HTTP)
– Bus de messages (JMS, AMQP…)
• Adapté à l’ « éclatement » d’une application orientée-services
en micro-services
• Le bus reste le plus simple possible (ne contient pas de métier)
• À proscrire : mécanismes de routage, orchestration,
chorégraphie de service, BPEL…
 Penser « asynchrone » dès la conception
Plan

Communication
Introduction
Concepts

entre conteneurs
> Mise en oeuvre
Outils
Conclusion

• Problème : permettre aux services d’être informés


des changements d’états des autres services
• Solution : pattern « Event sourcing »
– Persister dans une BD partagée les états des conteneurs
– Déclencher un événement à chaque insertion
– Permettre de s’abonner à ces événements
• Remarques :
– Permet de re-jouer le déroulement de l’application
– Attention à ne pas « re-centraliser l’intelligence » (ESB)
– Potentiel Single Point of Failure
Plan

Composition de
Introduction
Concepts

l’interface
> Mise en oeuvre
Outils
Conclusion

• Problème : au final, réaliser une interface


applicative qui tire partie de tous les services
• 2 solutions :
– Composer les vues côté serveur
• Permet de générer différents types d’applications
(Web, mobile, desktop, etc.)
– Compose les vues côté client
• SPA, AJAX…
• Remarque :
– Dans les 2 cas, l’application est un mashup 
Plan

Autres
Introduction
Concepts

problématiques
> Mise en oeuvre
Outils
Conclusion

• Déploiement
– Multiple service instances per host
– Service instance per host
– Service instance per VM
– Service instance per Container
– Serverless deployment
– Service deployment platform
• Sécurisation
– Access Token
Plan
Introduction

Pièges
Concepts
> Mise en oeuvre
Outils
Conclusion

• Granularité
– J’ai regroupé plusieurs services en un seul « macroservice »
– Chaque méthode de mon application est devenue un
microservice
• Architecture globale
– Il est très difficile de comprendre ce qui se passe entre mes
services
– La recherche d’information dans les logs est trop longue
– Impossible de relancer ou ajouter rapidement des instances
de mes services
Source :
http://blog.xebia.fr/2015/03/16/microservices-des-pieges/
Plan
Introduction

Scalabilité
Concepts
> Mise en oeuvre
Outils
Conclusion

• The Scale Cube

Source : http://microservices.io/articles/scalecube.html
Plan
Introduction

Scalabilité
Concepts
> Mise en oeuvre
Outils
Conclusion

• Solution : The Scale Cube


– Axe X : scalabilité horizontale
• Dupliquer (cloner) les composants autant que nécessaire
• Utiliser des techniques de load balancing pour les adresser

Source : https://devcentral.f5.com/articles/the-art-of-scale-
microservices-the-scale-cube-and-load-balancing
Plan
Introduction

Scalabilité
Concepts
> Mise en oeuvre
Outils
Conclusion

• Solution : The Scale Cube


– Axe Y : scalabilité verticale (pattern couches)
• Décomposer l’application en modules fonctionnels
– En fonction des use cases à traiter
– En fonction de leurs positions dans les patterns utilisés (couche,
MVC…)
– En fonction de leurs cycles de vie
– En fonction de leurs caratéristiques techniques (langages…)
– En fonction des équipes de développement
Plan
Introduction

Scalabilité
Concepts
> Mise en oeuvre
Outils
Conclusion

• Solution : The Scale Cube


– Axe Y :

– Axes X + Y :

Source : https://devcentral.f5.com/articles/the-art-of-scale-microservices-
the-scale-cube-and-load-balancing
Plan
Introduction

Scalabilité
Concepts
> Mise en oeuvre
Outils
Conclusion

• Solution : The Scale Cube


– Axe Z : partitionnement des données
• Faire en sorte que les données accédées par chaque
microservice soient aussi indépendantes que possible
– Dans les décompositions fonctionnelles
– Dans la répartition horizontale

Source : https://devcentral.f5.com/articles/the-art-of-scale-
microservices-the-scale-cube-and-load-balancing
Plan

Outils et
Introduction
Concepts

plateformes
Mise en oeuvre
> Outils
Conclusion

• Langage dédié
– Jolie
• Plateformes d’exécution
– Docker
– Microsoft Service Fabric
– MicroService4Net
– NetKernel
• Plateformes de déploiement
– VM dédiées
• CoreOS, RancherOS , Ubuntu Snappy, Boot2Docker, docker-
machine…
Plan

Outils et
Introduction
Concepts

plateformes
Mise en oeuvre
> Outils
Conclusion

• Outils Docker (rappels TIW7+)


– « Mono-conteneur » : Dockerfile
– « Mono-hôte » : Compose
– Clusters : Machine
– Monitoring / gestion de conteneurs : Portainer
– Gestion de clusters : Swarm, Kubernetes
– Repository : https://hub.docker.com/
– Hébergement : AWS, MS Azure, Google Compute
Engine, Heroku, Digital Ocean…
Plan
Introduction

Conclusion
Concepts
Mise en oeuvre
Outils
> Conclusion

• Une forme d’architecture


– À mi-chemin entre architecture monolithique et SOA
– Avec des mécanismes de communication simples
– Qui reprend des patterns connus
Plan
Introduction

Conclusion
Concepts
Mise en oeuvre
Outils
> Conclusion

• Un outil prédominant
– Qui facilite le déploiement
– Dédié à la scalabilité et à la performance
– Complet
– Destiné à des hôtes / stacks homogènes
Plan
Introduction

Avantages
Concepts
Mise en oeuvre
Outils
> Conclusion

• Agilité
– Conception à l’échelle de la fonctionnalité
– Isolation des fonctionnalités
• Légèreté
– Permet de s’abstraire de la couche OS (VM)
• Scalabilité
– Verticale : permet de ne répliquer que les services
chargés
– Horizontale : déport des services les plus chargés vers des
nœuds différents
Plan
Introduction

Inconvénients
Concepts
Mise en oeuvre
Outils
> Conclusion

• Overhead
– Nécessite une communication orientée-message entre
les services (vs. appel de méthodes)
– Nécessite une « surveillance » du fonctionnement des
services (monitoring, tolérance aux pannes, pilotage)
– Accès aux ressources partagées
• Humain
– Nécessite que les équipes soient effectivement
structurées selon l’architecture du produit
• Vision / mise au point globale de l’application
– Pas triviale, peut nécessiter plusieurs itérations
Plan
Introduction

Problématiques
Concepts
Mise en oeuvre
Outils
> Conclusion

• Complexité des échanges de données


• Choix du mode de communication des services
• Sécurité des communications internes
• Monitoring / débogage de l’application
• Outils de développement, de packaging, de
déploiement

 Sont-ce de nouvelles problématiques ?


Plan
Introduction

Références
Concepts
Mise en oeuvre
Outils
> Conclusion

• http://microservices.io/
• http://martinfowler.com/articles/microservices.html
• https://martinfowler.com/bliki/BoundedContext.html
• http://alistair.cockburn.us/Patterns
• https://en.wikipedia.org/wiki/Scalability
• http://blog.xebia.fr/2015/03/09/microservices-des-
architectures/
• http://blog.xebia.fr/2015/03/16/microservices-des-pieges/
• http://docs.docker.com/
• https://hub.docker.com/

Vous aimerez peut-être aussi