Architecture des systèmes d'information modernes Khaled BEN DRISS Senior Manager – NetProgress Ingénieur de l'Ecole Centrale de Lyon Docteur de l’Université Paris VI (Pierre et Marie Curie)
khaled.bendriss@net-progress.net
Objectifs : 1) Présenter les enjeux des architectures "web" 2) positionner les technologies des serveurs d'applications 3) acquérir les éléments de comparaison des SA selon les besoins
Introduction La
distribution et l’accès à l ’information dans une entreprise sont des facteurs fondamentaux de succès. L’information est par nature distribuée, évolutive et variée => Nouvelles architectures informatiques.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Technologie
RĂŠseaux globaux
Ordinateur personnel
1990
Terminal
1980 Mainframe
1970
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Activités Travail coopératif
Informatique personnelle
1990 Transactionnel
1980
Batchs
1970
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Services offerts Informations à la place de travail
1990
Industrialisation
1980 Gestion intégrée
1970 Automatisation des processus administratifs khaled.bendriss@gmail.com
Architecture des systèmes d'information
Enjeux 1990 Vivant Objectif
1980
Mécanique Cahier des charges
Réactif
Prévisible
1970
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Besoin d’automatisation 1990
1980
1970
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Ressources humaines 1990
1980
1970
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les clefs du succès Intégration Présentation Personnalisation Intelligence Rapidité Déploiement Performance Sécurité Supervision Administration
56% 25% 50% 60% 79% 70%
Source IDC “eCommerce Survey” khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les Technologies eBusiness Présentation Passerelle WAP SSL/VPN Proxy/Firewall
Serveur(s) de présentation Portails spécialisés
Annuaire
Authentification Validation
LDAP
Serveur(s) d’applications Applications B2E, B2B, B2C, C2C, ASP
Services à valeur ajoutée
Connecteurs stansdards/spécifiques
Nommage/Sessions transactions/Charge Composants Logique d’Accès Données/Process Locales/Distantes
E.A.I Collaboratif
Middleware Synchrone Messages
OS390 – UNIX – NT Patrimoine métier
Spécifique Packages Services
khaled.bendriss@gmail.com
Logique Métier Bibliothèques Packages B2B
E.A.I Collaboratif
Architecture des systèmes d'information
Les Technologies eBusiness Présentation Passerelle WAP
Opérations Réseaux Systèmes Applications Bases de données Serveurs WEB Médias
SSL/VPN Proxy/Firewall
Serveur(s) de présentation Portails spécialisés
Authentification Validation
Performance
Serveur(s) d’applications Applications B2E, B2B, B2C, C2C, ASP
Services à valeur ajoutée
Connecteurs stansdards/spécifiques
Nommage/Sessions transactions/Charge Composants Logique d’Accès Données/Process Locales/Distantes
E.A.I Collaboratif
Middleware Synchrone Messages
OS390 – UNIX – NT Patrimoine métier
Spécifique Packages Services
khaled.bendriss@gmail.com
Signature unique (SSO) Centre d’Appel
Vues métier…
Architecture des systèmes d'information
Les Solutions eBusiness Portails spécialisés
Applications Services B2E, B2B, B2C, à Valeur C2C, ASP Ajoutée
Sécuriser Personnaliser Administrer
Plate-Forme eBusiness Applications traditionnelles
khaled.bendriss@gmail.com
Intégrer Applications
Architecture des systèmes d'information
Récapitulatif des besoins Echange de données entre applications hétérogènes manipulant des données ( au format propriétaire). Répartition des données sur des sites géographique distants. Distribution des traitements effectués sur les données réparties. Interopérabilité des plates-formes de développement. Portabilité des applications. Gestion de la cohérence permanente des données. Gestion des accès concurrentiels. Persistance des données. Intégration des applications et des BDs existantes (legacy systems). Ouverture. Sécurité. khaled.bendriss@gmail.com
Architecture des systèmes d'information
Réponses aux attentes du marché
Rapidité / Vitesse
Flexibilité
Montée en charge
Disponibilité totale
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Environnement d’aujourd’hui Client/Serveur Réseaux
Mainframe
NetProgress
Internet et Web
khaled.bendriss@gmail.com
NetProgress
Architecture des systèmes d'information
Architectures informatiques Internet Explorer, Netscape
Windows, Mac, Unix, Linux
PC Client
Client Web
Web Plate-forme Serveur
Plate-forme Base de Données
SQL Server, Oracle, Sybase, DB/2, IMS, AS/400, etc.
UNIX
khaled.bendriss@gmail.com
Windows NT Server
IBM AS/400
Site central IBM
Architecture des systèmes d'information
Architectures informatiques Types et contraintes
Serveur Internet
Web Client-Serveur Partage de fichiers
khaled.bendriss@gmail.com
DistribuĂŠe
Architecture des systèmes d'information
Evolution de l'architecture Centralisé kkwkj kkwkj kkwkj kkwkj kkwkj kkwkj kkwkj
Client-serveur deux niveaux
Client-serveur trois niveaux
Interface utilisateur Services d'entreprise
Interface utilisateur
aaaawwwww aaaawwwww aaaawwwww aaaawwwww aaaawwwww aaaawwwww aaaawwwww
Services d'entreprise Services d'entreprise
Interface utilisateur Services d'entreprise Services de données
Services de données
khaled.bendriss@gmail.com
Services de données Architecture des systèmes d'information
Technologie centralisée
Points forts o o
kkwkj aaaawwwww kkwkj aaaawwwww kkwkj aaaawwwww kkwkj aaaawwwww kkwkj aaaawwwww kkwkj aaaawwwww kkwkj aaaawwwww
o
Contrôle et maintenance centralisés Optimisation de l'utilisation de l'unité centrale Méthode simple de développement d'application
Points faibles o o o
Optimise l'unité centrale, mais pas la productivité des clients Pas flexible Pas d'accès aux données pour les clients
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Client/Serveur traditionnel
Architectures à 2 niveaux o
Le serveur possède les données
o
Le client possède le code
o
La logique de l’application n’est pas centralisée
o
Il y a une connexion Base de Données par client
App
App App
App
Architecture appropriée si les clients sont peu nombreux khaled.bendriss@gmail.com
Architecture des systèmes d'information
Client-serveur deux niveaux
Points forts o o
App
Interface utilisateur graphique Intégration avec les applications bureautiques
App App
App
Points faibles o o o
Une grande partie des services d'entreprise du côté client Seuls les services d'entreprise sur le serveur sont réutilisables par les clients Le code des services d'entreprise est lié à une seule base de données
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Architecture à trois niveaux classique
Le Coté Serveur d'application khaled.bendriss@gmail.com
Architecture des systèmes d'information
Architecture à trois niveaux web
Le Coté Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers client
Le CotĂŠ Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers client Un web browser HTTP, HTTPS/HTML, XML UnPDA HTTP, HTTPS/WML, XML Un client lourd (fat client), applets, apps IIOP / RMI, CORBA JRMP / RMI autres… Un Web-service HTTP, HTTPS/ebXML, SOAP(XML)
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers Web
Le CotĂŠ Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers Web : rôle reçoit les requêtes http des clients et renvois les réponses permet la séparation entre présentation (spécifique au client) et "business logic" génère du contenu dynamiquement transforme des requêtes HTTP dans un format compris par l’application contient la logique du flot de présentation identifie la session de l’utilisateur supporte plusieurs types de clients
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers Web : architecture
Le CotĂŠ Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers Web : technologie CGI / FastCGI (Common Gateway Interface) Peut-être écrit en JAVA, C, C++, Perl... ASP (Active Server Pages) Scripting interprété dans des pages HTML (Microsoft) Java Servlets nécessite un conteneur Java JSP (Java Server Pages) Scripting dans des pages HTML compilé en Servlet PHP, Python JavaScript (ServerSide)
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers ressource
Le CotĂŠ Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
EIS : Entreprise Information Systems Base de données (databases) JDO, SQL/J, JDBC, ADO.NET Anciens systèmes (legacy systems) J2EE Connector, protocoles propriétaires ERP(Enterprise Resource Planning) J2EE Connector, protocoles propriétaires EAI(Enterprise Application Integration) J2EE Connector, protocoles propriétaires
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le tiers Milieu
Le Coté Serveur d'application
Conteneur de composants Doit permettre de réaliser des applications distribuées
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Applications distribuées Objectifs de Conception Maximisez l’application… • • • • •
Autonomie Fiabilité Disponibilité Evolutivité Interopérabilité
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Autonomie Aptitude d’une application à fonctionner comme une entité indépendante •
Les applications autonomes contrôlent totalement leurs ressources critiques Ressources Critiques – ressources exigées par une application pour fonctionner sûrement comme une entité indépendante –
Ex : Connexion bases de données, transactions, connexions “MainFrame”, etc...
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Applications distribuées Objectifs de Conception Maximisez l’application… • • • • •
Autonomie Fiabilité Disponibilité Evolutivité Interopérabilité
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Fiabilité
Fiabilité – La capacité d’une application à fournir des résultats précis et sûres – Exemple : Virement = Crédit + Débit Si une erreur survient après le crédit et avant le débit…
Une application n’est pas utile si ses résultats ne sont pas fiables !
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Réaliser la Fiabilité Assurer les transactions Caractéristiques : ACID
– Tout ou Rien (Atomicité) – Les Opérations ne violeront pas l’intégrité de la ressource (Consistence) – Les états de transitions paraissent s’exécuter en série, l’un après l’autre (Isolé) – Les résultats des états de transitions récupérables dans le cas d’une défaillance système (Durable) khaled.bendriss@gmail.com
Architecture des systèmes d'information
Applications distribuées Objectifs de Conception Maximisez l’application… • • • • •
Autonomie Fiabilité Disponibilité Evolutivité Interopérabilité
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Disponibilité Disponibilité
– La quantité de temps où une application est capable de répondre aux demandes Une application n’est pas utile si elle n’est pas disponible pour répondre aux demandes
99.999 = $$$? khaled.bendriss@gmail.com
Architecture des systèmes d'information
Disponibilité La
disponibilité d’une application dépend de nombreux facteurs – Disponibilité Hardware Disques durs, cartes réseaux, contrôleurs, etc... – Disponibilité logicielle SGBD, Serveurs Web, etc... – Disponibilité réseau
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Applications distribuées Objectifs de Conception Maximisez l’application… • • • • •
Autonomie Fiabilité Disponibilité Evolutivité Interopérabilité
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Evolutivité Evolutivité
– Avec une augmentation de la charge de travail, les performances ne donnent pas de dégradation significative L’évolutivité permet à une application de supporter de 10 à 10K utilisateurs –Une application est évolutive en lui ajoutant ou supprimant des ressources selon les besoins khaled.bendriss@gmail.com
Architecture des systèmes d'information
Evolutivité L’évolutivité
augmente avec l’augmentation du taux de transaction par seconde (en tps) augmente Le taux de transaction par seconde augmente en réduisant le temps de transaction Temps de transaction = Acquisition de la ressource + Temps d’utilisation de la ressource khaled.bendriss@gmail.com
Architecture des systèmes d'information
Réaliser l’Evolutivité
Deux approches complémentaires
Hardware par des serveurs plus puissants
Software par serveurs en clusters
+ khaled.bendriss@gmail.com
+
+…
Architecture des systèmes d'information
Applications distribuées Objectifs de Conception Maximisez l’application… • • • • •
Autonomie Fiabilité Disponibilité Evolutivité Interopérabilité
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Interopérabilité
Interopérabilité – faculté des applications d’utiliser des – applications, – des données – ou des ressources sur d’autres plateformes
L’entreprise est un environnement hétérogènes – Les Applications, les données, les ressources résident sur d’autres plateformes NE seront PAS déplacées sur une plateforme commune Doivent être utilisées là où elles sont !
khaled.bendriss@gmail.com
Architecture des systèmes d'information
D'où on déduit les grandes fonctions du serveur d'applications ?
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le support des plates-formes une qualité première attendue chez ce type d'outil. désolidariser la technologie applicative de la machine hébergeant l'application le serveur d'applications doit implémenter un ensemble d'API propre à chacun des nombreux systèmes d'exploitation. Exemple : ouverture, écriture, lecture ou suppression de fichiers, le serveur d'applications doit être en mesure de les exécuter indépendamment de la plate-forme utilisée.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
RĂŠpartition de charges
khaled.bendriss@gmail.com
Architecture des systèmes d'information
La disponibilité Fonctionnalité
de reprise sur incident. En cas de " plantage " au niveau applicatif ou serveur, la requête utilisateur est redirigée vers un serveur disponible de manière transparente. La tolérance aux pannes. Le S.A. doit prévoir la sauvegarde du contexte utilisateur (réplication des sessions utilisateur sur une autre machine). Les S.A. les plus avancés automatisent la gestion de reprise sur incident au niveau session. khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le pooling de connexions un pool de connexions : démarrer un nombre prédéfini de connexions vers un SGBDR. Le serveur d'applications dirige ensuite les demandes utilisateur en répartissant les différentes requêtes sur les connexions disponibles. Ceci permet d'avoir la maîtrise du nombre de connexions maximales ouvertes et d'éviter le goulet d'étranglement à ce niveau. Même raisonnement pour les autres ressources (Objets, file d'attente, …)
khaled.bendriss@gmail.com
Architecture des systèmes d'information
L'ouverture vers l'existant, le respect des standards les entreprises possèdent généralement un existant auquel il faut s'interfacer. l'ouverture vers les protocoles de communication, les principaux ERP et les mainframes est indispensable pour ne pas limiter fonctionnellement l'application. l'évolutivité et la pérennité de l'application dépendent de la capacité du S.A. à respecter les standards (Java, XML, …) capacité du S.A. à intégrer les nouvelles technologies.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
La gestion de contexte Conserver, le temps d'une session, les données propres à l'utilisateur Le serveur d'applications doit gérer automatiquement l'identification de l'utilisateur (cookie, l'URL long, …). le serveur d'applications crée un espace mémoire dédié à chaque utilisateur (généralement dans un objet session) Autres fonctions : définition d'un time-out, lancement d'un événement en fin de session, etc.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
La sécurité Capacité à déployer des applications utilisant à la fois HTTP et HTTPS Gestion de l'authentification en relation avec un LDAP, une SGBDR ou tout autre source de données permettant d'identifier les utilisateurs
khaled.bendriss@gmail.com
Architecture des systèmes d'information
L'administration
un outil d'administration (interface web ou console) pour le réglage du SA. Cas multi-serveurs : paramétrage du répartiteur de charges et choix de l'algorithme de répartition. Disponibilité applicative : choisir la solution de sauvegarde de la session. Pooling de connexions : dimensionner l'accès à la base de données (nombre de connexions au démarrage, le nombre maximum de connexions ouvertes en tout, etc.) Cas de la technologie objet : opérer le déploiement des composants dans le serveur d'applications. un outil de statistique est toujours une fonctionnalité intéressante.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
La productivité
En phase de développement, la productivité est liée à la qualité de l'interface entre l'EDI et le S.A. Présence d'un éditeur HTML WYSIWYG pour la génération des interfaces graphiques. Assistants pour les SGBDR et la saisie de requêtes, la saisie de jointures, la sélection de procédures stockées. l'intégration d'un éditeur SQL dans l'EDI pour tester les requêtes en temps réel. Fonctionnalités de débogage (du pas à pas sur le code, des points d'arrêt, d'entrer ou non à l'intérieur des fonctions / méthodes exécutées, d'interroger et/ou de modifier les valeurs des variables ) khaled.bendriss@gmail.com
Architecture des systèmes d'information
Qu'est-ce qu'un serveur d'applications ?
Khaled.bendriss@net-progress.net
Le serveur d'applications comme réponse à un besoin
Le Coté Serveur d'application
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le serveur d'applications comme réponse à un besoin Selon
le cas :
– un serveur d'objets, – un moteur d'exécution pour le Web, – un outil de développement, d'administration, de déploiement et d'exécution, – un serveur de traitements, – une solution d'e-commerce, etc Essai
:
– "un environnement de l'architecture qui fournit les briques techniques nécessaires à l'exécution d'applications transactionnelles web". khaled.bendriss@gmail.com
Architecture des systèmes d'information
fonctionnalités attendues s'interfacer avec un serveur HTTP fournir un moteur d'exécution des traitements s'ouvrir vers l'existant de l'entreprise répondre aux contraintes induites par les architectures centralisées permettre l'ajout de briques techniques et métier
Et de manière plus complète, le serveur d'applications doit (idéalement) s'intégrer avec un outil de développement et de déploiement pour offrir une bonne productivité s'interfacer avec un outil d'administration khaled.bendriss@gmail.com
Architecture des systèmes d'information
A quoi sert un serveur d'applications ? Architecture web statique
Architecture web dynamique
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Elaboration de pages dynamiques
Serveur d'application de type – Scripting – Objet – Orienté objet
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Serveurs d'applications de type scripting Fichier source = balises HTML + langage de scripting client Exemple : PHP, ASP
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Serveurs d'applications de type objet La
partie du moteur exécutif chargée d'assembler les pages ne repose pas sur un seul fichier contenant les éléments de présentation et les codes de traitements. les traitements fonctionnels sont séparés des traitements d'interface atouts : modélisation objet, + souplesse dans la répartition et la gestion des traitements. Exemple : EJB khaled.bendriss@gmail.com
Architecture des systèmes d'information
Serveurs d'applications de type orienté objet se
positionnent à cheval entre les deux autres catégories. ils utilisent des langages objet pour faire du scripting. Exemple : applications réalisées en JSP et servlets.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Autres classifications Le
marché des serveurs d'application peut se décomposer en 3 catégories: Les solutions basées sur J2EE; Les solutions non basées sur J2EE (Cold Fusion, PHP, Perl, …); Et la solution Microsoft (ASP/COM et maintenant .NET avec ASP.Net, C#, etc).
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Un système d'information "web" moderne doit reposer sur une infrastructures de composants distribués
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Nouvelles Infrastructures Technologiques : Impacts majeurs sur les systèmes informatiques
Trois éléments majeurs – Du bloc au système – De la machine au réseau – Des procédures/données aux objets/composants
Une forte tendance à la standardisation des solutions – Passage d’une multitude de solutions propriétaires à un nombre limité de standards de fait.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Du bloc au système
Un mouvement de fond dans le développement des applications
Une clé de la réussite du développement est de concevoir l’application comme une organisation de composants
khaled.bendriss@gmail.com
Architecture des systèmes d'information
De la machine au réseau – Le réseau est au cœur des systèmes d’information – Convergence forte vers une standardisation et une banalisation des couches basses – L’infrastructure middleware vise à masquer la tuyauterie. – La Plate-forme Java est la meilleure illustration de ce passage de la machine au réseau
The network is the computer khaled.bendriss@gmail.com
Architecture des systèmes d'information
Objets : une rupture dans le modèle logiciel – Le modèle logiciel s’émancipe du modèle physique de Von Neuman Traitements
Objet
Traitements Traitements
Objet Traitements
Traitements
Objet
Objet Objet
Données
Objet
– Vers le SOA (Service Oriented Architecture) khaled.bendriss@gmail.com
Architecture des systèmes d'information
Objets : Encapsulation pour maîtriser la complexité Partie publique (interface)
Partie privée
Interfaces
Réalisation
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Une évolution inéluctable
Un gros exécutable
Bibliothèques partagées
Classes Partagées
Code Mobile
SOA khaled.bendriss@gmail.com
Architecture des systèmes d'information
Composants
Un modèle de solution dominant : Système de composants distribués
Convergence de l’ensemble de l’industrie informatique : – Les deux infrastructures dominantes (Plate-formes Java et .Net) reposent sur ce même modèle. – Pas de modèle alternatif qui se profile à l’horizon.
Deux constituants
Contrat Externe
– COMPOSANTS – DISTRIBUTION
Serveur de Composants Container
Client
Composant Client
Contrat Interne
Client
Infrastructure/Middleware
Service
khaled.bendriss@gmail.com
Service
Service
Architecture des systèmes d'information
Un composant est plus qu’un objet
Les composants reprennent les caractéristiques des objets auxquels ils rajoutent un ensemble de propriétés : – Niveau de granularité plus important que les objets. – Procurent des services de plus haut niveau réalisés par une collaboration d’objets internes. – Capsule qui sépare complètement la spécification des services (interfaces) de leur réalisation par des collaboration internes. – Entité exécutable (dans une structure d’accueil) qui possède son propre fonctionnement autonome et capable de gérer ses propres ressources. composant objet
objet
objet objet khaled.bendriss@gmail.com
objet Architecture des systèmes d'information
Composants DistribuĂŠs
Distribution
Un objectif – Pouvoir utiliser des services (opérations) sur des objets distants (sur une autre machine) en faisant abstraction de toute la «plomberie» nécessaire (protocole réseau de bas niveau, ...).
Un moyen – Un bus logiciel : l’ORB (Object Request Browser)
khaled.bendriss@gmail.com
Architecture des systèmes d'information
ORB : les forces en présence – L’ORB constitue le noyau de base des infrastructures techniques d’objets distribués. – Trois technologies dominantes : CORBA IIOP (Internet Inter-ORB Protocol ), spécification de l ’OMG. Java RMI (Remote Method Invocation). Microsoft .Net (successeur de DCOM). – Reposent fondamentalement sur le même modèle (Bus à Objets). – Processus de convergence Java-CORBA (RMI-IIOP, EJB, Corba Components). – Deux camps en présence : Java-CORBA (Serveurs d’applications Sun, IBM, Oracle, Sybase, Borland, …). Microsoft .Net khaled.bendriss@gmail.com
Architecture des systèmes d'information
Serveurs d’application
On peut voir un serveur d’application comme l’infrastructure technique qui fédère les différentes composantes technologiques en un tout cohérent. C’est principalement un serveur de composants qui procure les containers et les services techniques nécessaires à l’exécution de ces composants. – implémente le(s) modèle(s) de composants, – fournit les services de middleware (ORB, nommage, transaction, sécurité, message queuing, persistance, etc.), – permet la connexion aux autres ressources du SI, – optimise les performances et permet la montée en charge.
Prend en charge la partie Web Server (Internet, Intranet, Extranet). khaled.bendriss@gmail.com
Architecture des systèmes d'information
Un modèle d’architecture multi-niveaux
Présentation
khaled.bendriss@gmail.com
Services Métiers
Informations Persistantes
Architecture des systèmes d'information
Le modèle dominant : quatre niveaux fondamentaux Navigateur
Navigateur
Serveur Web
Services Métiers
Informations Persistantes
Navigateur
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Une architecture en 5 couches Présentation Application
Interfaces utilisateur Fédération de services procurant les fonctionnalités attendues
Services
logique métier, manière particulière d’utiliser les objets métier
Domaine
Objets Métier avec leurs propriétés et leur comportement intrinsèque
Persistance
khaled.bendriss@gmail.com
Mécanismes de stockage des informations persistantes (SGBD)
Architecture des systèmes d'information
Vers une Architecture Orientée Services (SOA) Présentation des activités métier
Présentation
Application 1
Application 2
Application 3
Applications par domaine métier (assemblage) Composants Métiers Services Techniques
Bus de Communication
ORB & MOM Connecteurs
SGBD
ERP
khaled.bendriss@gmail.com
Application
Autres ressources d’entreprise
Architecture des systèmes d'information
PrĂŠsentation des technologies J2EE
C’est d’abord une plate-forme Java !
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Trois composantes indissociables
Le langage Java
La machine virtuelle Java
Les APIs java L’intérêt de la plateforme Java repose sur la conjonction de ces trois éléments. Le tout est plus que la somme des parties.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Java : le langage
Un langage objet
Certaine synthèse de l’état de l’art en la matière
Retour d’expérience des langages précédents
Gestion Automatique de la mémoire
Typage fort
Dimension dynamique khaled.bendriss@gmail.com
Architecture des systèmes d'information
Java : la machine virtuelle
La machine virtuelle est un programme qui exécute une application Java. La langage Java n'est pas interprété. Le code Java est compilé en code intermédiaire (byte-code) indépendant de toute machine. Le byte code est chargé et exécuté (interprété/compilé) par la machine virtuelle qui fonctionne sur MV l'infrastructure d'accueil. Il n'y pas d'édition de liens, ce qui renforce la nature dynamique du langage.
khaled.bendriss@gmail.com
Source *.java
Compilateur javac Byte-Code *.class
Interpréteur SE Matériel
Architecture des systèmes d'information
J2EE : une version étendue aux applications d’entreprise
Spécification d’un modèle de composants distribués prenant en compte les différentes couches d’un système d’information d’entreprise (client, web, composants métier, persistance, connecteurs)
La J2EE est la spécification d’un serveur d’application
WebSphere (IBM), WebLogic (BEA), Sun One (Sun), Oracle 9iAs (Oracle), Jboss, etc. sont autant d’implémentations de la J2EE
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Architecture de la J2EE
khaled.bendriss@gmail.com
Architecture des systèmes d'information
J2EE 1.3 : les API (services) en 2001
JDBC 2.0 (Java DataBase Connectivity) RMI/IIOP 1.0 (Remote Method Invocation / Internet InterOrb Protocol) EJB 2.0 (Enterprise JavaBeans) Servlet 2.3 JSP 1.2(Java Server Pages) JMS 1.0 (Java Message Services) JNDI 1.2 (Java Naming and Directory Interface) JTA 1.0.1 (Java Transaction Services) JavaMail 1.1 JAF 1.0 (JavaBeans Activation Framework) JAAS 1.0 (Java Authorisation & authentication services) JCA 1.0 (J2EE Connector Architecture)
…J2EE 1.4 est arrivé khaled.bendriss@gmail.com
Architecture des systèmes d'information
J2EE : support des architectures multi-niveaux JDBC
Client HTML
SGBD
HTTP
RMI-IIOP
Serveur Web Client HTML/Java
Application Java
Serveur de Composants
ERP
HTTP
Existant
RMI-IIOP
Web Tier
Client Tier khaled.bendriss@gmail.com
Business Tier
Middle Tier
EIS Tier Architecture des systèmes d'information
Serveurs d'applications de type J2EE
khaled.bendriss@gmail.com
Architecture des systèmes d'information
J2EE vs .Net : un modèle architectural commun
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les composants de la partie Web
Deux constituantes principales – Les Servlets – Les Java Server Pages (JSP)
Ces composants sont déployés et exécutés dans un moteur de servlets/JSP
Assure le lien entre le monde HTTP et le monde Java
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les Servlets
Composants Java ayant pour responsabilité de – récupérer les requêtes HTTP de l’utilisateur, – invoquer les traitements applicatifs Java correspondants – construire la page HTML de réponse pour l’utilisateur Requête HTTP
Servlet
Container Web J2EE Réponse HTTP
Requête HTTP
Navigateur Web
Serveur Web Réponse HTTP
Pages Statiques
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Model d’accès des servlets Servlet
client
Serveur Web Servlet
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Avantages / Inconvénients Avantages
– Indépendance issue de la plate-forme java – Modèle de sécurité issu du serveur Web – Support dans la plupart des serveurs Web – Exploite toute l'API Java (+ protocoles) Mais
il faut
– Apprendre java
khaled.bendriss@gmail.com
Architecture des systèmes d'information
JSP : Java Server Pages Technologie
définie pour aider à l'écriture de pages Web Elle – génère une page vers le client – est portable (Write Once, Run EveryWhere) – mets en avant l'approche par composants – permet la mise en œuvre facile des sites dynamiques Equivalents
: ASP, PHP
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les JSP Séparent
la présentation du contenu Une page JSP contient – moules (squelettes) contenant le texte fixe – action contenues dans des directives et des scriplets Requête
Client
Servlet
Réponse Page JSP khaled.bendriss@gmail.com
Architecture des systèmes d'information
JDBC
JDBC (Java Database Connectivity) API permettant de travailler avec des bases de données relationnelles. Le code Java utilisant l'API JDBC est indépendant de la base elle même grâce à l'utilisation de drivers spécifiques fournis par les vendeurs. Bien sûr, les requêtes JDBC utilisées doivent être standards pour que l'ensemble reste portable.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
JNDI
JNDI (pour Java Naming and Directory Interface) est une API pour communiquer avec les services de nommage et d'annuaire en réseau. On peut ainsi y chercher des objets Java par un chemin ou des valeurs d'attributs. Il existe des ponts avec les principaux services d'annuaires (comme LDAP, NIS ou NDS) et avec les registry de RMI ou CORBA. JNDI est utilisé couramment dans la plateforme J2EE pour récupérer des objets par un nom symbolique
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les composants métiers
J2EE spécifie un modèle de composants pour le niveau métier : les EJB. Les EJB sont exécutés dans un container spécifique, distinct du container Web et qui n’est pas nécessairement hébergé par la même machine Tout serveur d’application certifié J2EE doit procurer les EJB La mise en œuvre des EJB n’est pas imposée Une application J2EE peut tout à fait n’utiliser que le moteur de JSP/Servlets Les EJB font l’objet d’un large débat souvent passionné Éviter tout dogmatisme en la matière et examiner les choses aussi objectivement que possible khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les Enterprise Java Bean (EJB)
Composants distribués transactionnels réutilisables Centrés sur la logique métier Objectif : permettre aux développeurs de se concentrer sur les aspects applicatifs métier en se libérant de la «plomberie» (sécurité, transaction, nommage, persistance, …) Home Interface
Client
EJB Object Interface
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les différents types d’EJB
EJB Sessions : composants non persistant associé à un seul client – Stateless (Sans état) – Statefull (Avec état)
EJB Entités : composants persistants partagés par plusieurs clients – La home Interface joue le rôle de factory (création, suppression, recherche) – L’object Interface procure les services métiers – Possède un identité explicite (Primary Key) – BMP = persistance gérée par le bean (programmé) – CMP = persistance gérée par le container (déclarée) – Les EJB CMP procure la notion de relation managée (1..1, 1..n, n..n)
EJB Message : composants gérant les messages asynchrones – Pas d’état – Basé sur JMS (Message Queuing) khaled.bendriss@gmail.com
Architecture des systèmes d'information
JMS
JMS (Java Message Service) introduit un modèle de messages entre composants (MOM : Messages Oriented Middleware ) Permet des communications asynchrones, fiable et indépendantes entre composants JMS est une API d'échange asynchrone de message ou d'évènements critiques entre applications. JMS permet maintenant de gérer les transactions et est utilisée pour la communication asynchrone entre EJBs.
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Autres APIs
JavaMail: Permet d'envoyer des emails. JAXP: Java API for XML Parsing est une API qui unifie les différentes implémentations de parsers XML JCA: Java Connector Architecture permet l'interconnexion d'une application J2EE avec un système d'information d'entreprise par la gestion de pools, des transactions et de la sécurité. JAAS: Java Authentication and Authorization Service
JSF : Les JavaServer Faces étendent les capacités des
JSP pour faciliter la création et la mise à jour d'objets au sein de l'interface (barre de navigation, etc.). JDO : (Java Data Objects) Un modèle de manipulation des données avec un mapping automatique (objet / Relationnel) khaled.bendriss@gmail.com
Architecture des systèmes d'information
Les Web Services
Un Objectif
Une architecture d’intégration qui permet à des utilisateurs et/ou des applications d’interagir dynamiquement sur le réseau au travers de technologies internet ouvertes khaled.bendriss@gmail.com
Architecture des systèmes d'information
Technologies ouvertes Tout Système
Toute information
Tout Matériel
Tout processus
Tout Utilisateur Annuaire Contenu
Page Jaunes (privées/publiques)
Systèmes internes
SGDB – R Partenaires/Clients/Fournisseurs (B2B) Applications Existantes Navigateur
Applications J2EE / .Net
khaled.bendriss@gmail.com
Dispositif mobile
Architecture des systèmes d'information
Web Services : les mécanismes de base Description du Service
Service Registry
Publier
Rechercher
(WSDL + UDDI)
(WSDL + UDDI)
Utiliser Service Requestor Description du Service
khaled.bendriss@gmail.com
(WSDL + SOAP)
Service Provider
Service Description du Service
Architecture des systèmes d'information
Web Services : on en est au début
Nécessitent pour être réellement opérationnels une définition complète des services
Contrat Métier
En cours
WorkFlow du Service
En cours
Publication/Recherche du service
UDDI
Définition de l’interface du service WSDL Implémentation du Service Protocole de communication
khaled.bendriss@gmail.com
WSDL + SOAP + J2EE/.Net SOAP
Architecture des systèmes d'information
Web Services : considérations pratiques
La J2EE et .Net sont deux technologies qui devront cohabiter d’une manière ou d’une autre
.Net intègre les web services au cœur de sa plate-forme
La J2EE 1.4 intègrera directement les APIs des web services (Java WSDP)
Les mécanismes de base des web services deviendront inévitablement le moyen privilégié pour faire interopérer les deux plate-formes.
Il faut intégrer le fait que les services applicatifs J2EE développés aujourd’hui pourront être publiés comme des web services demain. khaled.bendriss@gmail.com
Architecture des systèmes d'information
SOAP : le protocole des Web Services
Définit un format standard pour l’échange de messages Xml
Fournit un mécanisme de type RPC
Repose sur HTTP
Utilise XML pour le transport des paramètres
Un des mécanisme incontournable d’intégration de services applicatifs hétérogène
Encore très limité en terme de capacité transactionnelle khaled.bendriss@gmail.com
Architecture des systèmes d'information
SOAP : principes de base
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Le débat
Utiliser un Langage de description des Interfaces (IDL) pour assurer l’indépendance vis à vis des langages de programmation – On dépend du protocole (incluant le mapping)
Utiliser un langage reposant sur une machine virtuelle et donc indépendant de l’infrastructure sous-jacente. – On dépend de la sémantique du langage
Suivant le contexte d’utilisation, les deux solutions ne sont pas mutuellement exclusives
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Implications sur le dĂŠveloppement des applications modernes
L’architecture au cœur de la problématique L’obtention de "bonnes" applications distribuées ne procède pas de la génération spontanée La mise en œuvre des technologies, aussi puissantes soient-elles, ne suffit pas à garantir l’obtention d’un système fiable, performant et évolutif L’élaboration d’une architecture adéquate est au cœur du processus de développement Ce n’est pas une tâche simple Placer l’approche objet au cœur de la démarche
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Ne pas raisonner en terme d’application monolithique
Concevoir une application comme une fédération de services procurant les fonctionnalités attendues
Concevoir des services élémentaires et des combinaisons de services élémentaires
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Du métier à l’application informatique Modèle Métier (Processus et Domaines)
Modèle d’Infrastructure Technologique
Modèle Métier de l’Application
Infrastructure Technologique Frameworks Middleware
Architecture Applicative Métier
Operating system Hardware
Architecture Applicative Logique
Architecture Applicative Physique (Application)
khaled.bendriss@gmail.com
Architecture des systèmes d'information
La composante métier
Des cas d ’utilisations à l’architecture applicative métier
khaled.bendriss@gmail.com
Architecture des systèmes d'information
De l’architecture applicative à l’architecture technique
Exemple dans le cas de la J2EE (avec mise en œuvre des EJB)
Requête Client
2
1 Servlet
5
Logique & contrôle de présentation
Réponse Client
6
3
4
EJB Entity
Entités Métier
EJB Session
Logique & contrôle Métier
EJB Entity
Pages JSP
Présentation
Support de Persistance
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Développement des applications J2EE
Développer pour les spécifications de la J2EE, pas pour un serveur d’application particulier
Placer l’architecture au cœur du développement
Utiliser l’expérience de la communauté informatique internationale
khaled.bendriss@gmail.com
Architecture des systèmes d'information
Ne pas réinventer la roue à chaque fois Face à un problème, il faudrait toujours se poser la question de savoir comment les autres, confrontés au même type de problème, ont procédé pour le résoudre. Les patterns (notamment les design patterns) répondent à cette problématique
– Profiter de l’expérience des autres – Appliquer les bonnes pratiques issues de la communauté informatique internationale (le web a révolutionné les échanges entre communautés de développeurs) – Casser le mythe du "ce qui est fait chez nous est forcément mieux qu’ailleurs" khaled.bendriss@gmail.com
Architecture des systèmes d'information
QUESTIONS
khaled.bendriss@gmail.com
Architecture des systèmes d'information