architectures techniques des applications dans les si …

34
ARCHITECTURES TECHNIQUES DES APPLICATIONS DANS LES SI FIP INF210 M.T. SEGARRA, P. TANGUY

Upload: others

Post on 03-Apr-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

ARCHITECTURES TECHNIQUES DES APPLICATIONS DANS LES SI

FIP INF210M.T. SEGARRA, P. TANGUY

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