User:Gissel.fernandez/sandbox/Cloud Configuration

Cloud Configuration is the process of setting hardware and software details for elements of a cloud environment to ensure that they can interoperate and communicate.

Deploying an application to a cloud environment has recently become very trendy, since it offers many advantages such as improving reliability or scalability. These cloud environments provide a wide range of resources at different levels of functionality, which must be appropriately configured by stakeholders for the application to run properly.

Challenges
Cloud computing has recently emerged as a major trend in distributed computing. This layered model, as defined by the NIST [1], enables the configuration of many computing resources that can be provisioned to support the deployment of applications, provided as Software-as-a-Service(SaaS). Many cloud providers, either at Infrastructure(IaaS) or Platform(PaaS) level, propose different services and pricing models. Due to this variability, developers face three key challenges when deploying an application to the cloud. The first challenge is to select a cloud environment that complies with both functional and non-functional requirements. Among the plethora of cloud providers, developer shave to(i)find the ones that provide all functionalities required by the application to run properly, e.g., the correct type of application server and database, and then(ii) select the one that proposes the correct quality for these functionalities, e.g., a solution with at least 4 GB of RAM with as much CPU power as possible. The second challenge is to define a proper configuration. Dealing with clouds variability leads to complex and error-prone configuration choices that are usually made in an adhoc manner. Moreover, developers knowledge is not exhaustive and the way a cloud environment is configured can lead to inconsistencies between cloud services when running the application, whether this configuration is done by hand or using dedicated commands provided by cloud environments. The third challenge is to deploy in are liable way. Once a cloud environment is selected and a configuration is defined, developers have to avoid errors in the deployment process, in particular when defining environment configuration files and executing deployment scripts, to ensure the application will be deployed in a reliable way.