Successfully reported this slideshow.
Mickaël BARON – 2010 (Rév. Janvier 2017)
mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
SOA
@mickaelbaron
Introdu...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
2
Creative Commons
Contrat Paternité
Partage des Conditions Initi...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
3
A propos de l’auteur …
† Mickaël BARON
† Ingénieur de Recherche...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
4
Plan du cours
† Introduction SOA (pour introduire les services ...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
5
Déroulement du cours : Introduction générale
† Pédagogie du cou...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
6
Ressources : Liens sur le Web
† Billets issus de Blog
† blog.xe...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
7
Ressources : Bibliothèque
† SOA Principles of Service Design
† ...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
8
Vers une architecture SOA …
† Une application distribuée est dé...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
9
Evolution des applications
† Exemple : application de co-voitur...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
10
SOA : Généralités
† SOA est l’acronyme de Service Oriented Arc...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
11
SOA : Concepts de Service
† Qu’est-ce qu’un service ?
† « Un S...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
12
Service : Contrat Standardisé
† Contrat entre le fournisseur d...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
13
Service : Couplage lâche
† L’échange entre le fournisseur de s...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
14
Service : Abstraction
† Le contrat du service ne doit contenir...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
15
Service : Réutilisabilité / Découvrabilité
† Un service doit ê...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
16
Service : Autonomie / Sans état
† Un service doit disposer
† d...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
17
Service : Composabilité
† Un service doit fonctionner de maniè...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
18
Architecture Monolithique Versus SOA
q Intra-entreprise
q Limi...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
19
Solutions pour une SOA
† Plusieurs solutions technologiques so...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
20
Solutions pour une SOA : OSGi
† Un point sur OSGi (Open Servic...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
21
Services web : réponses au SOA
† Les services web sont basés s...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
22
Services web : réponses au SOA
http://www.innoq.com/resources/...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
23
Services web : technologies disponibles
† Deux familles de ser...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
24
Services web étendus
Annuaire UDDI
Consommateur
du Service
Fou...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
25
Services web étendus
† Pile des standards pour les services we...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
26
Services web REST
† Exploités pour les Architectures Orientées...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
27
Services web REST
† Pile des protocoles et langages pour les s...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
28
Les fournisseurs de services web ?
† Deux types de fournisseur...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
29
Plateformes de développement
† La grande majorité des platefor...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
30
Objectifs du cours
† Connaître les normes, les standards et le...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
31
Agenda du cours SOA / Services web étendus
† Séances Introduct...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
32
Agenda du cours SOA / Services web REST
† Séance Description (...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron
33
Agenda du cours SOA / Application au microservices
† Séances D...
SOA - M. Baron - Page
keulkeul.blogspot.com@mickaelbaron Expérimentations
34
† Machine virtuelle Linux « prête à l’emploi ...
Upcoming SlideShare
Loading in …5
×

Introduction aux Architectures Orientées Services (SOA) : introduction générale

17,930 views

Published on

Ce support de cours est une introduction aux Architectures Orientées Services (SOA). Nous détaillons les aspects qui caractérisent un service puis nous comparons avec les architectures monolithique. Enfin, nous terminons sur les technologies mises en oeuvre pour développer des architectures orientées services.

Published in: Technology
  • Be the first to comment

Introduction aux Architectures Orientées Services (SOA) : introduction générale

  1. 1. Mickaël BARON – 2010 (Rév. Janvier 2017) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr SOA @mickaelbaron Introduction générale
  2. 2. SOA - 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. SOA - 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, 2000 forums et jusqu'à 5000 messages par jour @mickaelbaron
  4. 4. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 4 Plan du cours † Introduction SOA (pour introduire les services web) † Service web étendus † WSDL, SOAP, JAX-WS † Service web REST † REST, JAX-RS † Architecture microservice (pour l’application) † Docker, RabbitMQ, KumuluzEE, Docker Compose, HaProxy
  5. 5. SOA - 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’usage des services web dans une architecture SOA † Pas de technique pour l’instant † Pré-requis † Ingénierie des données † Langages de description : XML † Architectures multi-couches (Java EE) Ceci est une alerte Ceci est une astuce
  6. 6. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 6 Ressources : Liens sur le Web † Billets issus de Blog † blog.xebia.fr/category/soa † jee-bpel-soa.blogspot.com/search/label/web services † blogs.sun.com/arungupta/ † Articles † fr.wikipedia.org/wiki/Architecture_orientée_services † fr.wikipedia.org/wiki/Service_Web † www.journaldunet.com/solutions/dsi/article/air-france-klm-donne- des-ailes-a-son-systeme-d-information-avec-la-soa.shtml † www.innoq.com/resources/ws-standards-poster/ † Cours † www.javapassion.com/soaprogramming/SOAbasics.pdf † www.javapassion.com/webservices/WebServicesOverview.pdf
  7. 7. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 7 Ressources : Bibliothèque † SOA Principles of Service Design † Auteur : Thomas Erl † Éditeur : Prentice Hall Ptr † Edition : Juillet 2007 - 608 pages - ISBN : 0132344823 † Le guide de l’architecte du SI † Auteur : Xavier Fournier-Morel, Pascal Grosjean, … † Éditeur : Dunod † Edition : Octobre 2006 - 302 pages - ISBN : 2100499726 † Service-Oriented Architecture (SOA) : Concepts … † Auteur : Thomas Erl † Éditeur : Prentice Hall Ptr † Edition : Août 2005 - 792 pages - ISBN : 0131858580
  8. 8. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 8 Vers une architecture SOA … † Une application distribuée est définie par un ensemble de composants † Collaborent pour l’exécution de tâches communes † Distants géographiquement † Interconnectés via un réseau de communication † Hétérogènes † Solutions qui ont fait leur preuve † DCOM, CORBA, EJB, RMI, .Net Remoting, … † Faiblesses de ces solutions † Format de représentation données spécifiques † Interopérabilité si les composants utilisent la même solution † Protocole de transport spécifique nécessite une configuration réseau
  9. 9. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 9 Evolution des applications † 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 ? Connecteurs pour SMS, EMAIL et paiement Interfaces web Base de données API REST/SOAP Sera vu plus tard… trop tôt pour un comparison
  10. 10. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 10 SOA : Généralités † SOA est l’acronyme de Service Oriented Architecture qui est traduit comme « Architecture Orientée Service » † Le Service (ou Composant) désigne le fondement de ce modèle d’interaction entre applications † Le paradigme SOA : Chercher, Publier et Consommer Annuaire / Entrepôt Consommateur du Service Fournisseur du ServiceContrat Publier Fournisseur du Service publie son service via le contrat 1 Chercher Consommateur du Service cherche un service répondant à ces exigences (Un contrat lui est retourné) 2 Consommer 3 Consommateur du Service envoie des messages (respect du contrat) au fournisseur du Service
  11. 11. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 11 SOA : Concepts de Service † Qu’est-ce qu’un service ? † « Un Service est un composant logiciel distribué, exposant les fonctionnalités à forte valeur ajoutée d’un domaine métier » [XEBIA BLOG : 2009] † Huit aspects caractérisant un service † Contrat standardisé † Couplage lâche † Abstraction † Réutilisabilité † Autonomie † Sans état † Découvrabilité † Composabilité Dans la suite nous détaillons chaque aspect d’un service
  12. 12. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 12 Service : Contrat Standardisé † Contrat entre le fournisseur de service et le consommateur de service † Trois types de contrat sont à distinguer † Lié à la syntaxe du service (opération, messages d’entrée, messages de sortie, …) † Lié à la sémantique du service (définition de règles et de contraintes d’usage, …) † Lié à la qualité de service (temps de réponse attendu, procédures en cas de panne, temps de reprise après interruption, …) † S’appuie sur des standards d’interopérabilité pour faciliter le dialogue (exemple : WSDL)
  13. 13. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 13 Service : Couplage lâche † L’échange entre le fournisseur de service et le consommateur doit se faire à travers des messages (couplage lâche vis-à-vis de son environnement) † L’utilisation d’un service BUS/Orchestration évite que les services aient besoin de connaître les autres services (remis en cause dans l’architecture Microservice) Services 1 Services 2 Services 3 Services 4 Services 5 Couplage fort Couplage lâche Moteur Orchestration Services 1 Services 2 Services 4 Services 3 1 2 3 4 Etudié dans le dernier cours
  14. 14. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 14 Service : Abstraction † Le contrat du service ne doit contenir que les informations pertinentes à son invocation † Fonctionnement du service dit en « boîte noire » † Seul le contrat exposé au consommateur du service est connu † Le fonctionnement interne du service ne doit pas être visible † Logique métier † Implémentation † Il est par conséquent important d’assurer la prédictabilité d’un service † Pas de variation dans le comportement et dans la réponse d’un service lors de la réception d’une requête
  15. 15. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 15 Service : Réutilisabilité / Découvrabilité † Un service doit être accessible depuis un entrepôt ou un annuaire pour faciliter sa découverte † Le fournisseur de services a la charge de déposer et de mettre à jour ses services depuis l’annuaire † Le service est enrichi par un ensemble de méta-données pour faciliter la recherche du consommateur de services † S’appuie sur des standards (UDDI, ebXML) † D’après la gouvernance SOA † Un service est défini avec l’intention d’être réutilisé
  16. 16. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 16 Service : Autonomie / Sans état † Un service doit disposer † de l’ensembles des informations nécessaires à son exécution † ne doit dépendre d’aucun service externe (couplage lâche) † Garantir l’autonomie d’un service permet de s’assurer de sa prédictabilité † Un service doit être sans état de façon à minimiser la consommation de ressources † Maintenance : rend complexe la composition de services † Performance : gourmand en ressources systèmes
  17. 17. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 17 Service : Composabilité † Un service doit fonctionner de manière modulaire et non pas intégrée † Assurer la décomposition d’un service complexe en sous services plus simples entre eux (garantie l’autonomie) † S’inscrire dans une logique de composition de services à travers l’utilisation de l’orchestration (couplage lâche) † L’orchestration favorise l’indépendance des services et assure que des services n’appellent pas directement d’autres services
  18. 18. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 18 Architecture Monolithique Versus SOA q Intra-entreprise q Limitée à un sous ensemble de langages de programmation q Procédurale q Protocole de transport propriétaire q Fortement couplé q Traitement efficace q Déploiement de l’ensemble Architecture Monolithique VS Architecture Orientée Service q Entre Entreprises q Indépendance du langage de programmation q Pilotée par les messages q Possibilité de choisir le protocole de transport q Faiblement couplé q Traitement plus lourd q Déploiement par partie
  19. 19. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 19 Solutions pour une SOA † Plusieurs solutions technologiques sont adaptées pour développer des architectures orientées services † Services web (SOAP, Rest, BPEL) † Framework asynchrones (Vert.x, RxJava, Node.js…) † Broker de messages (ActiveMQ, RabbitMQ...) † Des technologies spécifiques à des domaines † Internet of Things (MQTT) † OSGi (Equinox, Felix…) † Les technologies ne sont pas exclusives et peuvent être utilisées conjointement
  20. 20. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 20 Solutions pour une SOA : OSGi † Un point sur OSGi (Open Service Gateway Initiative) † Spécification définie par l’OSGi Alliance (http://www.osgi.org) † Longtemps exploité dans le monde de l’embarqué, utilisé dans les serveurs (GlassFish, Spring DM) et application (Eclipse) † Concepts … † Dynamique : installé, arrêté, mise à jour, désinstallé † Découvrabilité : registre des services † Abstraction : gestion détaillée des classes à exposer † Pour aller plus loin : http://mbaron.developpez.com/eclipse/introplugin
  21. 21. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 21 Services web : réponses au SOA † Les services web sont basés sur les protocoles et les langages du Web † HTTP, XML, TCP/IP pour la couche réseau † Ne nécessite pas une configuration réseau particulière † Les services web sont auto-suffisants puisqu’ils contiennent toutes les informations à leurs utilisations † Chercher, publier et consommer † Annuaire, contrat de fonctionnement et un client pour les consommer † Les services web sont modulaires † Une application doit être décomposée en un ensemble de services † Utilisation d’une orchestration † Les services web peuvent être définis par des standards † OASIS, W3C, WS-I et IETF
  22. 22. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 22 Services web : réponses au SOA http://www.innoq.com/resources/ws-standards-poster/
  23. 23. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 23 Services web : technologies disponibles † Deux familles de services web se distinguent actuellement † Services web « étendus » † S’appuie sur des standards UDDI / WSDL / SOAP † Annuaire de services web : UDDI † Contrat : WSDL † Consommer : SOAP † Services web REST (Representational State Transfer) † Défini par la thèse de Roy Fielding en 2000 † Utilise directement HTTP au lieu d’utiliser une enveloppe SOAP † URI est utilisée pour nommer et identifier une ressource † Méthodes HTTP (POST, GET, PUT et DELETE) sont utilisées pour effectuer les opérations de base CRUD
  24. 24. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 24 Services web étendus Annuaire UDDI Consommateur du Service Fournisseur du Service Chercher Publier Consommer Document WSDL est utilisé comme contrat du service web WSDL <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://helloworldwebservice.lisi.ensma.fr/"> <soapenv:Header/> <soapenv:Body> <hel:simpleHelloWorld/> </soapenv:Body> </soapenv:Envelope> Messages SOAP est envoyé pour consommer (invoquer) un service web Interrogation de l’annuaire UDDI pour rechercher des contrats WSDL suivant des critères spécifiques WSDL
  25. 25. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 25 Services web étendus † Pile des standards pour les services web étendus HTTP, SMTP, FTP, BEEP Transport MessageSOAP 1.1 et 1.2 Découverte & Description WSDL, UDDI Qualité de Service Sécurité WS-Security Fiabilité WS-RM Transaction WS-Transactions Orchestration Langages de Processus Métier (BPL) BPEL
  26. 26. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 26 Services web REST † Exploités pour les Architectures Orientées Données (DOA) † REST n’est pas un standard, il n’existe pas de spécification W3C définissant une spécification † REST est un style d’architecture basé sur un mode de compréhension du Web † REST s’appuie sur des standards du Web : † Protocole HTTP † URLs † Formats de fichiers † Sécurisation via SSL
  27. 27. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 27 Services web REST † Pile des protocoles et langages pour les services web REST HTTP, FTP… Transport MessageMIME Types (Text, JSON, XML…) Découverte & Description WADL, ATOM, RAML… Qualité de Service / Sécurité Orchestration Langages de Processus Métier (BPL) BPEL HTTP Basic, SSL / TLS
  28. 28. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 28 Les fournisseurs de services web ? † Deux types de fournisseurs sont à distinguer † Fournisseurs de services web « Orientés Web » (public) † Fournisseurs de services web « Entreprise » (privé) † Les grands noms du Web sont présents et leurs services sont accessibles † Amazon, eBay, Delicious, Facebook, Flickr, Google, Twitter, Netflix WeatherBug, Yahoo, Microsoft… † Oui mais … † Pratiquement tous les fournisseurs de services web exploitent l’architecture REST (besoins de performance) † Certains (comme Google) ont arrêtés les services web étendus † eBay propose encore des services web étendus
  29. 29. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 29 Plateformes de développement † La grande majorité des plateformes de développements fournissent le support de services web (outils et APIs) † Plateforme .NET † Plateforme Java † Plateforme PHP, C++, Python, … † Les outils permettent de † Manipuler des messages SOAP † Manipuler des données au format XML † Mapping XML / Classe (Marshall, Unmarshall) † Accéder à la couche HTTP † Dans ce cours, nous utiliserons la plateforme Java † Outillée, gratuite, accessible, légère, respect des standards
  30. 30. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 30 Objectifs du cours † Connaître les normes, les standards et les techniques définissant les services web (WSDL, SOAP, UDDI, HTTP) † Spécifier le contrat d’un service web (WSDL, WADL) † Appeler un service web via des messages SOAP, HTTP † Programmer un service web † « From Scratch » à partir d’une classe Java † A partir d’un contrat † Déployer un service web † Programmer un client d’un service web † Mettre en application sur une architecture microservice
  31. 31. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 31 Agenda du cours SOA / Services web étendus † Séances Introduction générale (1 séance) † Séances Description (~ 2 séances) † Cours : WSDL + SOAP + UDDI † Atelier : SOAP UI pour construire un WSDL et tester † Séances Développement (~ 2 séances) † Cours : JAX-WS (Pile services web de Java) † Atelier : Eclipse + Tomcat pour le développement serveur et client
  32. 32. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 32 Agenda du cours SOA / Services web REST † Séance Description (~ 1 séance) † Cours : REST † Atelier : SOAP UI + CURL + Postman pour tester † Séances Développement (~ 2 séances) † Cours : JAX-RS (Pile services web de Java) † Atelier : Eclipse + Tomcat pour le développement serveur et client
  33. 33. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron 33 Agenda du cours SOA / Application au microservices † Séances Description (~ 1/2 séance) † Cours : introduction, différences avec SOA, technologies † Séances Mise en œuvre (~ 1,5 séances) † Cours : KumuluzEE, Docker, Docker Compose et ActiveMQ † Atelier : déployer des microservices avec Docker, communiquer entre microservices via des événements
  34. 34. SOA - M. Baron - Page keulkeul.blogspot.com@mickaelbaron Expérimentations 34 † Machine virtuelle Linux « prête à l’emploi » † Créer un répertoire SOA sur c: ou votre home (~) † http://www.lias-lab.fr/~mbaron/soa-2017/vm-linux † Copier le contenu dans le répertoire SOA † Importer la machine virtuelle † Désactiver le support USB2 † Démarrer la machine virtuelle † Croiser les « doigts »

×