architectures techniques des applications dans les si …
TRANSCRIPT
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
2
Phase de conception : architecture logicielle [Wikipédia]► Organisation interne et découpage d’un logiciel en « modules » (pour nous,
des classes)► Décrit la nature des modules, leurs responsabilités et fonctionnalités et la
nature de leurs relations► Donne des premières réponses sur comment sera structuré le futur logiciel,
avant le début du travail de programmation
Phase d’analyse vs phase de conception► « quoi faire » vs « comment le faire »
FIP INF110 … ARCHITECTURE LOGICIELLE
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
3BLOC ARCHI … (UNE PARTIE DE) ARCHITECTURE TECHNIQUE
Architecture technique [Wikipédia] décrit► Éléments matériels supportant le logiciel (serveurs, postes de travail,
équipements réseau, de stockage ...)► Composants logiciels déployés sur les éléments matériels (OS, SGBD,
serveurs Web, serveurs DNS, composants spécifiques au logiciel...)
Il s’agit donc de la répartition des éléments logiciels entre les matériels existants ou nécessaires
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
4
Les SI sont des systèmes complexes. Leurs applications► manipulent des données stockées de manière permanente► sont (peuvent être) réparties► sont construites à base de technos (qui peuvent être) très différentes
Comme toute structure complexe, le logiciel doit être construit sur une fondation solide► Des outils modernes et des « frameworks » (Eclipse, Netbeans, JPA ...)► Mais élaborer soigneusement son architecture logicielle reste fondamental
pour limiter des difficultés► à répondre aux besoins actuels ou futurs► dans le déploiement du logiciel et sa gestion dans l’environnement de
production
BLOC ARCHI … DES APPLICATIONS DES SI
Utilisation d’outils modernes pour développer des applications des SI avec une architecture logicielle et technique donnée
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
5
Arrangement caractéristique de modules (des classes), reconnu comme bonne pratique en réponse à un problème de conception d’un logiciel [GoF]
Issu de l’expérience des concepteurs de logiciels
Sert de vocabulaire commun entre le concepteur et le programmeur
Permet de capitaliser l’expérience appliquée aux logiciels
Exemples : Singleton, Factory, Façade, Iterator ...
FIP INF110 … PATRON DE CONCEPTION
[GOF] E. GAMMA ET AL. « DESIGN PATTERNS – ELEMENTS OF REUSABLE OBJECT-ORIENTED SOFTWARE », FR.WIKIBOOKS.ORG/WIKI/PATRONS_DE_CONCEPTION/PATRONS_DU_ « GANG_OF_FOUR »
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
6
Comme patrons de conception mais apporte des solutions sur la manière de concevoir l’organisation « haut niveau » (architecture) d’un logiciel
Comme patrons de conception : différents types de patrons d’architecture (déploiement, structure / organisation d’un logiciel …)
BLOC ARCHI … PATRON D’ARCHITECTURE
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
7
Architecture très courante des applications persistantes
Processus client (serveur) vs machine cliente (serveur)
Communication synchrone vs asynchrone
ARCHITECTURES CLIENT / SERVEUR
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
8
SGBDRex. Mysql
Tables relationnelles
Pages statiques
Module Apacheex. mod_php5
HTTP
Progs. PHP
Navigateurex. Firefox
Serveur Webex. Apache
Données
APPLICATIONS WEB (SIMPLES) PHP / MYSQL
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
9
SGBDRex. Mysql
Données
Navigateurex. Firefox
Tables relationnelles
Pages statiques
Serveur Webex. Apache
Module Apacheex. mod_jk
HTTP
Progs. Java
Conteneur WebTomcat
APPLICATIONS CLIENT/SERVEUR WEB (SIMPLE) JAVA / MYSQL
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
10CONTENU DU COURS
Patrons d’architecture : structuration et déploiement
Contexte technologique : le « monde » Java
Structure d’une application 3-tier Jakarta EE
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
11« SERVICES » D’UNE APPLICATION DU SI
Gestion de données
Logique métier (« business logic »)► Traitements propres à l’application► Ex. : retrait d’argent
Logique de présentation ► Mise en forme des données pour visualisation
► Stockage permanent des données
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
12
ARCHITECTURES EN COUCHES (PATRON DE STRUCTURATION)
Selon la répartition des « services » entre dans les éléments de l’application► Pour nous élément = classe
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
13ARCHITECTURES 2 COUCHES
Couches► Gestion de données► Code présentation et métier dans la même entité (ex. AnnuaireServlet.java)
Mélange présentation et métier► Quelle organisation pour l’évolution des parties ?
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
14ARCHITECTURES 3 COUCHES
Couches : données, métier, présentation
Application de gestion du personnel► Données : SGBDR PostgreSQL► Code métier et présentation dans des entités différentes (ex. AnnuaireServlet.java, GestionPersonnel.java)
Séparation des couches► Évolution indépendante, partage de traitements possible
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
15
ARCHITECTURES 2-TIER, 3-TIER, … N-TIER (PATRON DE DÉPLOIEMENT)
Tier► Machine physique sur laquelle une partie de l’application peut s’exécuter► En général « partie » = gestion de données ou présentation ou métier
2-tier
3-tier► L’application est prévue pour s’exécuter sur trois machines différentes► En général : tier gestion de données, tier métier, tier présentation
► L’application est prévue pour s’exécuter sur deux machines différentes► En général : tier gestion de données, tier présentation/métier
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
16RÉCAPITULONS : PATRONS D’ARCHITECTURE
2 couches, 3 couches, … N couches : patron de structuration d’une application► Organisation d’une application en différentes « couches fonctionnelles » qui
regroupent des éléments ayant des responsabilités communes (traditionnellement présentation / métier / données)
2-tier, 3-tier, … N-tier : patron de déploiement d’une application► Focus sur le déploiement de chacune des couches sur des machines
physiques (ou virtuelles) différentes► Ce n’est pas un problème d’organisation logique de l’application mais
d’organisation physique
Architecture d’une application = ensemble de patrons d’architecture (structuration, déploiement ...)
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
17CATÉGORIES DE PATRONS D’ARCHITECTURE
Catégorie Patrons architecturaux
Communication interne/externe à l’application
Architectures orientées services (SOA)Architectures à bus de messages
Déploiement de l’application
Architectures client/serveur
Architectures n-tierArchitectures 3-tier
Domaine métier de l’application
Conception dirigée par le domaine (Domain Driven Engineering)
Structure (organisation) de l’application
Architectures orientées composants
Architectures orientées objets
Architectures en couches
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
18PATRONS D’ARCHITECTURES
Patterns Description
Architectures client/serveur Séparation du système en deux parties : le client effectue des requêtes sur un serveur.
Architectures orientées composants
Découpage de l’application en composants logiciels qui exposent leurs fonctionnalités à l’aide d’interfaces.
Conception dirigée par le domaine Démarche de conception orientée objets qui se focalise sur la conception d’un domaine métier.
Architectures en couches Conception d’une application en différentes couches fonctionnelles qui regroupent des composants ayant des responsabilités communes (IHM / métier / accès aux données, par exemple).
Architectures à bus de messages Architecture centrée sur les canaux de communication : permet de faire interagir différentes parties d’une application sans en connaître les détails techniques internes (architecture JMS).
Architectures n-tier, 3-tier d'entreprise
Associées aux architectures en couches mais on se focalise ici sur le déploiement de chacune des couches sur des machines physiques différentes : ce n’est plus un problème d’organisation logique de l’application mais d’organisation physique.
Architectures orientées objets Conception basée sur la division des responsabilités en objets individuels et auto-suffisants : chaque objet contient les données et le comportement associé à l’objet.
Architectures orientées services (SOA)
Exposition des fonctionnalités d’une application en services qui utilisent des contrats et des messages (services Web).
« Microsoft Application Architecture Guide, 2nd Edition ». msdn.microsoft.com/en-us/library/ff650706.aspx
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
19ARCHITECTURES DES APPLICATIONS D’UN SI
Web vs non Web, toute est une question de termes, standardisation et sécurité et montée en charge
Toutes les architectures (Web et pas Web) peuvent exister dans un SI
Architectures Web : simples sur le principe technologiquement compliquées
Quid des architectures client / serveur asynchrones (AJAX, node.js … : voir► openclassrooms.com/courses/des-applications-ultra-rapides-avec-node-js/node-js-mais-a-quoi-ca-sert
► blog.axopen.com/2017/06/nodejs-vs-java-ee-application-web-2017
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
20CONTENU DU COURS
Patrons d’architecture : structuration et déploiement
Contexte technologique : le « monde » Java
Structure d’une application 3-tier Jakarta EE
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
21BLOC ARCHI … QUELLES TECHNOLOGIES ?
Du monde Java …
Gestion des données► SGBD Relationnel (SGBDR) PostgreSQL► Java Persistence Architecture (JPA) + framework MOR (Mapping Objet-
Relationnel) EclipseLink
Logique métier
Logique de présentation
► HTML + Servlets / Java Server Pages (JSP) → Applications Web
► Entreprise Java Beans (EJB)
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
22JAVA : LANGAGE ET PLATE-FORMES
Langage Java► Orienté objet et procédural► Issu d’un projet de Sun de 1990 dont l’objectif était de développer un langage
et un environnement d’exécution (machine virtuelle) pour des systèmes embarqués
► Réorienté Web vers 1994► Dérivé de C++ mais simplifié
Plate-forme Java
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
23JAVA : LANGAGE ET PLATE-FORMES
Langage Java
Plate-forme Java► Environnement dans lequel les applications Java peuvent s’exécuter► Constitué de :
✗ La machine virtuelle (JVM) : interpréteur de code Java qui a été pseudo-compilé (pseudo-code ou bytecode)
✗ Ensemble d’APIs : bibliothèques disponibles pour être utilisées dans un programme
✗ Ensemble d’outils pour la compilation, exécution, documentation, etc (javac, javadoc, java …)
JREJDK
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
24PLATE-FORMES JAVA : STANDARDISATION
Spécifications (JSR) gérées par le JCP (jcp.org)
Implantation de référence opérationnelle
Tests de compatibilité de la plate-forme (TCK)
Conseils de mise en œuvre (« Blueprints »)► Exemple de l’application « Cargo Tracker »
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
25PLATE-FORMES JAVA : JAVA SE
https://docs.oracle.com/javase/8/docs/
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
26PLATE-FORMES JAVA : JAKARTA EE
Plate-forme pour le développement d’applications 2-tier et 3-tier (Web)
« Orientée serveur pour le développement et l’exécution d’applications d’entreprise* »
Standardisation► APIs : sur-ensemble Java SE► JVM : même que pour Java SE► Spécifications à destination d’éditeurs tiers : comment l’infrastructure
d’exécution doit fonctionner► Implantation de référence : Oracle Glassfish Server
* : large-scale, multi-tiered, scalable, reliable, and secure network applications
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
27JAKARTA EE
Java EE
RMI
JAXB
JMX
Java SE
...
Machine virtuelle Java (JVM)
APIs de base du langage
EJB
JNDI
JPA
JTA
Servlet/JSP
Swing
JDBCWS
...
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
28INFRASTRUCTURE D’EXÉCUTION JAKARTA EE
Appelée officiellement « serveur d’applications »
Utilisée par les applications via des API
Peut être vue comme un intergiciel (« middleware »)► Offre des services « techniques » : sécurité, transaction, communication
distante ...
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
29RÉSUMÉ SCHÉMATIQUE
JVM (ex. HotSpot)
Serveur d'applications(ex. Glassfish)
APIs Java EE
Servicestechniques
Clients de l'application :
navigateur Web, client
lourd, autres serveurs
d'applications
SGBDR, services externes
Application constituée de composantsorganisés en couches
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
30CONTENU DU COURS
Patrons d’architecture : structuration et déploiement
Contexte technologique : le « monde » Java
Structure d’une application 3-tier Web Jakarta EE
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
31APPLICATIONS WEB JAVA 2 COUCHES, 2-TIER
SGBDRex. Mysql
Données
Navigateurex. Firefox
Tables relationnelles
Conteneur Webex. Tomcat EE, Glassfish
HTTPServeur Web
Présentation+Applicatifex. JSP/Servlet
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
32APPLICATIONS WEB JAVA 3 COUCHES, 2-TIER
SGBDRex. Mysql
Données
Navigateurex. Firefox
Tables relationnelles
Conteneur Webex. Tomcat EE, Glassfish
HTTPServeur Web
Présentationex. JSP/Servlet
Applicatifex. EJBs
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
33APPLICATIONS WEB JAVA 3 COUCHES, 3-TIER
SGBDRex. Mysql
Données
Navigateurex. Firefox
Tables relationnelles
HTTP
Conteneur EJBex. Glassfish
ApplicatifPrésentation
Conteneur Webex. Tomcat
Serveur Web
RMI-IIOP
ex. JSP/Servlet
ex. EJBs
Serveur Web
ARCHITECTURES TECHNIQUES DES APPLICATIONS DES SI – FIP INF210
34APPLICATIONS WEB JAVA 3 COUCHES, 3-TIER
SGBDRex. Mysql
Données
Navigateurex. Firefox
Tables relationnelles
HTTP
Conteneur EJBex. Glassfish
ApplicatifPrésentation
Conteneur Webex. Tomcat
Serveur Web
RMI-IIOP
JVMDalvik / ART
ApplicationAndroid
HTTP
RMI-IIOPRMI-IIOP
ex. JSP/Servlet
ex. EJBs
ex. classes JavaServeur Web