2.1 Cloud Models
Since cloud is a complex technology, it has been
layered by NIST (NIST, 2011) in three main models.
SaaS (Software as a Service): supplies the user
with the provider's application, and users do not
manage or control the underlying cloud
infrastructure including network, operating system,
and application capabilities. An example of SaaS
application is the e-mail service such as Google
mail, where the customer simply uses the
application, but doesn't know the software structure
and is not responsible for its maintenance.
PaaS (Platform as a Service): the provider
supports users with a framework for application
development, so that they can build and deploy their
own software. Users do not manage or control the
underlying cloud infrastructure including network,
operating system, and application capabilities, but
have control over the deployed applications and
possibly environment configurations.
IaaS (Infrastructure as a Service): user is
provided with fundamental computing resources that
he can use to deploy and run arbitrary software.
Users don't manage or control the underlying cloud
infrastructure but have control over operating
system, storage, deployed applications, and possibly
limited control over some networking components.
Several other "as a Service" are emerging
recently, most notable are Database as a Service
(DBaaS) and Backup as a Service (BaaS). The trend
is to shift any functionality to a service provided
through the Internet, that will bring to the dawn of
the XaaS, "Anything as a Service" (Dixon, 2014).
Some examples of PaaS software are OpenShift
(OpenShift, 2014), Salesforce (Salesforce, 2014),
AppScale (AppScale, 2014), CloudControl
(CloudControl, 2014), Cloud Foundry (Cloud
Foundry, 2014), Microsoft Azure Web Sites (Azure,
2014). Regarding the IaaS, instances of well known
systems are Amazon Elastic Compute Cloud
(Amazon EC2, 2014), OpenStack (OpenStack,
2014), Apache Hadoop (Apache Hadoop, 2014),
OpenNebula (OpenNebula, 2014).
Among all these options, we chose to use Cloud
Foundry as PaaS and OpenStack as IaaS, because
they are currently the leading projects in their
category. Both are open source, developed by
several different contributors, and supported by a
broad community; more information are provided in
Section 2.3.
2.2 Benefits and Downsides
Such technology can bring several benefits to users.
At first, a cost saving factor for a company. A user
can rent IT resources from a cloud instead of buying
a physical machine, allowing to start using few
resources at first and increase only when there is a
further need. In this way the company avoids the
initial hardware costs.
Then, the pay-as-you-go offer lets consumers
pay only for the used computing resources on a
short-term basis (for example, processors or storage
resources by hours), and release them when are not
needed anymore. The result is an optimization of
resource usage, instead of having an own server idle
during low workload periods, thus preventing the
overprovisioning issue. Another aspect is the
flexibility provided by the virtually infinite
computing capacity that cloud makes available; this
relieves the customer from the task to foresee near
future resource needs and relative resource provision
plans, avoiding the underprovisioning issue. Finally,
the cloud data center itself manages the underlying
infrastructure and technical problems, so that
customers do not have to concern about IT
maintenance nor to acquire a wide hardware
competence.
However, significant challenges are yet to be
addressed. Cloud is a young computing model and
many systems are still in a development state: a lack
of standard Application Public Interfaces (API)
brings providers to use proprietary interfaces in their
services, thus restricting the ability for consumers to
move from a provider to another.
2.3 Cloud Foundry and OpenStack
Cloud Foundry is an open source cloud computing
Platform as a Service (PaaS) being developed by
several contributors, among which EMC, IBM,
Rackspace, and VMware can be mentioned. Cloud
Foundry is designed to support application
development with high productivity, taking into
account SaaS integration: it brings innovation in
application services and at the same times
incorporates heterogeneous cloud deployment
options to facilitate migration. As overviewed by
(Heller, 2014), Cloud Foundry provides easy to
install frameworks that support languages such as
Java, Node.js, Ruby and Go. Once an application
has been deployed, Cloud Foundry stores it in an
image which then is run within a container.
OpenStack is an open source system that
provides Infrastructure as a Service (IaaS) functiona-
lities. It comprises a series of components such as:
Keystone for identity management, Nova for
computing, Neutron for networking, Glace for image
IdentityManagementinCloudPlatformsusingVOMSandSPID
97