Programmation d`applications distribuées

publicité
Programmation d’applications distribuées
François Charoy
Université Henri Poincaré
8 octobre 2007
Première partie I
Développement d’applications distribuées
Objectifs du cours
I
Comprendre ce qu’est une application distribuée.
I
Comprendre la problématique de leur développement.
I
Apprendre les bases de leur développement dans un
environnement JEE
I
Apprendre à les concevoir
Problème
Construire des applications pour entreprises
I
Sures
I
Sécurisées
I
Distribuées
I
Supportant la montée en charge (scalable)
I
Disponibles
I
Favorisant la réutilisation
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 systèmes hétérogènes
I
Grand nombre de transactions (high throughtput)
I
Evolutives
Les questions à résoudre
I
Les invocations de méthodes : connection d’un client à un
serveur et appels de méthodes distances
I
L’intégration avec le back-end : Il faut écrire du code pour
accéder aux bases de données et aux systèmes d’information
existant
I
Le cycle de vie des objets : La vie des objets (création,
destruction) doit être gérée par le serveur
I
Les transactions : Que faire quand deux clients accèdent aux
mêmes données. et si un client crash ?
I
L’audit et les traces : Si quelque chose se passe mal, comment
peut on savoir ce qui s’est effectivement passé.
I
Le redéploiement : Comment mettre à jour une application
quand le serveur est en production ?
Les questions à résoudre (2)
I
Les arrêts du serveurs : Comment s’assurer d’un arrêt propre
des serveurs quand c’est nécessaire ?
I
Les threads : Le serveur doit pouvoir gérer les requêtes de
plusieurs clients simultanément
I
La gestion des messages : Certaines requêtes peuvent être
envoyées sous forme de messages (faible couplage)
I
La transparence des défaillances/clustering : Si un serveur
crash, les requêtes d’un client doivent être reroutées vers un
autres serveurs. Quel temps d’indisponibilité est acceptable ?
I
L’équilibrage de la charge : les requêtes des clients doivent
être dirigées vers le serveur le moins chargé.
Les questions à résoudre (3)
I
La gestion des ressources : Le serveur doit permettre le
partage des ressources entre les clients (connections aux bases
de données, objets du serveur)
I
La sécurité : le serveur doit être à l’abri des accès interdits ou
par des personnes n’ayant les autorisations nécessaires
I
La gestion des caches
I
Et encore plein d’autres trucs
RAS
Sureté (Reliability)
Probabilité qu’un système fonctionne à t+1 s’il fonctionnait à
l’instant t En clair, plus le système est fiable plus il est Sure
Disponibilité (Availability)
Pourcentage du temps pendant lequel un système est disponible
S’exprime en nombre de 9 (99, 99,9 ... 99,999)
Serviceability
Facilité avec laquelle la maintenance corrective et préventive peut
s’effectuer. Une plus grande serviceability améliore en général la
disponibilité
Passage à l’échelle
Mon système marche quand je suis tout seul
Marche-t-il encore pour 2 clients, 100 clients, 1000000 de clients
Quel est le coût pour augmenter la charge acceptable par mon
système
Ajout de machines, Mise à jour des machines, Modification du
code,
Middleware ou intergiciel
Definition
In a distributed computing system, middleware is defined as the
software layer that lies between the operating system and the
applications on each site of the system.
Le Middleware
Composants ou systèmes permettant de rendre transparent les
problèmes de distribution
I
Transparence de l’hétérogénéité
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 distribuées
I
Transparence de la sécurité
I
Transparence de la réplication des services
Comment faire ?
Utiliser un serveur d’application
I
Prise en charge des aspects middleware par un système
spécialisé
I
Utiliser une architecture distribuée
I
Fournit une solution aux différents problèmes précédents
Plusieurs tiers
I
Les clients (front end)
I
Les sources de données (back end)
I
Un ou plusieurs tiers entre eux pour
I
Implanter les nouveaux services
I
Intégrer les différentes sources de données
I
Masquer la complexité de l’entreprise aux clients
Architecture Multi Tiers
Architecture par Composants
Un composant respecte des règles d’écriture pour pouvoir
s’exécuter dans un container
Par 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 orientée service (SOA)
Un service ?
I
Un service est un ensemble de composants fournissant des
fonctions métier 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 dans
une architecture orientée service
I
Souvent un service est développé à partir de composants.
Web Services
Un moyen de mettre en oeuvre une SOA
I
XML technologies : SOAP, WSDL, WS-*
I
Protocole pour échanger des informations dans un réseau
distribué - RPC, HTTP, SMTP...
I
WSDL Web Service Description Language. XML pour décrire
l’interface des services
I
Neutralité par rapport aux langages et aux protocoles
Réutilisabilité des services
Composer des services
I
construire des services simples et réutilisables
I
composer les services avec un couplage faible
I
exemple : vérification 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 évênements
I
Décodeur, encodeur pour l’interopérabilité
Objets distribués
Un objet distribué est utilisable depuis un client distant
I
d’un autre processus,
I
d’un autre point du réseau
Développement d’un objet distribué
Prise en compte dans l’objet de son contexte d’exécution
Middleware explicite
Le développeur est chargé des appels aux services transversaux
(transaction, sécurité) Prise en compte par l’environnement du
contexte d’exécution
Middleware implicite
Contexte déclaratif C’est l’environnement qui se charge de tout (le
container)
Middleware Explicite
1
2
3
4
5
6
7
8
t r a n s f e r ( Acco unt a c c o u n t 1 , Account a c c o u n t 2 , l o n g amount ) {
// 1 : C a l l m i d d l e w a r e API t o p e r f o r m a s e c u r i t y c h e c k
// 2 : C a l l m i d d l e w a r e API t o s t a r t a t r a n s a c t i o n
// 3 : C a l l m i d d l e w a r e API t o l o a d r o w s from t h e d a t a b a s e
// 4 : S u b t r a c t t h e b a l a n c e from one a c c o u n t , add t o t h e o t h e r
// 5 : C a l l m i d d l e w a r e API t o s t o r e r o w s I n t h e d a t a b a s e
// 6 : C a l l m i d d l e w a r e API t o end t h e t r a n s a c t i o n
}
Middleware Implicite
1
2
3
t r a n s f e r ( Acco unt a c c o u n t 1 , Account a c c o u n t 2 , l o n g amount ) {
// 1 : S u b t r a c t t h e b a l a n c e from one a c c o u n t , add t o t h e o t h e r
}
Les solutions existantes
I
.NET (implantation Microsoft) Windows NT + DCOM +
MSMQ (message queue) + MTS (transactions) + Wolfpack
(clustering) + IIS (web server)+ MMC (administration et
déploiement)
I
Sun J2EE (spécification)
I
OMG Corba (specification) et les composants Corba.
Deuxième partie II
L’environnement J2EE
J2EE
Définit une architecture standard incluant
I
Un modèle de programmation (application multi-tiers, client
légers)
I
Une plate-forme (ensemble de spécifications et de politiques
requises)
I
Un ensemble de tests de compatibilité
I
Une implantation de référence
I
Des patrons de conceptions (blueprints)
Architecture d’une appli J2EE
La plateforme J2EE
I
EJB : définit la façon dont les composant doivent être écrit et
le contrat qu’ils doivent respecter avec le serveur d’application
I
RMI : communication inter procédés
I
JNDI : service de nommage
I
JDBC : connection avec les bases de données
I
JTA : service de transaction
I
JCA : service de connection
I
JMS : service de messagerie
I
JSP : servlet et Java Server Page adapté à la construction de
composant réseau
I
JSF : framework de construction d’interfaces et de controleur
(V et C de MVC)
La plateforme J2EE (suite)
I
Java IDL : permet l’intégration avec d’autres langages (en
particulier à travers CORBA)
I
JavaMail
I
JAX-WS : java API pour les Web Services.
I
Web Services Metadata pour la plateforme Java. Facilite le
développement et le déploiement de Web Services.
I
JAXP : Java API pour le parsing XML
I
JAXB : Java API for XML Binding (transformation de
document XML en objets)
JNDI
Java naming and directory interface
I
Permet d’accéder à des systèmes de répertoires
I
Permet d’accéder à des services ou à des objets en
connaissant uniquement un nom
JDBC
Java Database Connectivity
I
API pour accéder à des bases de données relationnelles
I
Driver pour la plupart des SGBD majeurs (oracle, sybase,
mysql, mssql,...)
I
Permet de porter une application d’un SGBD à un autre
JTA
Java Transaction Service
Interface standard de gestion de transactions
JMS
Java Messaging Service
I
Permet de faire communiquer des applications par envois de
messages
I
Interface standard permettant l’accès à différents Message
Oriented Middleware (IBM MQSeries, MSMQ)
I
Utile pour des interaction asynchrones
Java Servlet
I
Utilisés pour étendre les fonctionnalités d’un serveur Web
I
Les servlets sont des composants exécutables dans un servlet
container (Tomcat, Jetty)
I
Equivalent à des scripts CGI (Perl, sh) mais en Java
JSP
Java Server Pages
I
JSP scripts peuvent être inclus dans des pages Web
I
Scripts exécutés du coté serveurs (compilés sous forme de
servlets)
I
Simplification de l’écriture de page Web
I
équivalent à PHP pour Java (hum...)
JSF
Java Server Faces
I
Framework pour le développement d’applis Web
I
Modèle de composants et API pour les développer
I
Tags spécialisés pour utiliser les composants dans une page
JSP et les faire communiquer avec les objets serveur.
I
Modèle d’évênements adaptés à l’environnement Web
Java IDL
Implantation par Sun de l’interface CORBA Permet
l’intéropérabilité avec des applications écrites dans d’autres
langages
Java Mail
I
Permet l’envoi de courrier électronique de façon indépendante
de la plate-forme utilisée
I
Permet l’accès à des serveurs de mail selon différents
protocoles (pop, imap)
I
Interface standardisée pour la gestion de boites aux lettres et
de messages sous différents formats (gestion des multi part
mime message avec JAF)
J2EE CA
Permet l’accès aux EIS depuis une plate-forme J2EE Une appli
J2EE doit pouvoir interfacer les systèmes d’information existant
(mainframe, ERP systems ou autres)
JAAS
Java Authentication and Authorization Service
I
Fournit des services d’authentification et de sécurité
I
Permet une spécification déclarative des moyens d’autorisation
et de gestion des droits d’accès.
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 à leur
représentation XML
I
transformation Java XML Java
Les technologies
Conclusion
I
J2EE est un framework complet
I
Ensemble de services pour applications distribuées
I
Compliqué à maitriser entièrement
I
Standard
JEE 5
Autres Solutions
I
Utilisation de container générique
I
Composition de services middleware
Solutions
Spring Jboss AS Hibernate
Téléchargement