Asynchronous, Hierarchical and Scalable Deployment of Component-Based Applications Vivien Qu´ ema 1 , Roland Balter 2 , Luc Bellissard 2 , David F´ eliot 2 , Andr´ e Freyssinet 2 , Serge Lacourte 2 1 INPG - Laboratoire LSR-IMAG (CNRS, INPG, UJF) - projet Sardes 2 ScalAgent Distributed Technologies INRIA Rhˆone-Alpes, 655 av. de l’Europe, 38334 Saint-Ismier Cedex, France Vivien.Quema@inrialpes.fr Abstract. The deployment of distributed component-based applications is a complex task. Proposed solutions are often centralized, which ex- cludes their use for the deployment of large-scale applications. Besides, these solutions do often not take into account the functional constraints, i.e. the dependences between component activations. Finally, most of them are not fault-tolerant. In this paper, we propose a deployment ap- plication that deals with these three problems. It is hierarchical, which is a necessary feature to guarantee scalability. Moreover, it is designed as a distributed workflow decomposed into tasks executing asynchronously, which allows an “as soon as possible” activation of deployed components. Finally, the proposed deployment application is fault-tolerant. This is achieved by the use of persistent agents with atomic execution. This deployment application has been tested and performance measurements show that it is scalable. 1 Introduction 1.1 Context and objectives As underlined by Emmerich in [1], it was claimed for a long time that object- orientation was the solution to software reusability. Nevertheless, the large num- ber of fine grained classes generated during object-oriented modelling induces a large number of dependencies between them, thus making it difficult to take classes out of the context in which they were developed. To overcome these problems, component models were elaborated. “A component is a unit of com- position that can be deployed independently and is subject to composition by a third party.” [2] First component models like COM or JavaBeans had their execution limited to just one machine. These component models have been extended to allow for distributed execution across multiple machines: .NET or EJB. These distributed technologies have induced a new approach of software development that is of- ten referred to as component-based development (CBD). CBD raises numerous challenges, such as distribution management, component discovery, integration of components with legacy software modules, etc. One of the major, not yet solved challenge is the deployment of distributed component-based systems. According to Carzaniga and al. [3], deployment is a collection of interrelated activities that form the deployment life-cycle. In this paper, we focus on the steps