Deployware

J. Dubus - LIFL

Le déploiement de systèmes distribués autonomiques est un véritable cauchemar pour les administrateurs systèmes. Ils doivent prendre en compte l'hétérogénéité de l'infrastructure répartie (différents systèmes d'exploitation, protocoles d'accès à distance et de transfert de fichiers), l'hétérogénéité des logiciels à déployer et de leur protocole de contrôle, l'orchestration des tâches élémentaires de déploiement (téléchargement, installation, configuration, activation, déactivation et déinstallation des logiciels) et la gestion des dépendances entre logiciels. De plus, il faut prendre en compte le caractère ouvert des environnements cibles. En effet, dans le cadre d'applications ubiquitaires ou d'applications sur les grilles de calcul, des machines peuvent apparaître ou disparaître dynamiquement, la topologie du domaine de déploiement du système s'en trouve alors modifiée. Le système déployé doit donc réagir aux fluctuations pour garder un état stable et assurer une continuité de service. La taille de ces systèmes distribués devenant désormais considérable, il n'est plus envisageable que ces réactions soient pilotées uniquement par un administrateur humain, et nécéssite d'injecter des comportements ou politiques autonomiques à ces systèmes.

DeployWare est un cadre pour la description, le déploiement et l'administration de systèmes distribués autonomiques constitués de piles de logiciels arbitrairement complexes, hétérogènes et distribuées sur toutes sortes d'infrastructures réparties (PDAs, réseaux locaux de stations de travail et grilles de calculateurs tel que Grid'5000). Ce cadre propose un langage spécifique au domaine du déploiement (un DSL pour le déploiement) et une machine virtuelle pour ce langage.

Le langage DeployWare est composé d'un méta-modèle des concepts récurrents du domaine du déploiement, une notation graphique sous la forme d'un profil UML 2 des diagrammes de déploiement et une syntaxe concrète sous la forme d'un langage dédié de description d'architecture (ADL). La machine virtuelle de DeployWare est un interprète de ces descripteurs d'architecture. Cette machine, nommée Fractal Deployment Framework (FDF), est implantée sous la forme de composants Fractal réifiant les logiciels à déployer ainsi que l'infrastructure répartie. Cette machine est capable de s'auto-déployer dans un environnement réparti afin d'être elle-même répartie. Le méta-modèle DeployWare comporte également des concepts inhérents à la définition de comportements autonomiques. Ces concepts sont modélisés de manière à rendre possible un certain nombre de vérifications statiques liées au comportement des politiques d'autonomie, telles que la détection de cycles dans les réactions autonomiques. Des composants particuliers de la machine virtuelle FDF sont générés à partir de la description des politiques d'autonomie, et sont en charge de l'exécution des reconfigurations des autres composants FDF réifiant le système. Les reconfigurations dynamiques sont ainsi effectuées tout à fait indépendamment des technologies sous-jacentes qui composent le système. De nombreuses expérimentations ont été réalisées au dessus de DeployWare pour déployer et administrer divers systèmes distribués composés de logiciels hétérogènes tels que la machine virtuelle QEMU, la base de données MySQL, l'environnement d'exécution Java (JRE), l'environnement Apache Ant, le modèle de composants Fractal/Julia, le conteneur de servlets Tomcat, le conteneur JBI PEtALS, des serveurs d'applications JEE comme JOnAS, JBoss, Geronimo et GlassFish, des moteurs d'orchestration BPEL comme Orchestra et ActiveBPEL, des applications Service Component Architecture (SCA) au dessus de Apache Tuscany, des systèmes autonomiques comme Jade et JASMIne, l'infrastructure répartie OpenCCM pour des applications à base de composants CORBA. Pour cette dernière, plus de 4500 serveurs OpenCCM ont été déployés automatiquement sur plus de 1000 machines de Grid'5000.

Version à imprimerDernière mise à jour : November 02, 2007, at 05:02 PM