SOA – Microservices
Mickaël BARON – 2016 (Rév. Janvier 2017)
mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
@mick...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
2
Creative Commons
Contrat Paternité
Part...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
3
A propos de l’auteur …
† Mickaël BARON
...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
4
Plan du cours
† Contexte des applicatio...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
5
Déroulement du cours : Introduction gén...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
6
Ressources : Liens sur le Web
† Billets...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
7
Ressources : Bibliothèque
† The art of ...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
8
Evolution des applications … retour
† E...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Application monolithique : rappel
9
† Un ...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Architecture microservice : Généralités
1...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Microservice : Concepts
11
† Des concepts...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Une seule fonctionnalité
12
† Un microser...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Flexibilité technologique
13
† Utiliser l...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Equipe réduite
14
† Chaque microservice à...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Déploiement ciblé
15
† Evolution d’une ce...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Montée en charge / scalabilité
16
† Forte...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Montée en charge / scalabilité : cube de ...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Facilite les tests
18
† Comme chaque fonc...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Architecture microservice
19
† Une archit...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
20
Applications Monolithique Versus Micro...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
21
SOA Versus Microservice
q Standards dé...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Architecture microservices : inconvénient...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Qui utilisent les microservices ?
23
† Ub...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Développer des architectures microservice...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Isoler : Machine virtuelle ou Conteneur ?...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Isoler : Machine virtuelle VS Conteneur
2...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Isoler : les outils existants
27
† Les ou...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder
28
† Utiliser les plateformes logic...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (sans microservice...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (avec microservice...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (container-less en...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (container-less en...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Communiquer
36
† La communication entre d...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Composer
37
† La composition va permettre...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Répartir la charge : reverse proxy
38
† P...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Bilan
39
† L’architecture microservices n...
Microservices - Généralités - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Pour aller plus loin
40
† Les bonnes prat...
Prochain SlideShare
Chargement dans…5
×

Introduction aux Architectures Microservices : introduction générale

13 001 vues

Publié le

Ce support de cours présente les architectures microservices. Nous commençons par un parallèle avec les applications monolithiques puis nous motivons du pourquoi les architectures microservices sont nécessaires. Nous terminons le support de cours avec les technologies utilisées pour mettre en oeuvre ce type d'architecture.

Publié dans : Technologie
1 commentaire
10 j’aime
Statistiques
Remarques
  • Bonjour Mickaël. Très bonne présentation. J'ajouterais des échanges asynchrones (messages) entre les microservices pour remplacer le BUS d’événement et cela permet de faire des microservices "REACTIVE" (cf http://www.reactivemanifesto.org/fr)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
Aucun téléchargement
Vues
Nombre de vues
13 001
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10 027
Actions
Partages
0
Téléchargements
158
Commentaires
1
J’aime
10
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Introduction aux Architectures Microservices : introduction générale

  1. 1. SOA – Microservices Mickaël BARON – 2016 (Rév. Janvier 2017) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr @mickaelbaron Introduction générale
  2. 2. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 2 Creative Commons Contrat Paternité Partage des Conditions Initiales à l'Identique 2.0 France http://creativecommons.org/licenses/by-sa/2.0/fr Licence
  3. 3. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 3 A propos de l’auteur … † Mickaël BARON † Ingénieur de Recherche au LIAS † http://www.lias-lab.fr † Equipe : Ingénierie des Données et des Modèles † Responsable des plateformes logicielles, « coach » technique † Responsable Rubriques Java de Developpez.com † Communauté Francophone dédiée au développement informatique † http://java.developpez.com † 4 millions de visiteurs uniques et 12 millions de pages vues par mois † 750 00 membres, 2 000 forums et jusqu'à 5 000 messages par jour @mickaelbaron
  4. 4. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 4 Plan du cours † Contexte des applications monolithiques † Microservice : quels sont les besoins ? † Architecture microservices c’est quoi ? † Comparaison avec les architectures existantes † Technologies mises en œuvre
  5. 5. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 5 Déroulement du cours : Introduction générale † Pédagogie du cours † Des bulles d’aide tout au long du cours † Comprendre l’utilité des microservices † Pas de technique pour l’instant † Pré-requis † Ingénierie des données † Cours architectures orientées services † Service web REST Ceci est une alerte Ceci est une astuce
  6. 6. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 6 Ressources : Liens sur le Web † Billets issus de Blog † www.nginx.com/blog/introduction-to-microservices † blog.loof.fr/2014/05/small-is-beautiful.html † cdelmas.github.io/2015/11/01/A-comparison-of-Microservices-Frameworks.html † dzone.com/articles/building-microservices-with-java † www.touilleur-express.fr/2015/02/25/micro-services-ou-peon-architecture † klangism.tumblr.com/post/80087171446/microservices † Articles † microservices.io/patterns/microservices.html † martinfowler.com/articles/microservices.html † www.voxxed.com/blog/2015/01/good-microservices-architectures-death-enterprise- service-bus-part-one † dzone.com/storage/assets/293353-rc215-microservices.pdf † Présentations † fr.slideshare.net/gboissinot/p-microservices101-20150210 † www.pst.ifi.lmu.de/Lehre/wise-14-15/mse/microservice-architectures.pdf † fr.slideshare.net/jpetazzo/docker-quels-enjeux-pour-le-stockage-et-reseau-paris-open- source-summit-2015
  7. 7. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 7 Ressources : Bibliothèque † The art of Scalability † Auteur : Michael T. Fisher and Martin L. Abbott † Éditeur : Addison Wesley † Edition : Juin 2015 - 624 pages - ISBN : 0134032802 † Continuous Delivery † Auteur : Jez Humble et David Farley † Éditeur : Addison Wesley † Edition : Août 2010 – 512 pages - ISBN : 0321601912 † Building Microservices † Auteur : Sam Newman † Éditeur : O’Reilly † Edition : Fév. 2015 – 280 pages - ISBN : 9781491950357
  8. 8. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 8 Evolution des applications … retour † Exemple : application de co-voiturage Architecture dite « Monolithique » Architecture Orientée Service Clients Architecture Microservice Une grosse application Clients Base de données Interfaces web Connecteur pour envoie SMS API REST/SOAP Connecteur pour envoie EMAIL Connecteur pour paiement (Paypal) Entreprise Service Bus Une Application découpée par des services techniques reliés par un bus d’intégration Une Application découpée par des services fonctionnels Clients Service Conducteur Interface web Passager Connecteurs pour SMS, EMAIL et paiement Interfaces web Base de données API REST/SOAP Service Notification (SMS, EMAIL) Service Paiement Service Facturation Service Passager Bus d’événements
  9. 9. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Application monolithique : rappel 9 † Un gros code contenant toutes les fonctionnalités et les différentes couches logicielles † Une seule grosse compilation et un seul livrable (un gros fichier WAR) † Une seule pile logicielle (Linux, JVM, Tomcat et bibliothèques tierces) Présentation Logique métier Accès données
  10. 10. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Architecture microservice : Généralités 10 † Premières discussions autour du terme microservice en 2011 lors d’un workshop sur les architectures logicielles † Les architectures microservices sont une évolution, une spécialisation des architectures orientées services (SOA) † Vu comme une bonne pratique du SOA (ma vision) † Articles de référence † http://martinfowler.com/articles/microservices.html † https://www.nginx.com/blog/introduction-to-microservices/
  11. 11. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Microservice : Concepts 11 † Des concepts présentés dans le premier cours restent valables (réutilisabilité, autonomie, sans état…) † Huit nouveaux aspects caractérisent un microservice † Fonctionnalité unique † Flexibilité technologie † Equipe réduite † Déploiement ciblé † Montée en charge « scalabilité » † Tests facilités
  12. 12. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Une seule fonctionnalité 12 † Un microservice doit réaliser une seule fonctionnalité de l’application globale † Un microservice peut contenir toutes les couches logicielles (IHM, middleware et base de données) † Un microservice possède un contexte d’exécution séparé des autres (exemple : machine virtuelle ou conteneur) Service ConducteurService Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interfaces web Passager Pour les applications web, séparer dans un microservice spécifique permet de fournir des expériences différentes aux utilisateurs
  13. 13. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Flexibilité technologique 13 † Utiliser les bons langages et frameworks selon la fonction- nalité à réaliser † Play/Scala † Java EE (JSF/EJB/Java), Spring † JQuery/AngularJS/NodeJS † Django/Python † Symfony/PHP Service ConducteurService Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interface web Passager
  14. 14. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Equipe réduite 14 † Chaque microservice à sa propre équipe de développement † L’équipe de développement orientée fonctionnalité est réduite et pluridisciplinaire † Développeurs backend † Développeurs web † Administrateurs bases de données Service ConducteurService Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interface web Passager
  15. 15. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Déploiement ciblé 15 † Evolution d’une certaine partie sans tout redéployer † Un seul livrable à partir d’un seul code source † Moins de coordination entre équipe quand il y a un seul déploiement † Plus souvent † Moins de risque † Plus rapide Service ConducteurService Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interface web Passager V1.0 V1.0 V2.0 V10.0 V5.0 V545.2
  16. 16. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Montée en charge / scalabilité 16 † Forte sollicitation sur un microservice ? † page web : Amazon en période de « Black Friday » † batch : compression de vidéos † Comme chaque fonctionnalité est isolée possibilité de multiplier le nombre d’instances d’un microservice Service ConducteurService Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interface web Passager V1.0 V1.0 V2.0 V10.0 V5.0V545.2 Trois instances du même microservice
  17. 17. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Montée en charge / scalabilité : cube de scalabilité 17 Scalabilité Axe Y Décomposition fonctionnelle † Le livre « The art of Scalability » décrit trois dimensions pour la scalabilité Scalabilité Axe X Cloner Application monolithique (JEE Application) Partitionner les données selon les besoins • Volumétrie excessive pour les fichiers vidéos ou musiques • Zone géographique Autant de microservices que de fonctionnalités Cloner les microservices qui ont une forte sollicitation (nécessite un loadbalancer) Utilisation d’un loadbalancer dans le cours suivant Netflix
  18. 18. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Facilite les tests 18 † Comme chaque fonctionnalité est isolée dans un microservice il est plus facile de les tester † Les tests unitaires concernent la partie intrinsèque d’un microservice => on sait déjà faire † Quels types de tests restants ? † Service : stresser l’API exposée du microservice † Bout-en-bout : intégrer les autres microservice (voir architecture microservice) † Si c’est facile à tester alors c’est facile à déployer (principe du déploiement continu)
  19. 19. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Architecture microservice 19 † Une architecture microservice est donc un ensemble de microservices autonomes † Pas de bus d’intégration (ESB) car il y a de la logique et donc cela force le couplage † Utilisation d’un Bus d’événements pour le faible couplage † Utilisation d’un Load Balancer pour équilibrer la charge Service Conducteur Service Passager Service Notification (SMS, EMAIL) Service Paiement Service Facturation Interface web Passager V1.0 V1.0 V2.0 V10.0 V5.0 V545.2 Bus d’événements LoadBalancer Synchrone Asynchrone Charge équilibrée
  20. 20. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 20 Applications Monolithique Versus Microservice q Une seule grosse application pour toutes les fonctionnalités q Un seul langage pour faciliter la communication q Couplage fort q Communication par les données Architecture Orientée Service VS Architecture Microservice q Autant de microservices que de fonctionnalités q Plusieurs langages utilisés et API Rest pour l’exposition q Couplage faible q Communication par les services
  21. 21. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 21 SOA Versus Microservice q Standards définis par OASIS SOAP, BPEL q Couplage fort q Bus d’intégration q Plusieurs fonctionnalités par service q Déploiement monolithique Architecture Orientée Service VS Architecture Microservice q Standards du web q Couplage faible q Bus d’événement q Une seule fonctionnalité par microservice q Automatiquement déployable
  22. 22. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Architecture microservices : inconvénients 22 † Plus de compilation lors de l’intégration pour vérifier si une API est cassée ou pas † Multiplication des SGBD utilisés (relationnel ou NoSQL) et donc compétences nouvelles † Développeur devient un opérationnel pour le déploiement † Ne s’applique pas à toutes les entreprises † Si déploiement fréquent => ok † Si déploiement une fois l’an => monolithique
  23. 23. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Qui utilisent les microservices ? 23 † Uber : https://eng.uber.com/soa/ † Netflix : http://techblog.netflix.com/ † Amazon : http://fr.slideshare.net/apigee/i-love-apis-2015- microservices-at-amazon † Sound Cloud : https://developers.soundcloud.com/blog/building- products-at-soundcloud-part-2-breaking-the-monolith † Le prochain Eclipse Che IDE † Offres d’emploi (tendances à la hausse) † https://www.linkedin.com/jobs/search?keywords=Micro+Services&location=France † http://www.meteojob.com/candidate/offers/candidateOffersSearchResults.mj?q=micro +service+macro-job%3A14&cid=281982
  24. 24. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Développer des architectures microservice ? 24 † Savoir Isoler un microservice † Savoir Coder le contenu du microservice † Savoir faire Communiquer des microservices † Savoir Composer les microservices † Savoir Répartir les charges On va explorer les technologies du marché. Dans le cours suivant, on se focalisera sur une technologie pour chaque point
  25. 25. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Isoler : Machine virtuelle ou Conteneur ? 25 † Pour isoler un microservice utilisation de techniques de virtualisation † Trois grandes techniques s’affrontent ConteneursMachine VirtuelleServeurs physiques Serveur MatérielServeur Matériel Serveur Matériel OSOS Serveur Matériel OSOS ApplicationApplication Docker Binaires Bibliothèques Binaires Bibliothèques Application Application Hyperviseur OS VirtualiséOS Virtualisé Binaires Bibliothèques Binaires Bibliothèques Application Application 1 Application = 1 machine physique = trop coûteux
  26. 26. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Isoler : Machine virtuelle VS Conteneur 26 Machine Virtuelle (574 Mo) Conteneur (100 Ko) Démarrage ~ 1 minutes 0.2 seconde Mémoire min 256 Mo ~ 0.3 Mo Espace Disque min 1 Go ~ 0.1 Mo † Comparatif sur les performances 2500 conteneurs ont été créés dans un Raspberry PI 2 https://blog.docker.com/2015/09/update-raspberry-pi-dockercon-challenge/
  27. 27. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Isoler : les outils existants 27 † Les outils pour construire des machines virtuelles † Hyperviseur type 1 : Xen, VMware vSphere, Microsoft HyperV, KVM † Hyperviseur type 2 : Oracle VirtualBox, VMware Player, QEMU † Les outils pour construire des conteneurs † Conteneur : Docker, CoreOS Rocket, LXC † Docker (https://www.docker.com) => le plus tendance … † Basé sur LXC mais plus simple à mettre en œuvre † Dispose d’un dépôt central fournissant des images prêtes à l’emploi † Logiciel libre Service Conducteur V5.0 Ce microservice est isolé dans un conteneur
  28. 28. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder 28 † Utiliser les plateformes logicielles (Java, Python, JavaScript) que vous avez l’habitude d’utiliser † Utiliser votre environnement de développement préféré (Eclipse, IntelliJ, Netbeans, Atom…) † Utiliser des bibliothèques qui permettent d’exposer des services web (Rest ou SOAP) † Automatiser le déploiement de votre application afin de minimiser le temps
  29. 29. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (sans microservice) 29 Serveur Matériel OS Conteneur Java EE Bibliothèques Jar partagées Bibliothèques JAR Classes † Actuellement une application web (war) développée en Java est déployée dans un serveur d’application Java Autres Applications Bibliothèques JAR Classes Contexte de l’application (war) Contient les classes et les ressources Contient les Bibliothèques Java spécifiques Contient les bibliothèques globales à tous les War …
  30. 30. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (avec microservice) 30 † Trois stratégies pour développer des microservices en Java † in-container : conteneur Java EE et un War (comme avant) † container-less : un gros Jar contenant toutes les bibliothèques † self-contained : un gros Jar en utilisant un micro-framework In-container Container-less Self-contained Serveur Matériel OS Docker Binaires Bibliothèques Binaires Bibliothèques Conteneur JavaEE Application Bibliothèques JAR WAR … Serveur Matériel OS Docker Binaires Bibliothèques Binaires Bibliothèques Application JAR … Conteneur JavaEE embedded Bibliothèques JAR Serveur Matériel OS Docker Binaires Bibliothèques Binaires Bibliothèques Application JAR … Bibliothèques JAR
  31. 31. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (container-less en détail) 31 † Le serveur d’application est embarqué dans l’application † Le code source est le même que pour une application War † Un gros Jar est distribué et prêt à l’exécution † Solutions du marché † Apache TomEE (anciennement OpenEJB) † Wildfly Swarm (anciennement JBoss) † Payara (à base de Glassfish) Serveur Matériel OS Docker Binaires Bibliothèques Binaires Bibliothèques Application JAR … Conteneur JavaEE embedded Bibliothèques JAR $ java -jar my-big-app-container-less.jar
  32. 32. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (container-less en détail) 32 † Avantages † Pas d’adaptation du code à faire, une simple méthode main à ajouter † Rapide à démarrer † Pratique pour les tests fonctionnels † La plupart des serveurs d’application sont « embedded » † Inconvénients † Ne fournit pas toutes les fonctionnalités d’un serveur (admin ?) † Difficulté de modification du serveur à chaud ? † L’application est dépendante du serveur, recompiler pour changer † Fournit toutes les bibliothèques de la pile Java EE (module profile)
  33. 33. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en détail) 33 Serveur Matériel OS Docker Binaires Bibliothèques Binaires Bibliothèques Application JAR … Bibliothèques JAR † Utilisation d’un micro-framework † Le code source doit être adapté † Un moyen Jar est distribué et prêt à l’exécution † C’est quoi un micro-framework ? † Framework orienté web minimaliste † Opposé au framework qui font tout full-stack † N’impose pas de structure à l’application † Facilement interchangeable $ java -jar my-big-app-self-contained.jar
  34. 34. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en détail) 3434 † Micro-frameworks existants pour faciliter le développement † KumuluzEE => très simple † Dropwizard (Java) † Vert.x (Java et autres) † Spring Boot (Java) † Restlet (Java) † Spark (Java) † Jodd (Java) † Node.js, Seneca (JavaScript) † Flask (Python) † Sinatra (Ruby) † Lumen (PHP) † Silex (PHP) † …
  35. 35. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Coder : le cas de Java (self-contained en détail) 35 † Avantages † Délivre le strictre nécessaire (configuration à la “carte”) † Fournit par conséquent un Jar moins gros que container-less † N’impose pas de structures dans l’application † Inconvénients † Apprentissage d’une nouvelle bibliothèque † Configuration parfois un peu complexe † Nombre important de micro-frameworks sur le marché, fait-on le bon choix ?
  36. 36. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Communiquer 36 † La communication entre des microservices peut se faire « conjointement ou pas » via † des services web (REST ou SOAP) => communication synchrone † un bus d’événements => communication asynchrone † Bus d’événements basés sur le protocole AMQP (Advanded Message Queuing Protocol) † Solutions de bus d’événements basé sur AMQP † RabbitMQ (Pivotal) => le plus utilisé et documenté † ActiveMQ, Apollo (Apache) † Qpid (Apache) † HornetQ (Jboss)
  37. 37. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Composer 37 † La composition va permettre de résoudre le problème d’orchestration des conteneurs † Exemple simple pour comprendre cette problématique † A = un conteneur pour la base de données (MySQL) † B = un conteneur applicatif † A doit être démarré avant B et B a besoin d’accéder à A (ouverture de port) † Solutions du marché † Docker Compose (Docker inc.) => le plus simple † Docker Swarm (Docker inc.) † Kubernetes (Google) † Mesos (Apache) † Fleet (CoreOS) † Crane (https://github.com/michaelsauter/crane) † Consul
  38. 38. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Répartir la charge : reverse proxy 38 † Problématique du pourquoi utiliser un reverse proxy † Plusieurs conteneurs Docker vont être créés † Plusieurs conteneurs d’une même image peuvent être créées † Reverse Proxy ou « Proxy inversé » † Donne accès depuis un réseau externe aux conteurs d'un réseau interne † Distribuer en fonction de la charge, les requêtes web aux conteneurs les moins occupées (d’une même image par exemple) † Solutions libres du marché † Nginx (Nginx inc.) => largement utilisé et très simple † Haproxy † Hipache (Docker inc.) † Træfik Une image est le binaire qui sert à créer un conteneur : voir prochain cours
  39. 39. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Bilan 39 † L’architecture microservices n’est pas la solution à tous les problèmes de performances d’un applicatif † Problèmes courants † Modélisation † Persistance des données † Transaction † Front-end non adapté † Les microservices adresse le problème d’architecture et sont là pour faciliter la monter en charge † Attention : il n’a jamais été précisé que les architectures monolithiques étaient mortes
  40. 40. Microservices - Généralités - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Pour aller plus loin 40 † Les bonnes pratiques pour passer à une architecture microservices => partir d’une application monolithique † Déploiement vers des clusters † Monitoring † Transaction † Sécurité

×