# Architectures N Tiers ## William Petit - S.C.O.P. Cadoles --- ## Les architectures distribuées (1) ### Qu'est ce qu'une application distribuée ? ![center 75%](./img/application_distribue.png) > Une application distribuée est une application informatique constituée de **composants indépendants** (i.e. processus distincts et sans partage de mémoire) **communiquant via des messages**. --- ## Les architectures distribuées (2) ### Exemples d'applications distribuées - Sites/applications Web - Jeux en ligne multijoueurs - Gestionnaire de version de code source (SVN, Git, etc...) - Serveurs de courriel --- ## Les différents modèles d'architectures distribuées ### Modèle 2 tiers (ou client/serveur) ### Modèle 3 tiers ### Modèle N tiers ### Modèle Pair à pair --- ## Le modèle 2 tiers (ou "client/serveur") ### Définitions ### Les différentes topologies ### Communication client/serveur ### Répartition des traitements ### Le middleware ### Exercice : Implémentation d'une calculatrice par TCP/IP --- ## Définitions - **Client** Processus demandant l’exécution d’une opération à un autre processus par envoi de message contenant le descriptif de l’opération à exécuter et attendant la réponse de cette opération par un message en retour. - **Serveur** processus accomplissant une opération sur demande d’un client, et lui transmettant le résultat. - **Requête** message transmis par un client à un serveur décrivant l’opération à exécuter pour le compte du client. - **Réponse** message transmis par un serveur à un client suite à l’exécution d’une opération, contenant le résultat de l’opération. --- ## Les différentes topologies ![center 100%](./img/clientserveur.png) --- ## Communication client/serveur (3) ### Protocole de communication Une application distribuée étant fondamentalement un environnement hétérogène (composants indépendants). Il est donc nécessaire de définir un "langage commun" (ou "protocole") pour que les composants puissent communiquer entre eux. La spécification de régles de **sérialisation** et **désérialisation** des structures de données échangées (messages) est souvent à la base de la définition des protocoles d'échange. [Exemples de formats de sérialisation sur Wikipédia](https://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats) --- ## Communication client/serveur (2) ### Modes de communication ![center](./img/communication_client_serveur.png?3) --- ## Communication client/serveur (3) ### Différences entre les deux modes #### Synchrone - Les messages sont émis aussitôt - Bloquant - Pas de file d'attente de traitement ### Asynchrone - Nécessite une file d'attente de traitement - Non bloquant - Favorise le multitâche/la montée en charge --- ## Répartition des traitements (1) ### Couches de traitement La conception d'une application distribuée nécessite d'établir une répartition de la responsabilité des traitements sur les différents composants. On peut catégoriser ces traitements par "couche": - **Couche de présentation** rendu des interfaces textuelle ou graphique destinée à l'utilisateur de l'application, gestion des interactions, validation des entrées... - **Couche métier/logique** traitement appliqués sur les modèles de données de l'application, validation des données... - **Couche de données** Persistance et accès aux données de l'application --- ## Répartition des traitements (2) ### Classification des architectures 2 tiers (Gartner Group) ![center](./img/modle_gartner_2_tiers.png) --- ## Le middleware (1) Aussi appelé "intergiciel" ou "intersticiel" en français. ### Rôle - Ensemble de services logiciels construits au dessus d’un protocole de transport afin de permettre l’échange de requêtes et des réponses associées entre client et serveur de manière transparente. - Les services du middleware sont un ensemble de logiciels répartis qui existe entre l’application, l’OS et les services réseaux sur un nœud du réseau. --- ## Le middleware (2) ### Fonctions - Procédure d’établissement de connexion - Exécution des requêtes - Récupération des résultats - Procédure de fermeture de connexion - Gestion des accès concurrents - Sécurité et intégrité - Monitoring - Terminaison des processus - Mise en cache des résultats - Mise en cache des requêtes --- ## Le middleware (3) ### Différentes techniques - **Échange de messages**, ou MOM - Message Oriented Middleware. Exemple: AMQP, NATS - **Appel de procédures distantes**, ou RPC. Exemple: JSON-RPC2, SOAP. - **Manipulation d'objets** Exemple: DCOMM, CORBA, RMI --- ## Le middleware (4) ### Exemple: RPC ![center](./img/rpc.png) --- ## Exercice ### Implémentation d'une calculatrice à état distribuée en NodeJS --- ## L'architecture 3 tiers ### Généralités ### Sécurité ### Exercice : Implémentation de couche de présentation (HTML/CSS et ligne de commande) multiple pour une même couche logique et de données --- ## Généralités (1) ### Principe L'architecture 3 tiers est le modèle d'architecture applicative le plus utilisé aujourd'hui dans la conception d'application. Il propose de découper l'application en 3 couches aux rôles distincts: - Couche de **présentation** - Couche de **traitement/logique/métier** - Couche de **persistence/données** --- ## Généralités (2) ### Exemple: Application LAMP (Linux, Apache, PHP, MySQL) ![center](./img/lamp.png?1) --- ## Modèle N tiers --- ## Modèle Pair à pair --- # Licence ## CC BY-NC-SA 3.0 FR [Creative Commons - Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France](https://creativecommons.org/licenses/by-nc-sa/3.0/fr/)