IFT604 Introduction Programmation client-serveur Plan Systèmes répartis Quelques définitions Services, serveurs, clients… Programmation client-serveur Système réparti Définition Système dont les composants matériels et logiciels situés sur des ordinateurs en réseau communiquent et coordonnent leurs actions seulement par échange de messages les ordinateurs peuvent être séparés par une distance quelconque : continents, même édifice, même pièce Conséquences Parallélisme Partage de ressources matérielles et logicielles Absence d’horloge globale Indépendance des bris et des fautes Internet intranet ISP % % % % backbone satellite link desktop computer: server: network link: Appareils portables et sans fil dans les systèmes répartis Internet Host intranet WAP gateway Wireless LAN Mobi le phone Laptop Printer Camera Host site Home intranet Service Une partie distincte d’un système d’information qui gère un ensemble de ressources présente leurs fonctions aux usagers et aux applications les seuls accès aux services se font à travers les opérations qu’ils exportent Serveur Un programme /processus qui s ’exécute sur un ordinateur en réseau accepte les requêtes des programmes qui s ’exécutent sur d ’autres ordinateurs active un service rend une réponse appropriée Client Les processus / programmes qui font des requêtes à un serveur Les requêtes et leurs réponses sont réalisées par le biais de messages Invocation à distance (remote invocation) interaction complète entre un client et un serveur, de l ’émission de la requête par le client jusqu ’à la réception de la réponse Clients vs serveurs Un même processus peut être à la fois client et serveur puisque les serveurs peuvent invoquer des opérations sur les autres serveurs. Défis des systèmes répartis Hétérogénéité : matériel, réseaux, OS, langages… Ouverture : ajout / retrait dynamiques d’appareils et de services Sécurité : confidentialité, intégrité, disponibilité “Scalability” : être capable de passer de 10 usagers à 1 000 000, e.g. web Gestion des fautes : les fautes et les bris sont indépendants et répartis Parallélisme : coordination, synchronisation, etc. Transparence : des réseaux, des appareils… Architecture Eléments de base : processus et objets Etape 1 simplifier et abstraire les fonctions des composants individuels Etape 2 distribution des composants sur le réseau, en portant attention à la répartition des données et de la charge spécification des interactions entre les composants, en particulier leurs rôles fonctionnels et les patterns de communication Rôles fonctionnels Processus serveurs Processus clients Processus pair (peer) aide à identifier les responsabilités de chacun et ainsi d ’estimer leur charge ainsi que l ’impact de leurs défaillances permet de les placer sur le réseau de manière à rencontrer les critères de performance et fiabilité Modèle client-serveur Client invoc ati on resul t invoc ati on Server resul t Server Client Key: Proc ess : Computer: Modèle de base Un processus client interagit avec un processus serveur situé sur un autre ordinateur pour accéder aux ressources que le serveur gère. Architecture peer-to-peer Application Application Coordination code Coordination code Application Coordination code Tous les processus jouent un rôle similaire et coopèrent comme des pairs pour effectuer le calcul réparti sans distinction entre clients et serveurs Bill Joy, Dave Lyon, James Gosling, Peter Deutsch 1. 2. 3. 4. 5. 6. 7. 8. Serveur plante, etc. ping T-min (EU-USA) = 30 ms Perte de paquets vs taille des packets Intégrer la sécurité dès le départ --quels seront les privilèges requis pour les comptes DNS, configuration des serveurs, etc. Dans une entreprise, plusieurs administrateurs… qui contrôlent la sécurité, les comptes, etc. Ajouter les coûts de sérialisation des données + coût de l’infrastructure de transport (routeurs, etc.) Interopérabilité : ne pas utiliser les protocoles propriétaires, e.g. Ariane Controls Autres références Arnon Rotem-Gal-Oz, Fallacies of Distributed Computing Explained http://www.rgoarchitects.com/Files/fallacies.pdf Ingrid Van Den Hoogen, Deutsch's Fallacies, 10 Years After, Java Sys-con, Published Jan. 8, 2004 http://java.sys-con.com/read/38665.htm Jim Waldo, et al., A Note on Distributed Computing, Sun Microsystems Labs, nov. 1994, SMLI TR-94-29 http://citeseer.ist.psu.edu/waldo94note.html