Recently, the demand for software as a service (SaaS) has witnessed an increasing interest, which has raised many challenges for SaaS management. One of these challenges is to deliver a high performance composite SaaS for users while optimizing the resources used. In this paper, we focus on the problem of SaaS placement. This problem occurs in the deployment of SaaS components in Cloud. It deals with the way a composite SaaS should be placed in a Cloud by the Cloud's provider such that its performance is optimal based on its estimated execution time. Previous work, including metaheuristic methods and particle swarm optimization, focuses on resolving the problem in a static environment.Moreover, in a Cloud data center, the workloads of applications and resources capacities keep changing over time, and the environment is dynamic, so the solution found for the initial placement may need to be reconfigured to maintain the SaaS performance and to optimize the resource used. As multiswarm technique has attracted increasing attention during the last decade, in this paper, we propose a new placement solution based on such technique enhanced with a cooperative learning strategy to cope with the dynamic aspect of the Cloud.
Cloud, MPSO, PSO, SaaS placement
INTRODUCTIONCloud computing is a distributed computing paradigm providing ubiquitous and on-demand network access to a shared pool of configurable computing resources (eg, servers, services, applications, network, storage, etc) that can rapidly provisioned and released with minimal effort or service provider interaction. 1 Stated another way, Cloud computing is the use of computing resources (software and hardware) that are delivered as a service over the Cloud on a pay-per-use basis.Cloud services are categorized into three service models. 2• Infrastructure as a service: It provides infrastructure components (eg, servers, processing, storage, network, and operating systems) to Cloud customers in the form of virtual machines (VMs). • Platform as a service: Cloud providers deliver a development platform, typically including operating system, programming language execution environment, database, and Web server. Application developers can develop and run their software solutions on a Cloud platform without the cost and complexity of buying and managing the underlying hardware and software layers.