SOA : introduction générale

SOA : introduction générale

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.

3c4219fa12e875f02a81d5957876de8e?s=128

Mickael BARON

January 02, 2019
Tweet

Transcript

  1. Mickaël BARON – 2010 (Rév. Février 2019) mailto:baron.mickael@gmail.com ou mailto:baron@ensma.fr

    SOA @mickaelbaron mickael-baron.fr Introduction générale
  2. SOA - M. Baron - Page mickael-baron.fr @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. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 3 À

    propos de l’auteur … † Mickaël BARON † Ingénieur de Recherche au LIAS † https://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 † https://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 mickael-baron.fr
  4. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 4 Plan

    du cours complet † 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) † MicroProfile, Docker, RabbitMQ, Docker Compose, HaProxy
  5. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron Révision :

    quels changements ? 5 † 2018-2019 † Support de Java 8 à Java 11 † Dépôt de tous les codes exemples sur Github † Dépôt de tous les tutoriels sur Github † Ajout d’un cours sur les technologies de « Streaming » † Ajout d’un cours sur le développement de WebSocket et SSE avec Java
  6. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 6 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 Jakarta EE (ex Java EE) Ceci est une alerte Ceci est une astuce
  7. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 7 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
  8. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 8 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
  9. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 9 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
  10. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 10 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
  11. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 11 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 Service Contrat Publier Fournisseur du Service publie son service via le contrat 1 Consommer 3 Consommateur du Service envoie des messages (respect du contrat) au fournisseur du Service Chercher Consommateur du Service cherche un service répondant à ces exigences (Un contrat lui est retourné) 2
  12. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 12 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
  13. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 13 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)
  14. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 14 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
  15. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 15 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
  16. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 16 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étadonné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é
  17. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 17 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
  18. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 18 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
  19. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 19 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
  20. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 20 Solutions

    pour une SOA † Plusieurs solutions technologiques sont adaptées pour développer des architectures orientées services † Services web (SOAP et REST) † Technologies « Push » (WebSocket et SSE) † Technologies Publish-Subscribe (RabbitMQ...) † Framework asynchrones (Vert.x, RxJava, Node.js…) † Des technologies spécifiques à des domaines † Internet of Things (MQTT) † OSGi (Equinox, Felix…) † Robotique (ROS) † Les technologies ne sont pas exclusives et peuvent être utilisées conjointement
  21. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 21 Solutions

    pour une SOA : OSGi † Un point sur OSGi (Open Service Gateway Initiative) † Spécification définie par l’OSGi Alliance (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
  22. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 22 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
  23. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 23 Services

    web : réponses au SOA http://www.innoq.com/resources/ws-standards-poster/
  24. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 24 Services

    web : technologies disponibles † Deux familles de services web se distinguent actuellement † Services web « étendus » ou « SOAP » † 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
  25. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 25 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
  26. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 26 Services

    web étendus † Pile des standards pour les services web étendus HTTP, SMTP, FTP, BEEP Transport Message SOAP 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
  27. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 27 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
  28. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 28 Services

    web REST † Pile des protocoles et langages pour les services web REST HTTP, FTP… Transport Message MIME Types (Text, JSON, XML…) Découverte & Description WADL, ATOM, RAML, Swagger… Qualité de Service / Sécurité Orchestration Langages de Processus Métier (BPL) BPEL HTTP Basic, SSL / TLS
  29. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 29 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, Facebook, Flickr, Google, Instagram, Twitter, Meteo France, 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
  30. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 30 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
  31. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron Métaphore de

    l’auto-école / coding-school 31 Code = Concepts SOA Conduite = Développer q Connaître les normes, standards et techniques q Spécifier le contrat d’un service web q Appeler un service web q Identifier les phases de programmation serveur/client et de déploiement q Connaître les bonnes pratiques avec les Architectures Microservice q Programmer un service web depuis un contrat ou depuis une classe Java q Déployer un service web q Programmer un client q Mettre en application une architecture Microservice Technologies Java basées sur Jakarta EE. Les principes restes les mêmes si vous utilisez Spring, .NET…
  32. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 32 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 : SoapUI pour construire un WSDL et tester † Séances Développement (~ 2 séances) † Cours : JAX-WS (Pile des services web étendus de Java) † Atelier : Eclipse + Maven pour le développement serveur et client
  33. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 33 Agenda

    du cours SOA / Services web REST † Séance Description (~ 1 séance) † Cours : REST † Atelier : SoapUI + CURL + Postman pour tester † Séances Développement (~ 2 séances) † Cours : JAX-RS (Pile des services web de Java) † Atelier : Eclipse + Maven pour le développement serveur et client
  34. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron Agenda du

    cours SOA / Technologies « Push » 34 † Séance Description (~ 1 séance) † Cours : Introduction † Séances Développement (~ 1 séance) † Cours : WebSocket (Tyrus) + SSE (JAX-RS) † Atelier : Eclipse + Maven pour le développement serveur et client
  35. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron 35 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 : Microprofile, Docker, Docker Compose et ActiveMQ † Atelier : déployer des microservices avec Docker, communiquer entre microservices via des événements
  36. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron Expérimentations 36

    † Machine virtuelle Linux « prête à l’emploi » † Activer les options de virtualisation dans le bios † Installer VirtualBox † Créer un répertoire SOA sur c:\ ou votre home (~) † https://www.lias-lab.fr/ftppublic/enseignement/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 »
  37. SOA - M. Baron - Page mickael-baron.fr @mickaelbaron Liste des

    outils 37 † Java 8 (Minimum) † Maven 3 † SoapUI pour tester services web étendus † Docker et Docker-Compose (nécessite droits administrateur) † Eclipse ou Intellij ou Netbeans † cURL ou Postman pour tester services web REST