Cloud computing has emerged as an open environment that provides computation, software, data access, and storage services without requiring end-user knowledge of the physical location and configuration of the system that delivers the services. Cloud computing describes a new supplement, consumption, and delivery model for IT services based on Internet protocols, and it typically involves provisioning of dynamically scalable and often virtualised resources. Cloud computing providers deliver applications via the Internet, which are accessed from desktop web browsers and mobile apps, while the business software and data are stored on servers at a remote location. At the foundation of cloud computing is the broader concept of infrastructure convergence and shared services. This type of data center environment allows enterprises to get their applications up and running faster, with easier manageability and less maintenance, and enables IT to more rapidly adjust IT resources (such as servers, storage, and networking) to meet fluctuating and unpredictable business demand. Most cloud computing infrastructures consist of services delivered through shared data-centers and appearing as a single point of access for consumers' computing needs. Commercial offerings may be required to meet service-level agreements (SLAs), but specific terms are less often negotiated by smaller companies.
In this context, the objective of this internship is to provide a support for the continuous management of systems deployed in the Cloud. In particular, we are interested in investigating the elasticity of component-based software architectures deployed in Cloud computing environments. Although Cloud providers are able to provision new instances of virtual machines on-the-fly depending on contextual conditions (load peaks, instance failures, etc.), the management of this elasticity at the application level fails to be properly covered. The purpose of this work is therefore to bring innovation in terms of self-management capabilities for Cloud computing environments. This includes the dynamic and scalable reconfiguration of software architectures deployed on a variable number of instances of virtual machines and Cloud providers. New paradigms for describing software architectures, new algorithms for implementing reconfigurations, and new protocols for ensuring the consistency of the architectures are examples of contributions expected in this work. These contributions will be assessed and integrated into the FraSCAti middleware platform and the FraSCAla architecture description framework.