Programmation d’applications...

Post on 08-Jul-2020

4 views 0 download

Transcript of Programmation d’applications...

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