des Systèmes Logiciels et Applications Réparties GOAL/ADAM Team Laboratoire d Informatique Fondamentale de Lille & INRIA Institut National des Télecommunications, Evry 16 janvier 2008
Plan Introduction 1 Introduction 2 Complexité Hétérogènéité Validation Passage à l échelle 3 Le méta-modèle FDF Déploiement distribué avec explorer 4 5
Plan Introduction 1 Introduction 2 Complexité Hétérogèneité Validation Passage à l échelle 3 Le méta-modèle Déploiement distribué avec explorer 4 5
Introduction : Déploiement de sytèmes logiciels distribués Définition Déploiement = ensemble de tâches élementaires à orchestrer dans un ordre bien défini Installation/désinstallation de logiciels, intergiciels, bibliothèques, éxecutables sur des nœuds distants, Configuration de logiciels et des environnements des nœuds, Démarrage/arrêt de serveurs d applications, Instanciation des applications, etc.
Introduction : Déploiement de sytèmes logiciels distribués Exemple Un système d information d entreprise utilisant 3 serveurs dédiés Serveur Web moteur de servlets/jsp TomCat (composants Web) Axis (service Web) Serveur d applications JEE JOnAS (composants métiers) SGBD serveur MySQL Nombreuses dépendances (techniques ou métiers)
Exemple de système logiciel distribué et hétérogène
Introduction : Déploiement de sytèmes logiciels distribués Domaines cibles variés et multi-échelles Réseaux locaux, Informatique mobile et environnements ubiquitaires, Grappes et grilles de calculs, etc. Divers modes d exècution du processus de déploiement Tâches parallèles et/ou séquentielles
Introduction : Déploiement de sytèmes logiciels distribués Bilan Déploiement = activité complexe Souvent réalisé par les administrateurs Automatisation nécessaire Nombreux challenges à résoudre Déploiement de systémes logiciels réparties, héterogènes et à large échelle Un cauchemar pour les administrateurs Evolutions technologiques et conceptuelles (paradigmes) Nouveaux domaines cibles: Grid Computing, environnements ubiquitaires
Plan Introduction Complexité Hétérogèneité Validation Passage à l échelle 1 Introduction 2 Complexité Hétérogèneité Validation Passage à l échelle 3 Le méta-modèle Déploiement distribué avec explorer 4 5
Introduction Complexité Hétérogèneité Validation Passage à l échelle 1 Complexité 2 Hétérogèneité 3 Validation 4 Passage à l échelle
(1) Introduction Complexité Hétérogèneité Validation Passage à l échelle Complexité Dépendances entre logiciels Le déploiement de logiciel B dépend de logiciel A Le démarrage de logiciel B dépend de l installation et de la configuration de logiciel A Orchestration des tâches de déploiement Logiciel A déployé avant logiciel B, {Logiciel A, {logiciel B}} déployés séquentiellement, {logiciel B} en parallèle Logiciel B à démarrer après l installation de logiciel A Administration des grandes infrastructures logicielles Monitoring/gestion du système déployé?
(2) Introduction Complexité Hétérogèneité Validation Passage à l échelle Hétérogèneité matérielle et logicielle Hétérogèneité de l infrastructure physique cible hardware, réseau, système d exploitation, shells : Bourne-Shell, C-Shell, Windows MS-DOS, etc., mécanismes de déploiement bas-niveau : protocoles d accès distants : SSH, Telnet, rlogin, protocoles de transfert de fichiers : FTP, HTTP, SCP
(2) Introduction Complexité Hétérogèneité Validation Passage à l échelle Hétérogèneité matérielle et logicielle Hétérogèneité du système à déployer Différents paradigmes : programmation parallèle, approche à base de composants ou d aspects, conception orientée objets, etc. Pléthore de plates-formes d exécution / intergiciels : systèmes SOA, JEE, CCM, Fractal, intergiciels pour les grilles : GridCCM, Globus, ProActive... bibliothèque MPI, etc. Granularité des logiciels : intergiciels, serveurs d applications, composants logiciels, objets, bibliothèques, exécutables, systèmes d exploitation virtuels!
(3) Introduction Complexité Hétérogèneité Validation Passage à l échelle Validation statique du déploiement Objectif: Assurer la fiabilité du déploiement, ainsi que l intégrité du système Vérification des dépendances logicielles Dé-déploiement (repliement) Prévention des conflits de ressources : Partage du système de fichiers, numéro de port, etc. entre les logiciels
(4) Introduction Complexité Hétérogèneité Validation Passage à l échelle Passage à l échelle Très large échelle : Environnements ubiquitaires : nombre de terminaux impliqués potentiellement élevé Grilles informatiques, interconnexion entre grilles nationales (e.g. grille française Grid 5000 & grille japonaise NAREGI) : plusieurs milliers de nœuds Problème: limitations des ressources physiques pour déployer (automatiquement, de manière optimale) sur des milliers de nœuds : Nombre de sockets ouvertes Mémoire disponible Utilisation du CPU, etc.
Plan Introduction 1 Introduction 2 Complexité Hétérogèneité Validation Passage à l échelle 3 Le méta-modèle Déploiement distribué avec explorer 4 5 Le méta-modèle Déploiement distribué avec explorer
Le méta-modèle Déploiement distribué avec explorer Le méta-modèle FDF Déploiement distribué avec explorer Expériences menées
Le méta-modèle Déploiement distribué avec explorer Un framework pour la description, le déploiement et l administration de systèmes hétérogènes et distribués, basé sur: Un DSL reposant sur un meta-modèle capturant les concepts abstraits du déploiement Une machine virtuelle d exécution (FDF), une bibliothèque de composants de déploiement bas-niveau Une console graphique d administration ( explorer)
Le méta-modèle Déploiement distribué avec explorer 3 rôles définis Expert logiciel: definition des procédures de déploiement pour une technologie donnée Administrateur système: configuration réseau, protocoles, @IP, nœuds, information d authentification utilisateur, etc. Utilisateur final: description des configurations à déployer
: Vue d ensemble Le méta-modèle Déploiement distribué avec explorer
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer Objectif Capture des concepts abstraits du déploiement Personnalité, entité logicielle, propriété, dépendance, nœud (physique), procédure, instruction... Indépendemment du paradigme, de la technologie et de la granularité Une syntaxe concrète, basée sur un ADL, pour décrire les systèmes à déployer
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer Méta-modèle en deux paquetages Paquetage TechnoExpert : definition des concepts manipulés par les experts logiciels d une techno donnée Paquetage SystemAdmin : utilisé par les administrateurs et utilisateurs finaux pour définir des modèles représentant leurs processus de déploiement
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer Principaux concepts du méta-modèle Personality : une techno donnée SoftwareType & SoftwareInstance : entité logicielle et instance Procedure : tâche (e.g. install, start, configure, stop...) Instruction : sous-tâche de procédure PropertyType & Property : propriétés configurables des logiciels dependencies : spécification des dépendances entres logiciels HostType & HostInstance : nœud physique et instance
Le méta-modèle Déploiement distribué avec explorer
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer Validation statique de modèles i) Vérification des dépendances logiciels ii) Vérification des procédures/instructions iii) Prévention des conflits de ressources
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer i) Vérification des dépendances entre logiciels Si un logiciel A dépend d un logiciel B, vérifie qu une instance de logiciel B est présente pour chaque instance de logiciel A déclarée par l utilisateur final Conformance de types : dépendances entre SoftwareInstance (relation DependsOn dans le méta-modèle)
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer ii) Vérification des procédures/instructions Pour chaque procédure (e.g. install/start), la procédure inverse doit exister (resp. uninstall/stop) Ceci assure le repliement correct du système Symétrie des instructions qui composent les procédures, afin d éviter les effets de bords (Ex. couple {launch/kill process})
Le méta-modèle Le méta-modèle Déploiement distribué avec explorer iii) Conflits de ressources Vérifications statiques sur les ports et systèmes de fichiers Ex. - 2 serveurs d applications écoutent sur le même n de port - 2 logiciels utilisent le même répertoire d installation (sur une même machine)
Le méta-modèle Déploiement distribué avec explorer
Le méta-modèle Déploiement distribué avec explorer Aspects techniques Plate-forme à base de composants Modèle de composants OW Fractal 2 couches Software components : composants symbolisant les personnalités, résultat de la projection des modèles (TechnoExpert) Deployment components : bibliothèque de composants masquant les méchanismes de bas-niveau du déploiement, ainsi que l infrastructure physique
Le méta-modèle Déploiement distribué avec explorer Everything s reified as components Chaque concept du méta-modèle est projeté vers un composant Ainsi, tout dans FDF, est réifié sous la forme de composants Méchanismes bas-niveau du déploiement : protocoles de transfert de fichiers : FTP, HTTP, SCP... protocoles d accès à distance : SSH, Telnet, rlogin... shells : SH, CSH, Microsoft MS-DOS... variables d environnements, etc. Logiciels à déployer composite Software Nœuds physiques composite Host Automate pour l orchestration et la gestion des dépendances
FDF Le méta-modèle Déploiement distribué avec explorer Les composants bas-niveau (dits de déploiement) pour masquer l hétérogénéité
FDF Le méta-modèle Déploiement distribué avec explorer Le composite Software Représentation d un logiciel avec FDF Tous les logiciels (i.e. entités des personnalités) héritent de ce composant Un Software est composé de : propriétés configurables : home, chemin vers l archive, port... procédures : install, configure, start, stop, uninstall - contiennent les instructions (composants clients des composants de déploiement) références vers d autres Software (i.e. les dépendances) composants d automate
Composite Software Introduction Le méta-modèle Déploiement distribué avec explorer
Le méta-modèle Déploiement distribué avec explorer Un exemple concret: JOnAS SERVER (expert logiciel)
Le méta-modèle Déploiement distribué avec explorer Une instance de JOnAS (administrateur/utilisateur)
Le méta-modèle Déploiement distribué avec explorer Déploiement distribué avec Machine d exècution FDF Déployée sur un nœud quelconque Déploie sur les autres nœuds Problème Déploiement à très large échelle? e.g. 5 000, 10 000 ou 50 000 nœuds... Ressources physiques limitées sur une machine Sockets, mémoire, temps CPU, nombre de threads, etc.
Le méta-modèle Déploiement distribué avec explorer Déploiement distribué avec Distributed Idée: utilisation de plusieurs nœuds pour déployer Déploiement de plusieurs serveurs FDF... avec FDF! Chaque serveur FDF a à sa charge, une partie du processus globale du déploiement Exemple Déploiement sur 5000 nœuds, avec 100 serveurs de déploiement 500 nœuds / serveur FDF
Le méta-modèle Déploiement distribué avec explorer Déploiement distribué avec
Le méta-modèle Déploiement distribué avec explorer explorer Interface graphique permettant de charger les descriptions Exploration hiérarchique du système décrit, i.e. les nœuds et logiciels Actions sur le système Visualisation graphique des dépendances entre logiciels
explorer Introduction Le méta-modèle Déploiement distribué avec explorer
Performances Introduction Le méta-modèle Déploiement distribué avec explorer (temps d exécution du processus de déploiement) / (nombre de nœuds)
Performances Introduction Le méta-modèle Déploiement distribué avec explorer (temps d exécution du processus de déploiement) / (nombre de nœuds) / (nombre de serveurs FDF)
Plan Introduction 1 Introduction 2 Complexité Hétérogèneité Validation Passage à l échelle 3 Le méta-modèle Déploiement distribué avec explorer 4 5
ProActive Cadre pour programmer, composer et déployer des applications distribuées sur des infrastructures de grilles GoDIET Outil de déploiement pour intergiciel de grilles. Non lié à une technologie donnée ou modèle de programmation quelconque ProActive permet de déployer des serveurs d applications ProActive GoDIET... le middleware DIET peut potentiellement déployer ProActive et DIET
GADe/ADAGE (S. Lacour) Processus générique, et outil de déploiement pour un déploiement automatique sur grilles de calcul Decription des applications séparée de la description des ressources Entrées pour la phase deployment planning Projection des processus de l application vers nœuds sélectionnés Plan de déploiement executé par ADAGE Spécialisations de l approche pour déploiement d applications à base de composants CORBA, et applications MPI
Vs GADe/ADAGE Raffinement des 3 phases considérées par l architecture GADe Installation de fichiers, démarrage de processus et configuration Validation du déploiement Perspective intéressante pour : concept de virtual host
TakTuk Outil pour déployer en parrallèle (exécution de commandes) sur un grand nombre de nœuds Auto-déploiement du moteur TakTuk pour le passage à l échelle Egalement distribué Gestion des dépendances, orchestration, plus fine granularité des tâches de déploiement peut wrapper l outil TakTuk (personnalité dédiée)
KaDeploy Déploiement d images systèmes sur des nœuds distants Construction d images pré-configurées e.g. Déploiement du middleware Globus sur Grid 5000 Construction d images très coûteux: configuration du logiciel et des variables d environnements Orchestration dynamique du processus de déploiement est une approche alternative pour configurer un système à l exécution
OMG D&C Spécification Deployment and Configuration of Component-based Applications Concepts géneriques pour exprimer le déploiement des applications métiers indépendamment du modéle sous-jacent Rien sur le déploiement de la couche {intergiciel/serveur d applications} Adresse les architectures orientées service (SOA) Vérification, orchestration et passage à l échelle
Plan Introduction 1 Introduction 2 Complexité Hétérogèneité Validation Passage à l échelle 3 Le méta-modèle Déploiement distribué avec explorer 4 5
Conclusion Introduction Déploiement automatisé de systèmes distribués, hétérogènes sur de larges infrastructures Un méta-modèle capturant les concepts abstraits du déploiement logiciel Décrire le processus de déploiement d un système Quelque soient le paradigme, la technologie et le runtime, ainsi que la granularité Validation des grandes expériences indispensable!
Conclusion Introduction Personalités supportées Systèmes CORBA, intergiciel OpenCCM et applications CCM, Services/outils pour la grille (OAR/OARGrid), Systèmes SOA (SCA, Apache Tuscany, processus BPEL, moteurs Orchestra et ActiveBPEL, PEtALS JBI), Systèmes JEE (Apache Geronimo, JBoss, JOnAS, SUN GlassFish), et systèmes autonomes JASMINe/Jade Systèmes Fractal (implémentation Julia, Fractal ADL and RMI),
Conclusion Introduction Personalités supportées Conteneur de servlets Apache Tomcat, daemon HTTPd, Java Runtime Environment (JRE), JamVM, Outil Apache Ant, registre OpenLDAP, SGBD comme le serveur MySQL, Machines virtuelles avec QEMU et images système (ISO), Nexuiz (doom-like en réseau).
Perspectives Assignation automatique des logiciels sur les nœuds physiques (mappings) Plus proche de la philosophie de la grille Comportement d autonomie lors du déploiement e.g. Déploiement automatique (reconfiguration dynamique du système) si nouveaux nœuds disponibles, panne, etc.