Mickaël BARON – 2010 (Rev. Janvier 2016)
mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr
SOA
Introduction générale
SOA - M. Baron - Page
keulkeul.blogspot.com
2
Creative Commons
Contrat Paternité
Partage des Conditions Initiales à l'Iden...
SOA - M. Baron - Page
keulkeul.blogspot.com
3
A propos de l’auteur …
†  Mickaël BARON
†  Ingénieur de Recherche au LIAS
† ...
SOA - M. Baron - Page
keulkeul.blogspot.com
4
Plan du cours
†  Introduction SOA (pour introduire les services web)
†  Serv...
SOA - M. Baron - Page
keulkeul.blogspot.com
5
Déroulement du cours : Introduction générale
†  Pédagogie du cours
†  Des bu...
SOA - M. Baron - Page
keulkeul.blogspot.com
6
Ressources : Liens sur le Web
†  Billets issus de Blog
†  blog.xebia.fr/cate...
SOA - M. Baron - Page
keulkeul.blogspot.com
7
Ressources : Bibliothèque
†  SOA Principles of Service Design
†  Auteur : Th...
SOA - M. Baron - Page
keulkeul.blogspot.com
8
Vers une architecture SOA …
†  Une application distribuée est définie par un...
SOA - M. Baron - Page
keulkeul.blogspot.com
9
Evolution des applications
†  Exemple : application de co-voiturage
Architec...
SOA - M. Baron - Page
keulkeul.blogspot.com
10
SOA : Généralités
†  SOA est l’acronyme de Service Oriented Architecture qu...
SOA - M. Baron - Page
keulkeul.blogspot.com
11
SOA : Concepts de Service
†  Qu’est-ce qu’un service ?
†  « Un Service est ...
SOA - M. Baron - Page
keulkeul.blogspot.com
12
Service : Contrat Standardisé
†  Contrat entre le fournisseur de service et...
SOA - M. Baron - Page
keulkeul.blogspot.com
13
Service : Couplage lâche
†  L’échange entre le fournisseur de service et le...
SOA - M. Baron - Page
keulkeul.blogspot.com
14
Service : Abstraction
†  Le contrat du service ne doit contenir que les inf...
SOA - M. Baron - Page
keulkeul.blogspot.com
15
Service : Réutilisabilité / Découvrabilité
†  Un service doit être accessib...
SOA - M. Baron - Page
keulkeul.blogspot.com
16
Service : Autonomie / Sans état
†  Un service doit disposer
†  de l’ensembl...
SOA - M. Baron - Page
keulkeul.blogspot.com
17
Service : Composabilité
†  Un service doit fonctionner de manière modulaire...
SOA - M. Baron - Page
keulkeul.blogspot.com
18
Architecture Monolithique Versus SOA
q  Intra-entreprise
q  Limitée à un so...
SOA - M. Baron - Page
keulkeul.blogspot.com
19
Solutions pour une SOA
†  Plusieurs solutions technologiques sont adaptées ...
SOA - M. Baron - Page
keulkeul.blogspot.com
20
Solutions pour une SOA : OSGi
† Un point sur OSGi (Open Service Gateway Ini...
SOA - M. Baron - Page
keulkeul.blogspot.com
21
Services web : réponses au SOA
†  Les services web sont basés sur les proto...
SOA - M. Baron - Page
keulkeul.blogspot.com
22
Services web : réponses au SOA
http://www.innoq.com/resources/ws-standards-...
SOA - M. Baron - Page
keulkeul.blogspot.com
23
Services web : technologies disponibles
†  Deux familles de services web se...
SOA - M. Baron - Page
keulkeul.blogspot.com
24
Services web étendus
Annuaire UDDI
Consommateur
du Service
Fournisseur
du S...
SOA - M. Baron - Page
keulkeul.blogspot.com
25
Services web étendus
†  Pile des standards pour les services web étendus
HT...
SOA - M. Baron - Page
keulkeul.blogspot.com
26
Services web REST
†  Exploités pour les Architectures Orientées Données (DO...
SOA - M. Baron - Page
keulkeul.blogspot.com
27
Services web REST
†  Pile des protocoles et langages pour les services web ...
SOA - M. Baron - Page
keulkeul.blogspot.com
28
Les fournisseurs de services web ?
†  Deux types de fournisseurs sont à dis...
SOA - M. Baron - Page
keulkeul.blogspot.com
29
Plateformes de développement
†  La grande majorité des plateformes de dével...
SOA - M. Baron - Page
keulkeul.blogspot.com
30
Objectifs du cours
†  Connaître les normes, les standards et les techniques...
SOA - M. Baron - Page
keulkeul.blogspot.com
31
Agenda du cours SOA / Services web étendus
†  Séances Introduction générale...
SOA - M. Baron - Page
keulkeul.blogspot.com
32
Agenda du cours SOA / Services web REST
†  Séance Description (~ 1 séance)
...
SOA - M. Baron - Page
keulkeul.blogspot.com
33
Agenda du cours SOA / Application au microservices
†  Séances Description (...
Prochain SlideShare
Chargement dans…5
×

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

14 200 vues

Publié le

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.

Publié dans : Technologie

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

  1. 1. Mickaël BARON – 2010 (Rev. Janvier 2016) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr SOA Introduction générale
  2. 2. SOA - M. Baron - Page keulkeul.blogspot.com 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 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
  4. 4. SOA - M. Baron - Page keulkeul.blogspot.com 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 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 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 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 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 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éesInterfaces 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 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 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 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 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 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 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 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 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 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 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 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 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 22 Services web : réponses au SOA http://www.innoq.com/resources/ws-standards-poster/
  23. 23. SOA - M. Baron - Page keulkeul.blogspot.com 23 Services web : technologies disponibles †  Deux familles de services web se distinguent actuellement †  Services web « étendues » †  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 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 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 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 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, … 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 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 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 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 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 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 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

×