Architecture 3-tiers



Documents pareils
INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Services Réseaux - Couche Application. TODARO Cédric

Cisco Certified Network Associate

Bases de données Cours 1 : Généralités sur les bases de données

L3 informatique TP n o 2 : Les applications réseau

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Cours CCNA 1. Exercices

Ex Nihilo Denis Ensminger

Architectures web/bases de données

Une famille d'applications permettant à toute organisation d'optimiser le suivi et la gestion de ses ressources internes vous présente

Les applications Internet

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Implémentation des SGBD

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

Configuration du nouveau Bureau Virtuel (BV) collaboratif de Lyon I

«Clustering» et «Load balancing» avec Zope et ZEO

Comment paramétrer manuellement mon mobile pour accéder à la 2G/3G+ et configurer mes s?

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Ce manuel vous accompagne au long des procédures d installation et de restauration de PheBuX 2004 [alternative solutions]

Tutoriel XBNE Connexion à un environnement XBMC distant

les techniques d'extraction, les formulaires et intégration dans un site WEB

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Module BD et sites WEB

Bases de Données et Internet

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

18 TCP Les protocoles de domaines d applications

Mysql. Les requêtes préparées Prepared statements

CREATION WEB DYNAMIQUE

Pratique et administration des systèmes

GENERALITES. COURS TCP/IP Niveau 1

Configuration de plusieurs serveurs en Load Balancing

1 Introduction et installation

Internet et Programmation!

Bases de données cours 1

PDO : PHP Data Object 1/13

Mercredi 15 Janvier 2014

1. La plate-forme LAMP

Java DataBaseConnectivity

Formation en Logiciels Libres. Fiche d inscription

Mise en œuvre des serveurs d application

Introduction aux Bases de Données

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Guide de configuration. Logiciel de courriel

Principe de la messagerie électronique

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Développement des Systèmes d Information

Sommaire 1 CONFIGURER SA MESSAGERIE 2 2 CONSULTER VOS MAILS SUR INTERNET (WEBMAIL) 7 3 PROBLEMES POSSIBLES 8

1 LE L S S ERV R EURS Si 5

CONFIGURATION DE LA RECEPTION DES MAILS EN POPS.

ADMINISTRATION DE RESEAUX SOUS LOGICIEL «OPEN SOURCE»

«clustering» et «load balancing» avec Zope et ZEO

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Programmation Internet Cours 4

Réseaux. 1 Généralités. E. Jeandel

Tour d horizon des différents SSO disponibles

Manuel de configuration des fonctions de numérisation

Phase 1 : Introduction 1 jour : 31/10/13

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

SESSION 2014 ÉPREUVE À OPTION. (durée : 4 heures coefficient : 6 note éliminatoire 4 sur 20)

DESCRIPTIF DES PROJETS 3EME ANNEE QUI SERONT PRESENTES LORS DE LA JOURNEE DE PROJET DE FIN D ETUDE LE 26/01/2012

LA PLATE-FORME D'ALTERN C

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Notes de cours : bases de données distribuées et repliquées

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Guide de connexion Wi-Fi sur un hotspot ADP Télécom

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Qu est ce qu Internet. Qu est-ce qu un réseau? Internet : à quoi ça sert? présentation des services. Exemple de configuration. Rôles des éléments

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

L état de l ART. Évolution récente des technologies. Denis Szalkowski Formateur Consultant

Architectures en couches pour applications web Rappel : Architecture en couches

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

M1101a Cours 4. Réseaux IP, Travail à distance. Département Informatique IUT2, UPMF 2014/2015

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Vous pouvez à présent à reconfigurer votre messagerie en cliquant ici.

Architecture de serveurs virtualisés pour la communauté mathématique

SERVEUR DE MESSAGERIE

Présentation du Serveur SME 6000

Cours Bases de données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Formation owncloud Thierry DOSTES - Octobre

BTS SIO Dossier BTS. PURCHLA Romain

(ATTENTION : une seule réponse possible pour les questions à choix multiples)

Programmation Web. Introduction

Hébergement de site web Damien Nouvel

Installation et Mise en œuvre de MySQL

Date : NOM Prénom : TP n /5 ET ADMINISTRATION D'UN

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

Transcription:

Skander Zannad et Judicaël Courant Lycée La Martinière-Monplaisir 2014-05-01

1 Résumé des épisodes précédents On a vu : calcul relationnel ; algèbre relationnelle ; (une partie de) SQL ; le lien entre les trois. Skander Zannad et Judicaël Courant 2

2 Et en pratique? 1. Architecture client-serveur ; 2. Architecture trois-tiers ; 3. Applications web. Skander Zannad et Judicaël Courant 3

3 Architecture client-serveur 3.1 Principe Accès à une base de données SQLlite : se fait localement à la machine par le frontal (front-end) interactif en mode texte sqlite3 ; situation atypique. Skander Zannad et Judicaël Courant 4

Situation typique : La base de données tourne sur une machine (mabd.example.org), appelée serveur ; On la consulte/modifie depuis une autre machine (par exemple monpc.example.org), dite cliente avec un logiciel, dit client. D où le terme : architecture client-serveur. Typiquement : un (voire quelques) serveurs ; plusieurs (voire nombreux) clients. Skander Zannad et Judicaël Courant 5

3.2 Remarque culturelle L architecture client-serveur est omniprésente aujourd hui, pas seulement pour les bases de données. Exemples : Web Pour la consultation de pages hypertextes (protocole HTTP). Messagerie Courrier électronique (POP, IMAP, SMTP). DHCP Pour se faire attribuer une IP par sa box. DNS Pour trouver l IP d une machine dont on connaît le nom. Temps Pour mettre à l heure son ordinateur (NTP). Systèmes de fichiers Accès à des fichiers distants (SMB, NFS). Skander Zannad et Judicaël Courant 6

3.3 Problèmes soulevés Le passage en réseau complique tout : Et si... (Sécurité) un méchant veut écrire n importe quoi dans la base? (Sûreté) le réseau plante au milieu d une modification? (Concurrence) deux personnes modifient en même temps la base? NB : différence sûreté/sécurité (absence/présence d un adversaire) Skander Zannad et Judicaël Courant 7

Solutions : Sécurité Contrôle d accès Sûreté/Concurrence Gestion de transactions. Sécurité : difficile à assurer mais on a une idée de ce que c est. Transactions : qu est-ce? Skander Zannad et Judicaël Courant 8

3.4 Notion de transaction Transaction : séquence de commandes SQL à exécuter ; surlesquels on garantit les propriétés ACID 1. ACID : Atomicité Cohérence Isolation Durabilité 1. Rien à voir avec Lucy in the Sky with Diamonds. Skander Zannad et Judicaël Courant 9

Atomicité Une transaction échoue en entier ou réussit en entier Exemple : On enlève 100 euros d un compte bancaire pour les ajouter à un autre. En cas de problème sur la deuxième opération, on veut éviter que la première soit enregistrée. Skander Zannad et Judicaël Courant 10

Cohérence À la fin d une transaction, on doit avoir une base cohérente. Exemple : on ne veut pas supprimer une personne de notre base cinématographique si la table des films y fait référence. Skander Zannad et Judicaël Courant 11

Isolation Les états intermédiaires de la base durant une transaction sont invisibles à tout autre utilisateur de la base. Skander Zannad et Judicaël Courant 12

Exemple sur un système de réservation de places de spectacles. Vous avez une place au balcon, vous la changez pour une place dans l orchestre. Deux scénarios à éviter : 1. Vous libérez la place, un autre client réserve les deux places restantes et vous n avez plus de place! 2. Vous prenez la place orchestre, un autre client vient, constate qu il n y a plus de place disponible, vous libérez la place balcon et une place reste invendue! Skander Zannad et Judicaël Courant 13

Autrement dit : le système doit garantir que l exécution parallèle (simultanée) de deux transactions se passe comme si les deux transactions avaient eu lieu de façon séquentielle (l une après l autre). Skander Zannad et Judicaël Courant 14

Durabilité Une fois que la transaction a été acceptée, elle reste enregistrée même si un problème survient. Exemple : on vous confirme votre achat d un billet de train (par le web), une coupure électrique a lieu à la SNCF. Avez-vous perdu 100 euros? Skander Zannad et Judicaël Courant 15

Les SGBD sont ACID Les SGBD : comportent une notion de transaction ; permettent de valider la transaction en cours (commit) ou de l annuler (rollback) ; Skander Zannad et Judicaël Courant 16

Les SGBD garantissent les propriétés ACID à condition : d une mise en œuvre correcte sur le plan logiciel (en particulier utilisation correcte des transaction) ; d une mise en œuvre correcte sur le plan matériel ; sous des conditions opérationnelles raisonnables (coupure électrique ok, bombe atomique ko). Skander Zannad et Judicaël Courant 17

3.5 Résumé : client-serveur Le passage en réseau soulève des problèmes : de sécurité qu on sait à peu près résoudre ; de concurrence pour lequel on utilise des transactions. Mais une architecture client SQL/serveur SQL ne répond en général pas à tous les besoins, c est pourquoi on l étend en une architecture dite 3-tiers. Skander Zannad et Judicaël Courant 18

4 Architecture 3-tiers Skander Zannad et Judicaël Courant 19

4.1 Les tiers selon Pagnol (Marius) CÉSAR : Tu mets d abord un tiers de curaçao. Fais attention : un tout petit tiers. Bon. Maintenant, un tiers de citron. Un peu plus gros. Bon. Ensuite, un BON tiers de Picon. Regarde la couleur. Regarde comme c est joli. Et à la fin, un GRAND tiers d eau. Voilà. MARIUS : Et ça fait quatre tiers. CÉSAR : Exactement. J espère que cette fois, tu as compris. (Il boit une gorgée du mélange). MARIUS : Dans un verre, il n y a que trois tiers. CÉSAR : Mais, imbécile, ça dépend de la grosseur des tiers! Skander Zannad et Judicaël Courant 20

Attention : en matière de bases de données, «tiers» ne signifie pas 1/3 mais «couche». On peut donc avoir des architecture 4-tiers. Skander Zannad et Judicaël Courant 21

4.2 Motivations Besoins pour une application classique utilisant une BD : Être utilisable par des gens réfractaires à SQL ordinaires ; Gérer la logique de l application (par exemple, valider un paiement bancaire) ; Gérer les données. Skander Zannad et Judicaël Courant 22

Ces besoins conduisent à une structuration en trois couches : 1. Couche présentation : l interface utilisateur ; 2. Couche logique (ou applicative, ou métier) : gère la logique de l application (par exemple, déclencher l envoi d un bien acheté après paiement) ; 3. Couche accès aux données. Skander Zannad et Judicaël Courant 23

4.3 En pratique On trouvera : 1. Un (logiciel) client graphique (interface graphique) ; 2. Un serveur applicatif ; 3. Un serveur de base de données. Le serveur applicatif répond aux requêtes du client en consultant le serveur de base de données. Skander Zannad et Judicaël Courant 24

Le client et les serveurs peuvent être ou non sur la même machine. En général : 1. Le client est sur un ordinateur de bureau ; 2. Les deux serveurs sont sur une même machine puissante ; 3. On met les serveurs sur des machines différentes si le travail à fournir est trop important pour une seule machine. Skander Zannad et Judicaël Courant 25

4.4 Problème Programmer une interface graphique est très long et coûteux : Parce que c est difficile à tester automatiquement ; Parce qu il y a une grande variété de machines clientes ; Parce que programmer une interface graphique sur l OS le plus répandu (MS-Windows) est particulièrement pénible (sans comparaison avec son concurrent principal) ; Et de plus, c est compliqué à déployer (il faut l installer sur chaque machine). Skander Zannad et Judicaël Courant 26

4.5 Un peu d histoire 1993 Invention d un système de documentation hypertexte appelé world wide web. Permet de distribuer des documents qui peuvent avoir des liens vers d autres documents distribués de la même façon. 1995 (env.) Extensions au protocole pour permettre d interagir avec le serveur et non juste de lire des documents. Skander Zannad et Judicaël Courant 27

4.6 Le client graphique universel Le navigateur web est devenu le client graphique universel : Disponible sur toutes les plates-formes ; Déjà installé sur toutes les machines de bureau. Skander Zannad et Judicaël Courant 28

4.7 Applications web Nom donné aux applications dont l interface est le navigateur web. Évolution à mentionner : Le navigateur web ne connaît rien à l application ; Donc il faut lui dire quelles données présenter et comment : ça s ajouter au travail du serveur applicatif. Défaut des applications web : souvent moins réactives que des vraies applications. Mais ça s améliore nettement. Skander Zannad et Judicaël Courant 29

Technologies les plus souvent utilisées : LAMP Linux pour l OS ; Apache comme serveur Web ; PHP langage spécialisé pour les applications web (utilisé en conjonction avec Apache) ; MySQL comme serveur de base de données. Skander Zannad et Judicaël Courant 30

5 Projet : réalisation d une application But : réaliser une application permettant de consulter (voire de modifier) une base de données. Le cadre : On utilisera SQLite et non un serveur de base de données ; On utilisera python pour la partie applicative ; Chacun fera tourner l application sur sa machine (celle où tourne le navigateur) et non sur un serveur ; On se préoccupera au minimum des questions de sécurité et de gestion des transactions. Skander Zannad et Judicaël Courant 31

5.1 SQLite et python Module standard pour l utilisation de sqlite3 : import sqlite3 Skander Zannad et Judicaël Courant 32

Connexion et création d un curseur On se connecte à la base de données. En général, on donne le nom de la machine où est le serveur de base de données mais pour SQLite, on donne juste le nom du fichier : conn = sqlite3. connect ( f i l m s. db ) On crée ensuite un curseur (objet servant à traiter les réponses de la base) : c = conn. cursor () Skander Zannad et Judicaël Courant 33

Exécution de requêtes On peut alors exécuter des requêtes : c. execute ( " " " SELECT FROM PERSONNE WHERE prenom = C l i n t " " " ) Attention : c.execute ne retourne pas la réponse mais demande juste à la base de données de calculer la réponse. Skander Zannad et Judicaël Courant 34

Récupération des résultats On peut ensuite récupérer la réponse, ligne par ligne : >>> c. fetchone () (3, u Eastwood, u C l i n t, u 1930 05 31 ) >>> c. fetchone () >>> (retourne None quand toutes les lignes ont été retournées). Skander Zannad et Judicaël Courant 35

Ou en une seule fois : >>> c. execute ( " " " SELECT FROM PERSONNE " " " ) <sqlite3. Cursor object at 0x7f7ff6f375e0> >>> c. fetchall () [(1, u Kubrick, u Stanley, u 1928 07 26 ), (2, u S p i e l b e r g, u Steven, u 1946 12 18 ), (3, u Eastwood, u C l i n t, u 1930 05 31 ), (4, u Cumberbatch, u Benedict, u 1976 07 19 ), (5, u Freeman, u Martin, u 1971 09 08 ), (6, u Leone, u Sergio, u 1929 01 03 ), (7, u McGuigan, u Paul, u 1963 09 19 ), (8, u S e l l e r s, u Peter, u 1925 09 08 )] Skander Zannad et Judicaël Courant 36

On peut aussi itérer sur le curseur : >>> c. execute ( " " " SELECT FROM PERSONNE " " " ) <sqlite3. Cursor object at 0x7f7ff6f375e0> >>> for r in c : print r (1, u Kubrick, u Stanley, u 1928 07 26 ) (2, u S p i e l b e r g, u Steven, u 1946 12 18 ) (3, u Eastwood, u C l i n t, u 1930 05 31 ) (4, u Cumberbatch, u Benedict, u 1976 07 19 ) (5, u Freeman, u Martin, u 1971 09 08 ) (6, u Leone, u Sergio, u 1929 01 03 ) (7, u McGuigan, u Paul, u 1963 09 19 ) (8, u S e l l e r s, u Peter, u 1925 09 08 ) Skander Zannad et Judicaël Courant 37

>>> Skander Zannad et Judicaël Courant 38

Transactions Si on a effectué des modifications, on peut les valider avec conn. commit () ou les annuler avec conn. rollback () Quand on a terminé, on peut fermer la connexion. Penser à valider les changements auparavant s il y en a! conn. close () Skander Zannad et Judicaël Courant 39

Requêtes paramétrées Comment écrire une fonction prenant en argument un curseur et la clé primaire d une personne et retournant l enregistrement ayant cette clé primaire? La méthode execute accepte un second argument qui est un n-uplet de paramètres. Les «?» dans la requête seront alors remplacés par les valeurs données : Skander Zannad et Judicaël Courant 40

def personne (c, id ) : p = ( id, ) # l e 1 u p l e t des param è t r e s req = " " " SELECT FROM PERSONNE WHERE i d =? " " " c. execute ( req, p ) r = c. fetchall () assert len ( r ) == 1 # i d e s t une c l é p r i m a i r e return r [0] Skander Zannad et Judicaël Courant 41

Attention : essayer de construire soi-même la chaîne à la main (en concaténant """ SELECT FROM PERSONNE WHERE id = """ avec str(id)) est une grave erreur car risque d ouvrir la porte à des attaques par injection de code SQL (cf http://xkcd.com/327/). problème de sécurité No 1 des applications web ; nombre de victimes : supérieur à 10 8 : Fév. 2002 200 000 numéros de cartes de crédit exposés ; Août 2009 vol de 130 millions de numéros de cartes de crédit ; Déc 2009 vol de 32 millions de mots de passe de Rockyou ; Juin 2011 vol d un milion de mots de passe chez Sony. Skander Zannad et Judicaël Courant 42