Architecture applicative et Cartographie



Documents pareils
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Business & High Technology

Les Architectures Orientées Services (SOA)

Les nouvelles architectures des SI : Etat de l Art

Urbanisme du Système d Information et EAI

Nouvelles Plateformes Technologiques

Business Process Modeling (BPM)

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Messagerie asynchrone et Services Web

Remote Method Invocation en Java (RMI)

2 Chapitre 1 Introduction

Remote Method Invocation (RMI)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Intégration de systèmes

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Introduction à la plateforme J2EE

Conception, architecture et urbanisation des systèmes d information

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Description de la formation

Fiche de l'awt Intégration des applications

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

Exécution de processus

Architectures n-tiers Intergiciels à objets et services web

10. Base de données et Web. OlivierCuré

Refonte front-office / back-office - Architecture & Conception -

Mineure Architectures Orientées Services SOA Etude de cas. Etude de cas. Etape 1 Analyse de l existant

Le 09 et 10 Décembre 09

L'EAI (Enterprise Application Intégration)

EAI urbanisation comment réussir?

Annuaires LDAP et méta-annuaires

Architecture d'entreprise : Guide Pratique de l'architecture Logique

NFP111 Systèmes et Applications Réparties

J2EE - Introduction. Développement web - Java. Plan du chapitre

JOnAS 5. Serveur d application d

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

CQP Développeur Nouvelles Technologies (DNT)

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

Environnements de Développement

Compte Rendu d intégration d application

12 décembre Mineure SOA Cours 6. Olivier BESNARD Consultant sénior Practice Architecture des Systèmes d Information

Mise en œuvre des serveurs d application

Urbanisation des Systèmes d'information

Gérez efficacement vos flux d entreprises.

RMI le langage Java XII-1 JMF

Evaluation Idéopass Cahier d analyse technique

Urbanisation des Systèmes d Information Architecture d Entreprise. 04 Architecture du SI : identifier et décrire les services, structurer le SI

Oracle Fusion Middleware Concepts Guide 11g Release 1 (11.1.1) Figure 1-1 Architecture Middleware

Auto-évaluation Aperçu de l architecture Java EE

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Comment initialiser une démarche SOA

La démarche SOA et l interopérabilité applicative

Vulgarisation Java EE Java EE, c est quoi?

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

CORBA. (Common Request Broker Architecture)

Le modèle client-serveur

LA VAGUE EAI (ENTREPRISE APPLICATION INTEGRATION)

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Java Naming and Directory Interface

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Introduction aux intergiciels

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Contexte : «l e-business» TECHNIQUES DE MARKETING EN LIGNE. Contexte : «l e-business» Création de valeur 02/02/12

1. Introduction à la distribution des traitements et des données

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

EAI. De l intégration à l e-business. Novembre François Rivard consultant senior Tél :

Java pour le Web. Cours Java - F. Michel

ORACLE DATA INTEGRATOR ENTERPRISE EDITION - ODI EE

Mineure Architectures Orientées Services SOA Business Process Modeling (BPM) Mineure SOA. Business Process Modeling (BPM)

Nouvelles technologies pour l intégration : les ESB

Introduction aux applications réparties

Technologie data distribution Cas d usage.

Module BD et sites WEB

Patrons de Conception (Design Patterns)

Expert technique J2EE

Urbanisation des systèmes d information

Programmation par composants (1/3) Programmation par composants (2/3)

Mettez les évolutions technologiques au service de vos objectifs métier

Architectures d'intégration de données

Introduction à la conception de systèmes d information

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

LIVRE BLANC Comprendre et savoir utiliser un ESB dans une SOA

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Qu'est-ce que le BPM?

Architecture SOA Un Système d'information agile au service des entreprises et administrations

I)EAI. EAI synthèse de lecture

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

Du paradigme Suivi/ordonnancement/GPAO au paradigme ERP/APS/MES : révolution ou évolution?

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Urbanisation de système d'information. PLM 6 (Product Lifecycle Management) Collaboration et partage d'informations

Exécution de processus

Windows (2000/NT), Solaris, AIX, HP-UX, Linux Haute disponibilité : SunCluster 3, Veritas Cluster Server 4. J2EE (JSP, Servlet, EJB, JTA), Open Source

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Composants Logiciels. Le modèle de composant de CORBA. Plan

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Master Informatique et Systèmes. Architecture des Systèmes d Information. 02 Architecture Applicative

Transcription:

Architecture applicative et Cartographie Mineure SOA Idir AIT SADOUNE idir.aitsadoune@supelec.fr

Programme 7 nov. 14 nov. 21 nov. Introduction. Enjeux, rôle de l'architecte SI Partie n 1 du cas d'étude Architecture et cartographie Modèle SOA D1.13E Deux intervenants : Olivier Besnard (Solucom) Idir Ait-Sadoune (Supélec) 28 nov. 5 déc. 12 déc. Modélisation de processus Partie n 2 du cas d'étude Web Services Partie n 3 du cas d'étude Cloud Partie n 4 du cas d'étude D1.13E D1.13E déc. 10 jan. Exécution de processus Compléments et ouverture. Conclusion Partie n 5 du cas d'étude D1.13E 26 jan. Examen : présentation de vos travaux sur l'étude de cas «Chaus'Star» 2

Au programme aujourd'hui 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 3

La modélisation du SI Le contenu de chaque vue Focus sur Vue métier Les processus métier et leurs activités, l organisation Vue fonctionnelle Les fonctions du SI supportant les processus métier Vue applicative Les blocs applicatifs, les messages, les données Vue technique Les matériels, les logiciels, les technologies Source : Solucom 4

Rôle de l'architecte Grands blocs applicatifs? Technologies à utiliser? Types d'échanges? Infrastructures nécessaires? SI de mon entreprise Applications RH Cloud Données personnel = besoin d'échange Postes de travail Application de messagerie Annuaire Terminaux «terrain» Applications X Données X Front-end SI partenaire Internautes 5

Plan 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 6

Exemples d'applications 7

Rappel : Organisation simplifiée de l entreprise E n v i r o n n e m e n t Collaborateurs Recrutement Prospection Communication Marketing Paie Formation / Compétences Informations Entreprise Management RH Direction Finances Réalisation Stocks Production Achats Avant-Vente Devis Conseil Support Vente Commande Livraison Facture Paiement Clients Administrations Déclarations Fonction IT Après-Vente Support Technique Remboursement Echange Fidélisation Des applications pour gérer les différentes activités de l'entreprise! Prospection Commande Logistique Facturation Paiement F o u r n i s s e u r Source : Solucom 8

Implémentation : développer soi-même ou acheter? Développements spécifiques Sur serveur web/d'applications : Java EE,.NET, PHP Sur serveur de bases de données : Oracle, Access, SQL Server Sur client : Java,.NET, JavaScript, Applets Progiciels et COTS (Commercial Off-The-Shelf) CRM (Customer Relationship Management) SCP (Supply Chain Management) ERP (Enterprise Resource Planning) Bureautique, messagerie Applications de travail collaboratif Workflows «Cloud» Et pourquoi ne pas louer? 9

Plan 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 10

Couches applicatives (rappel ) 3 types de responsabilités = 3 couches principales Présentation Traitement Ressources Interaction avec l utilisateur Traitements métiers, logique applicative Gestion des ressources, des données Principe de conception = séparation des responsabilités P T R 11

Couches applicatives détaillés Vue plus fine des responsabilités Visualisation Logique de présentation VP LP Logique applicative Traitements métier LT TT Accès aux ressources Stockage des ressources AR SR 12

Modèle Client-Serveur (rappel ) Modèle Client-Serveur = 2 programmes +1 protocole Programme «serveur» = offre un service à des clients Programme «client» = utilise un service fourni par un serveur Protocole = moyen de communication 1 - Requête 2 - Traitement 3 - Réponse Client Serveur Indépendant de la notion de «machine» Client et serveur sur la même machine Client et serveur sur des machines différentes 13

Modèle Client-Serveur Où placer les couches applicatives? Distribution des couches Possibilités multiples = typologies multiples (Gartner) Client Client Client Client Client VP P P P P T LT T AR LP T T TT R R R R SR Serveur Serveur Serveur Serveur Serveur 14

Architecture 1-tiers (mainframe) L application est sur un serveur (éventuellement distant) Le client est une application «légère» de visualisation (client «passif») Exemple : Terminal LP T R VP Terminal Mainframe Terminal 15

Architecture 1-tiers (client autonome) L application est sur le client Les données sont sur un serveur (éventuellement distant) Exemple : Poste de travail SR P T AR Poste de travail Serveur de fichiers Poste de travail 16

Architecture 2-tiers (client lourd) Le cœur de l application est sur un serveur (éventuellement distant) La couche présentation (IHM) de l application est sur le client Exemple : Poste de travail T R P Poste de travail Serveur d applications ou de données Poste de travail 17

Architecture 3-tiers (client léger) Le cœur de l'application est sur un serveur Les données sont sur un autre serveur Le client est une application «légère» de visualisation (ex : navigateur web) Exemple : Smartphone LP T AR SR VP Portable Serveur d applications Serveur de données Poste de travail 18

Architecture n-tiers Généralisation des modèles précédents (remarque : un serveur peut être un client pour un autre serveur!) Distribution des responsabilités en 4 ou + tiers Architecture type : VP LP T AR SR Client léger Serveur de présentation Serveur d applications Serveur de données 19

Exemple avec Java EE Application de gestion de catalogue de produits Architecture 3 ou 4 tiers : Client léger Serveur de présentation (pouvant être fusionné avec le serveur de traitement dans le cas de Java EE) Serveur d'application Serveur de données VP HTTP LP T AR SR Navigateur web SA Java EE Conteneur web SA Java EE Conteneur d'ejb Serveur de base de données 20

Comment «découper» une application en tiers? 21 Architectures applicatives et inter-applicatives 23 novembre 2012

Gestion de catalogue avec Java EE Application de patrons de conception : MVC, ECB, Façade, DAO VP Client web (navigateur) SR Serveur de bases de données JDBC FacesServlet EntityManager <<view>> product-view <<view>> product-list <<gère>> <<ManagedBean>> CatalogController <<Stateless>> CatalogFacade <<gère>> <<Entity>> Product 22 LP T AR

Rappel : Programmation orientée objet Objet = entité possédant Des caractéristiques = attributs Des comportement = méthodes Classe / instance Classe = modèle abstrait d un objet Héritage : permet d'étendre la définition d'une classe générique pour créer une classe spécifique Instance = objet conforme à cette classe - x:double - y:double Point + dessiner() + translater(l:double) Polygone - sommets:point[] Figure + perimetre():double Cercle - centre:point - rayon:double origine:point Vue externe : boîte noire x=0.0 y=0.0 dessiner() translater() origine 23

Rappel : Classe Java Et Plain Old Java Object (POJO) public class Product { } private String name; private Double price; public Product(String n, Double p) { this.name = n; this.price = p; } public String getname() { return this.name; } public void setname(string name) { this.name = name; } Product - name:string - price:double + getname():string + setname(name:string) 0..* products public class Catalog { private ArrayList<Product> products; public Catalog () { this.products = new ArrayList<Product>(); } } public void addproduct(string name, Double price){ Product p = new Product(name, price); this.products.add(p); return p; } Catalog + addproduct(name:string, price:double) 24

Composants Composant = unité logique de traitement Assemblage d objets interdépendants Rend un service (fonction) Vue boîte noire Propriétés Comp. Identification : nom unique, référencé dans un annuaire Indépendance : utilisable tout seul Réutilisation : utilisable dans différents contextes Intégration : combinable avec d autres composants objety objetx Comp. Technologies d implémentation multiples 25

Exemple avec Java : JavaBeans Composant implémenté par une classe Java Plain Old Java Object (POJO) Conventions à respecter Sérialisation Constructeur par défaut Propriétés privées avec accesseurs (encapsulation et introspection) public <returntype> getpropertyname() public void setpropertyname(parameter) Méthodes d interception d événements Utilisation d écouteurs et génération d événements Ex : PropertyChangeListener 26

JavaBeans Exemple public class ProductBean implements Serializable { private static final long serialversionuid = 1L; } 27 private String name; private Double price; public ProductBean() { this.name = ""; this.price = 0.0; } public String getname() { return this.name; } public void setname(string name) { this.name = name; } public Double getprice() { return this.employed; } public void setprice(double price) { this.price = price; } ProductBean - name:string - price:double + ProductBean() + getname():string + setname(name:string) + getprice():double + setprice(price:double) ou ProductBean Serializable Serializable

Interfaces d'un JavaBean public interface Product { public String getname(); public void setname(string name); public Double getprice(); public void setprice(double price); } 28 ProductBean - name:string - price:double + PersonBean() + getname():string + setname(name:string) + getprice():double + setprice(price:double) ou ProductBean Serializable Product Serializable Product public class ProductBean implements Product, Serializable { private String name; private Double price; } public ProductBean() { this.name = ""; this.price = 0.0; } public String getname() { return this.name; } public void setname(string name) { this.name = name; } public Double getprice() { return this.employed; } public void setprice(double price) { this.price = price; }

Composants distribués Un Client veut utiliser un composant qui se trouve sur un Serveur (distant) Client? Comp. Serveur 29

Solution Java : RMI (Remote Method Invocation) Client Nommage Socket RMI Socket Stub Skeleton Comp. Serveur Nommage Skeleton = interface sur le serveur qui reçoit les appels du client Stub = interface sur le client qui envoie les appels au serveur dérivés du composant Stub Registre RMI 30

Exemple avec RMI ServerSideComponent.java Client Nommage Stub Socket RMI Socket Skeleton Comp. Serveur Nommage Registre RMI rmiregistry 31

Exemple avec RMI Interface du composant (vue extérieure «boîte noire») : public interface ServerSideComponent extends Remote { public String getname() throws RemoteException; } Comp. Implémentation du composant («intérieur de la boîte») : public class ServerSideComponentImpl implements ServerSideComponent,Serializable { private static final long serialversionuid = 1L; } public ServerSideComponentImpl() { super(); } public String getname() throws RemoteException { return "Robert"; } objety objetx Comp. 32

Exemple avec RMI Application mettant à disposition le composant : ServerSideComponent comp = new ServerSideComponentImpl(); ServerSideComponent stub = (ServerSideComponent) UnicastRemoteObject.exportObject(comp,0); Registry registry = LocateRegistry.getRegistry("160.228.100.159"); registry.rebind("component", stub); Serveur Application utilisant le composant : Registry registry = LocateRegistry.getRegistry("160.228.100.159"); ServerSideComponent stub = (ServerSideComponent) registry.lookup("component"); System.out.println("Stub obtained from registry : " +stub.tostring()); System.out.println("Client result : "+stub.getname()); Client 33

Solution CORBA Un Client veut utiliser un composant qui se trouve sur un Serveur (distant) Client Stub ORB Nommage RPC ORB Nommage Skeleton Comp. Serveur Object Request Broker (ORB) = «bus logiciel» qui permet au client de rechercher le composant sur le serveur et de communiquer avec lui Skeleton = interface sur le serveur qui reçoit les appels du client Stub = interface sur le client qui envoie les appels au serveur dérivés du composant Remote Procedure Call (RPC) = appel de procédure distant 34

Problématiques Applications n-tiers à base de composants = composants distribués avec responsabilités distribuées Problématiques : Complexité Conception des composants et des applications Développement des composants et des applications Gestion des aspects transverses : sécurité, disponibilité, communication, persistance, transactions Interopérabilité des composants Administration des composants et des applications Sécurisation de bout en bout des applications 35

Serveurs d application & frameworks de développement Serveur d Applications (SA) = conteneur et fournisseur de services pour des composants et des applications Gestion du cycle de vie des applications et des composants Administration des applications et des composants Allocation de ressources Processeur, mémoire, réseau, composants logiciels externes Support pour les aspects transverses Sécurité, gestion des transaction, accès réseau Support pour l'interopérabilité Frameworks de développement = Cadres pour la conception et le développement de composants (déployés sur SA) et d'applications à base de composants 36

Exemple : SA + framework Java EE Composants Conteneurs Client léger Serveur d applications Java EE Données Conteneur web Conteneur EJB Servlet JSF/JSP EJB Session EJB Entity EJB Message Communication (TCP/IP, HTTP, SSL, RMI, RMI-IIOP) Nommage JNDI Persistance JPA Sécurité JAAS, JCE Transactions JTA Client lourd Autres services : Web Services, administration, com. asynchrone, connecteurs Legacy & ERP Services Infrastructures de communication 37

Un serveur d'applications Java EE : GlassFish 38

Rappel de l'exemple : Gestion de catalogue 3/4-tiers Client léger Serveur d applications Java EE Serveur de bases de données Conteneur web Conteneur EJB Servlet JSF/JSP EJB Session EJB Entity EJB Message Communication (TCP/IP, HTTP, SSL, RMI, RMI-IIOP) Nommage JNDI Persistance JPA Sécurité JAAS, JCE Transactions JTA Autres services : Web Services, administration, com. asynchrone, connecteurs Legacy & ERP 39

Gestion de catalogue, une autre architecture possible Client léger Serveur d applications Java EE Serveur de bases de données Conteneur web Conteneur EJB Servlet JSF/JSP EJB Session EJB Entity EJB Message Communication (TCP/IP, HTTP, SSL, RMI, RMI-IIOP) Nommage JNDI Persistance JPA Sécurité JAAS, JCE Transactions JTA Client lourd Autres services : Web Services, administration, com. asynchrone, connecteurs Legacy & ERP 40

Périmètre des infrastructures logicielles Infrastructure logicielle = logiciel rendant des services aux applications Exemples de services : communication, administration, exécution, sécurité Interface entre les applications et l'architecture matérielle «en dessous» des applications Exemples : Serveur web Serveur de bases de données Annuaire Serveur de fichiers... Serveur d'applications Middleware (solution d'intégration) Modélisation : vue applicative ou vue technique? 41

Plan 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 42

Echanges d'informations? Flux = données qui passent d un point A à un point B D une application à une autre, D un module applicatif à un autre D'un utilisateur à un autre D une base de données à une autre D une entreprise à une autre Exemples de flux Transfert de fichier Partage de fichier Appel de procédure distant Requête sur une base de données 43

Périmètre Flux privé = intra-application (entre composants) Flux AtoA = flux inter-applications sur un périmètre intra-entreprise Flux public = inter-applications Bonne gestion des flux publics = flexibilité! Flux BtoB = flux inter-applications sur un périmètre inter-entreprises Exemple : envoi d'une commande de pièce à un fournisseur 44

Granularité / Fréquence «Evénementiels» «Batch» Flux unitaire = données transmises une à une Flux de masse = données regroupées en lots Exemple : transmission des commandes à la plate-forme logistique au fur et à mesure de leur validation Flux au fil de l eau = données transmises dès qu'elles sont disponibles Flux cadencés = données transmises à des moments prédéterminés Exemple : transmission chaque soir des données concernant l'ensemble des ventes de la journée pour stockage dans l'entrepôt de données 45

Exemples de flux Souvent pour les flux unitaires au fil de l'eau («événementiels») : Appels distants entre composants (CORBA, RMI ) Transferts de fichiers Partage de base de données Electronic Data Interchange (EDI) = norme définissant le(s) protocole(s) + le format d'échange de données pour le B2B Web Services Souvent pour les flux de masse cadencés («batch») : Transferts de fichiers Partage de base de données Batch = script qui ordonne et cadence un déplacement de données en volume Solution «historique» et sans doute encore l'une des plus utilisées Extract-Transform-Load (ETL) = progiciel de batch «à grande échelle» permettant de connecter des entrepôts de données 46

Modalité Flux synchrone = bloquant pour l'émetteur et le récepteur Suppose la disponibilité de l'émetteur et du récepteur au même moment Exemple : appel de méthode RMI Flux requête-réponse = l'émetteur et le récepteur se connaissent Contact direct Exemple : récupération d'une donnée dans un référentiel Flux asynchrone = non bloquant (émission / réception différées) Suppose l existence d une zone de stockage intermédiaire Exemple : emails Flux publication-abonnement = les récepteurs s'abonnent aux flux sans connaître les émetteurs Contact indirect Exemple : abonnement aux mises à jour d'un référentiel de données 47

Plan 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 48

Architecture point-à-point = flux SI de mon entreprise Postes de travail Applications RH Cloud Application de messagerie Données personnel Annuaire Flux représenté par un arc orienté : source = initiateur du flux Terminaux «terrain» Applications X Données X Front-end SI partenaire Internautes 49

Analyse des solutions point-à-point Architecture «intuitive» Simplicité de mise en œuvre dans le cas où le nombre d'applications à intégrer est faible Efficacité des échanges directs Problème de passage à l'échelle Si N applications, N(N-1)/2 liens Effet «plat de spaghettis» Evolutivité très réduite Intégration d'une nouvelle application = ajout de nombreux nouveaux liens Couplage fort entre les applications fort impact des évolutions (notamment interfaces) Exploitation et administration complexes Manque de visibilité sur les échanges Source : Solucom 50

Architecture bus SI de mon entreprise = flux Cloud Applications RH Données personnel Postes de travail Application de messagerie Annuaire Bus SI partenaire Terminaux «terrain» Applications X Données X Internautes 51 Front-end

Exemple de solution de type bus : le MOM Middleware Orienté Message (MOM) = bus logiciel de transport qui permet à des applications de recevoir des messages émis par d autres Connectivité : supporte différents protocoles de communication Transport : Garantit l'acheminement (intégrité, gestion des erreurs) Gère différentes modalités : synchrone/asynchrone, publication/abonnement Gère les transactions Existe aujourd'hui sur la plupart des serveurs d'applications Connecteur Transport Connecteur Application 1 Application 2 Administration Source : Solucom 52

Exemple avec Java EE : JMS et EJB Message JMS (Java Message Service) = interface Java standard pour les MOM Files d attentes (queues) pour le mode requête / réponse Sujets (topics) pour le mode publication / abonnement EJB Message = composant invoqué par messages Traite les messages postés dans une file / sujet Poste des messages réponse dans la file / sujet @MessageDriven(mappedName="jms/Queue") public class MyMessageBean implements MessageListener { } public void onmessage(message inmessage) { TextMessage msg = null; try { if (inmessage instanceof TextMessage) { msg = (TextMessage) inmessage; System.out.println("Message received: " + msg.gettext()); } } catch (JMSException e) { } } Source : Les Entreprise JavaBeans 3.0 (EJB 3.0), Jean-Marc Farinone, CNAM Paris 53

Analyse des solutions de type bus Passage à l'échelle facilité 54 Si N applications, au plus N liens bidirectionnels Meilleure évolutivité Intégration d une nouvelle application = un seul connecteur Couplage faible entre les applications Services de transport Acheminement garanti des données (reprise sur erreur, gestion des doublons) Intégrité des données Adhérence forte entre les applications et le bus Couplage fort entre les formats des données fort impact des évolutions du format d'échange Plate-forme centralisée hautement critique goulot d'étranglement Source : Solucom

Architecture intégrée SI de mon entreprise = flux Cloud Applications RH Données personnel Postes de travail Application de messagerie Annuaire Solution d'intégration SI partenaire Terminaux «terrain» Applications X Données X Internautes 55 Front-end

Exemple de solution intégrée : l'eai Enterprise Application Integration (EAI) = progiciel d intégration inter-applicative Connectivité & Transport Transformation : gère l'hétérogénéité des formats et des valeurs Routage : adresse intelligemment les données aux différents destinataires Service : encapsule la logique d'intégration + Eventuellement, processus : orchestre les services d'intégration Processus Service Transformation et routage Connecteur Transport Connecteur Application 1 Application 2 Administration Source : Solucom 56

Analyse des solutions EAI Relations entre processus métiers et échanges inter-applicatifs plus lisibles 57 Urbanisation fonctionnelle + Urbanisation technique Services applicatifs riches Coûts d administration moins importants Coûts de développement réduits La quasi-totalité des projets d'eai se soldent par un échec 70 % des projets d intégration échouent (2003) Important travail d urbanisation et /ou de réorganisation fonctionnelle indispensable Sinon «plat de spaghetti» dans l'outil Experts indispensables (et malheureusement très rares) Projets transverses par essence Difficulté à établir les responsabilités Problématiques organisationnelles (nombreux acteurs, besoin de processus) Technologies d'interconnexion propriétaires Source : Solucom

Autre solution intégrée : ESB Enterprise Service Bus (ESB) EAI basé sur les standards Connectivité & Transport Transformation : gère l'hétérogénéité des formats et des valeurs Routage : adresse intelligemment les données aux différents destinataires Service : encapsule la logique d'intégration Processus : orchestre les services d'intégration Monitoring : supervise le déroulement des processus L'ESB est considéré comme le socle technique de l'approche SOA 58

Enterprise Service Bus (ESB) Source : Solucom 59

Plan 1 Applications d'entreprise Typologie des applications Cartographie applicative 2 Patrons d'architecture pour les applications 3 Flux Architecture en couches Modèle n-tiers Composants Infrastructures logicielles Typologie Qualification des flux 4 Architectures d'échange Typologie des architectures Solutions logicielles 60

Synthèse 1 Quels sont les différents types d'applications dans le SI d'une entreprise? Applications «classiques» pour les fonctions support, sinon dépend du métier Différents choix d'implémentation : Développements spécifiques Progiciels et COTS Cloud 2 Quels sont les grands patrons d'architecture pour les applications? Répartition en couches applicatives P T R Présentation Traitement Ressources Décomposition sur le modèle clients / serveurs (éventuellement distants) Encapsulation dans des composants (= boîtes noires avec interfaces publiques) Déploiement sur des infrastructures logicielles 61

Synthèse (suite) 3 Comment les informations sont-elles échangées au sein du SI? Différents types de flux, caractéristiques : Périmètre Granularité Fréquence Modalité 4 Quels types d'architectures supportent les échanges? Point à point Bus Intégrées, avec en particulier la solution de type ESB + Besoin de combiner les solutions d'échange! 62

Contraintes de l'architecte Un architecte est rarement amené à créer des architectures «from scratch» L'architecte doit tenir compte des contraintes exprimées et du contexte Contraintes exprimées Besoins fonctionnels des utilisateurs Exigences extra-fonctionnelles (performance, disponibilité ) Référentiels d'entreprise Stratégie économique (budget, time to market ) Contexte = contraintes liées à l'existant Existant applicatif Environnement technique : technologies de développement, plateformes Organisation : compétences des équipes, externalisation Généralement, nécessité de définir de plusieurs scénarios d'architecture Différents arbitrages possibles (priorités ) Problèmes de compatibilité entre contraintes, de réalisme 63

Ce qui n'a (malheureusement) pas été abordé Quelques-uns des autres sujets incontournables lorsque l'on parle d'architecture applicative : Sécurité Haute-disponibilité Exemple : un million de fichiers sauvegardés toutes les 15 minutes sur Dropbox Migration Comment évaluer si une architecture est «bonne»? Agilité / extensibilité Evolutivité Utilisation des standards Sécurité Coûts 64

Exercice cours 2 http://idir.aitsadoune.free.fr/index.php/activites-denseignement/ 65