Post on 08-Jul-2020
Programmation d’applications distribuees
Francois Charoy
Universite Henri Poincare
8 octobre 2007
Premiere partie I
Developpement d’applications distribuees
Objectifs du cours
I Comprendre ce qu’est une application distribuee.
I Comprendre la problematique de leur developpement.
I Apprendre les bases de leur developpement dans unenvironnement JEE
I Apprendre a les concevoir
Probleme
Construire des applications pour entreprises
I Sures
I Securisees
I Distribuees
I Supportant la montee en charge (scalable)
I Disponibles
I Favorisant la reutilisation
I Maintenables et extensibles
I Pour moins cher
Quelles applications ?
I Applications de commerce ou de trading
I Applications bancaires
I Call Centers
I Applications d’assurances
I Nombreuses sources d’informations potentielles
I Interactions entre des systemes heterogenes
I Grand nombre de transactions (high throughtput)
I Evolutives
Les questions a resoudre
I Les invocations de methodes : connection d’un client a unserveur et appels de methodes distances
I L’integration avec le back-end : Il faut ecrire du code pouracceder aux bases de donnees et aux systemes d’informationexistant
I Le cycle de vie des objets : La vie des objets (creation,destruction) doit etre geree par le serveur
I Les transactions : Que faire quand deux clients accedent auxmemes donnees. et si un client crash ?
I L’audit et les traces : Si quelque chose se passe mal, commentpeut on savoir ce qui s’est effectivement passe.
I Le redeploiement : Comment mettre a jour une applicationquand le serveur est en production ?
Les questions a resoudre (2)
I Les arrets du serveurs : Comment s’assurer d’un arret propredes serveurs quand c’est necessaire ?
I Les threads : Le serveur doit pouvoir gerer les requetes deplusieurs clients simultanement
I La gestion des messages : Certaines requetes peuvent etreenvoyees sous forme de messages (faible couplage)
I La transparence des defaillances/clustering : Si un serveurcrash, les requetes d’un client doivent etre reroutees vers unautres serveurs. Quel temps d’indisponibilite est acceptable ?
I L’equilibrage de la charge : les requetes des clients doiventetre dirigees vers le serveur le moins charge.
Les questions a resoudre (3)
I La gestion des ressources : Le serveur doit permettre lepartage des ressources entre les clients (connections aux basesde donnees, objets du serveur)
I La securite : le serveur doit etre a l’abri des acces interdits oupar des personnes n’ayant les autorisations necessaires
I La gestion des caches
I Et encore plein d’autres trucs
RAS
Surete (Reliability)
Probabilite qu’un systeme fonctionne a t+1 s’il fonctionnait al’instant t En clair, plus le systeme est fiable plus il est Sure
Disponibilite (Availability)
Pourcentage du temps pendant lequel un systeme est disponibleS’exprime en nombre de 9 (99, 99,9 ... 99,999)
Serviceability
Facilite avec laquelle la maintenance corrective et preventive peuts’effectuer. Une plus grande serviceability ameliore en general ladisponibilite
Passage a l’echelle
Mon systeme marche quand je suis tout seul
Marche-t-il encore pour 2 clients, 100 clients, 1000000 de clients
Quel est le cout pour augmenter la charge acceptable par monsysteme
Ajout de machines, Mise a jour des machines, Modification ducode,
Middleware ou intergiciel
DefinitionIn a distributed computing system, middleware is defined as thesoftware layer that lies between the operating system and theapplications on each site of the system.
Le Middleware
Composants ou systemes permettant de rendre transparent lesproblemes de distribution
I Transparence de l’heterogeneite
I Transparence de la localisation des services
I Transparence des appels de services
I Transparence de la gestion de la persistence
I Transparence de la gestion des transactions distribuees
I Transparence de la securite
I Transparence de la replication des services
Comment faire ?
Utiliser un serveur d’application
I Prise en charge des aspects middleware par un systemespecialise
I Utiliser une architecture distribuee
I Fournit une solution aux differents problemes precedents
Plusieurs tiers
I Les clients (front end)
I Les sources de donnees (back end)
I Un ou plusieurs tiers entre eux pour
I Implanter les nouveaux services
I Integrer les differentes sources de donnees
I Masquer la complexite de l’entreprise aux clients
Architecture Multi Tiers
Architecture par Composants
Un composant respecte des regles d’ecriture pour pouvoirs’executer dans un containerPar exemple :
I Java Bean et la Bean Box
I Servlet et un container de Servlet
I EJB et un container d’EJB
I Un CD dans un lecteur de compact disque
Architecture orientee service (SOA)
Un service ?
I Un service est un ensemble de composants fournissant desfonctions metier de haut niveau
I Les services sont autonomes (pas les composants)
I Un service est toujours disponible
I Les Web Services sont un moyen de fournir des services dansune architecture orientee service
I Souvent un service est developpe a partir de composants.
Web Services
Un moyen de mettre en oeuvre une SOA
I XML technologies : SOAP, WSDL, WS-*
I Protocole pour echanger des informations dans un reseaudistribue - RPC, HTTP, SMTP...
I WSDL Web Service Description Language. XML pour decrirel’interface des services
I Neutralite par rapport aux langages et aux protocoles
Reutilisabilite des services
Composer des services
I construire des services simples et reutilisables
I composer les services avec un couplage faible
I exemple : verification de carte bancaire, authentification,transfer d’argent
Les Service Bus (Brokering)
Un ESB
I Mediateur entre les services et les clients
I Routeur pour les appels de services et pour les evenements
I Decodeur, encodeur pour l’interoperabilite
Objets distribues
Un objet distribue est utilisable depuis un client distant
I d’un autre processus,
I d’un autre point du reseau
Developpement d’un objet distribue
Prise en compte dans l’objet de son contexte d’execution
Middleware explicite
Le developpeur est charge des appels aux services transversaux(transaction, securite) Prise en compte par l’environnement ducontexte d’execution
Middleware implicite
Contexte declaratif C’est l’environnement qui se charge de tout (lecontainer)
Middleware Explicite
1 t r a n s f e r ( Account account1 , Account account2 , l ong amount ) {2 // 1 : C a l l midd leware API to per fo rm a s e c u r i t y check3 // 2 : C a l l midd leware API to s t a r t a t r a n s a c t i o n4 // 3 : C a l l midd leware API to l oad rows from the database5 // 4 : Sub t r a c t the ba l ance from one account , add to the o th e r6 // 5 : C a l l midd leware API to s t o r e rows I n the da tabase7 // 6 : C a l l midd leware API to end the t r a n s a c t i o n8 }
Middleware Implicite
1 t r a n s f e r ( Account account1 , Account account2 , l ong amount ) {2 // 1 : Sub t r a c t the ba l ance from one account , add to the o th e r3 }
Les solutions existantes
I .NET (implantation Microsoft) Windows NT + DCOM +MSMQ (message queue) + MTS (transactions) + Wolfpack(clustering) + IIS (web server)+ MMC (administration etdeploiement)
I Sun J2EE (specification)
I OMG Corba (specification) et les composants Corba.
Deuxieme partie II
L’environnement J2EE
J2EE
Definit une architecture standard incluant
I Un modele de programmation (application multi-tiers, clientlegers)
I Une plate-forme (ensemble de specifications et de politiquesrequises)
I Un ensemble de tests de compatibilite
I Une implantation de reference
I Des patrons de conceptions (blueprints)
Architecture d’une appli J2EE
La plateforme J2EE
I EJB : definit la facon dont les composant doivent etre ecrit etle contrat qu’ils doivent respecter avec le serveur d’application
I RMI : communication inter procedes
I JNDI : service de nommage
I JDBC : connection avec les bases de donnees
I JTA : service de transaction
I JCA : service de connection
I JMS : service de messagerie
I JSP : servlet et Java Server Page adapte a la construction decomposant reseau
I JSF : framework de construction d’interfaces et de controleur(V et C de MVC)
La plateforme J2EE (suite)
I Java IDL : permet l’integration avec d’autres langages (enparticulier a travers CORBA)
I JavaMail
I JAX-WS : java API pour les Web Services.
I Web Services Metadata pour la plateforme Java. Facilite ledeveloppement et le deploiement de Web Services.
I JAXP : Java API pour le parsing XML
I JAXB : Java API for XML Binding (transformation dedocument XML en objets)
JNDI
Java naming and directory interface
I Permet d’acceder a des systemes de repertoires
I Permet d’acceder a des services ou a des objets enconnaissant uniquement un nom
JDBC
Java Database Connectivity
I API pour acceder a des bases de donnees relationnelles
I Driver pour la plupart des SGBD majeurs (oracle, sybase,mysql, mssql,...)
I Permet de porter une application d’un SGBD a un autre
JTA
Java Transaction ServiceInterface standard de gestion de transactions
JMS
Java Messaging Service
I Permet de faire communiquer des applications par envois demessages
I Interface standard permettant l’acces a differents MessageOriented Middleware (IBM MQSeries, MSMQ)
I Utile pour des interaction asynchrones
Java Servlet
I Utilises pour etendre les fonctionnalites d’un serveur Web
I Les servlets sont des composants executables dans un servletcontainer (Tomcat, Jetty)
I Equivalent a des scripts CGI (Perl, sh) mais en Java
JSP
Java Server Pages
I JSP scripts peuvent etre inclus dans des pages Web
I Scripts executes du cote serveurs (compiles sous forme deservlets)
I Simplification de l’ecriture de page Web
I equivalent a PHP pour Java (hum...)
JSF
Java Server Faces
I Framework pour le developpement d’applis Web
I Modele de composants et API pour les developper
I Tags specialises pour utiliser les composants dans une pageJSP et les faire communiquer avec les objets serveur.
I Modele d’evenements adaptes a l’environnement Web
Java IDL
Implantation par Sun de l’interface CORBA Permetl’interoperabilite avec des applications ecrites dans d’autreslangages
Java Mail
I Permet l’envoi de courrier electronique de facon independantede la plate-forme utilisee
I Permet l’acces a des serveurs de mail selon differentsprotocoles (pop, imap)
I Interface standardisee pour la gestion de boites aux lettres etde messages sous differents formats (gestion des multi partmime message avec JAF)
J2EE CA
Permet l’acces aux EIS depuis une plate-forme J2EE Une appliJ2EE doit pouvoir interfacer les systemes d’information existant(mainframe, ERP systems ou autres)
JAAS
Java Authentication and Authorization Service
I Fournit des services d’authentification et de securite
I Permet une specification declarative des moyens d’autorisationet de gestion des droits d’acces.
JAX-WS
Java API for WML Web Services
I Permet l’appel de services web depuis un client Java
I Mapping WSDL to Java et Java to WSDL
I Binding SOAP et HTTP
JAXB
Java Architecture for XML Binding
I Fournit les services permettant de lier des objets Java a leurrepresentation XML
I transformation Java XML Java
Les technologies
Conclusion
I J2EE est un framework complet
I Ensemble de services pour applications distribuees
I Complique a maitriser entierement
I Standard
JEE 5
Autres Solutions
I Utilisation de container generique
I Composition de services middleware
SolutionsSpring Jboss AS Hibernate