• No results found

1.8 Publications

2.1.2 Cloud Computing

Cloud computing is a relatively new branch of distributed computing that has gained a lot of attention recently.

There is no universally accepted definition of what the Cloud computing really is. For example, Vaquero et al. in [VRMCL09] compare over 20 different definition of Clouds. We will adopt the definition from their work, as it strives to find the mini- mum common denominator of characteristics of Clouds proposed by other definitions. Therefore, we will define Clouds aslarge pool of easily usable and accessible virtualised resources (such as hardware, development platforms and/or services). These resources can be dynamically reconfigured to adjust to a variable load (scale), allowing also for an optimum resource utilisation. This pool of resources is typically exploited by a pay-per-use model in which guarantees are offered by the Infrastructure Provider by means of customised Service-Level Agreements (SLAs).

USA National Institute of Science (NIST) definition of Clouds [NIS] lists essential characteristics that Cloud model possesses:

• On-demand self-service. A consumer can unilaterally provision computing capa- bilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.

• Broad network access. Capabilities are available over the network and accessed through standard mechanisms, by a number of different client platforms (e.g. mobile phones, laptops and personal digital assistants (PDAs)).

2.1. DISTRIBUTED COMPUTING ENVIRONMENTS 23

• Resource pooling. The provider’s computing resources are pooled to serve mul- tiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand.

• Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in.

• Measured Service. Cloud systems automatically control and optimise resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g. storage, processing, bandwidth and active user accounts).

Just as there are many different definitions of Cloud computing, there are also many different surveys of the state-of-the-art in Cloud research, focusing on differ- ent aspects of Clouds (e.g. Zhang et al. [ZCB10], Rimal et al. [RCL09], Youseff et al. [YBDS08]). There is universal agreement in all of the surveys that there is very lit- tle standardisation in Cloud computing technologies. However, there are some common characteristics for all Cloud systems. Architecture of a cloud computing environment can roughly be divided into 4 layers (see Zhang et al. [ZCB10] (see Figure 2.1) :

• The hardware layer – the layer of physical resources of the cloud, including servers, routers, switches, power and cooling systems. Cloud physical resources mostly reside in large data centres.

• The infrastructure layer (or virtualisation layer) – this layer creates a pool of storage and computing resources by partitioning the physical resources using virtualisation techniques, such as VMWare [VMW] or Xen [Xen].

• The platform layer– where the infrastructure layer usually provides “raw” virtual machines, the platform layer build on top of it, adding operating system and application frameworks. The purpose of this layer is to provide users with higher- level frameworks for easier application development.

• The application layer – the layer of actual cloud applications.

Depending on which of these layers is offered as a service, cloud services are usually grouped into three categories [ZCB10]:

• Infrastructure as a Service – IaaS refers to on-demand provisioning of infrastruc- tural resources, for example Amazon EC2 [Ama].

Figure 2.1: Cloud computing architecture (see Zhang et al. [ZBC10])

• Platform as a Service – PaaS refers to on-demand provision of platform layer resources, such as Google App Engine [Goo] framework for development of Web applications and Microsoft Windows Azure [MSA].

• Software as a Service – SaaS refers to on-demand provisioning of applications over the Internet, for example Salesforce.com [Sal].

Cloud Computing Products

In the following, we briefly describe some of the most prominent and successful cloud computing products:

• Amazon Web Services is a set of cloud services, which includes the following services:

– Amazon Elastic Compute Cloud (Amazon EC2), which allows user to create, execute and manage server instances, which are virtual machines running on top of XEN virtualisation engine. EC2 offers “bare” virtual machines, usu- ally with just operating system installed, which offers users great flexibility in installing additional software and ’shaping’ the way final machine is go- ing to look like. EC2 also allows replicating virtual machines, by launching their identical copies.

2.1. DISTRIBUTED COMPUTING ENVIRONMENTS 25

– Amazon Simple Storage Service (Amazon S3), which is an online web stor- age service.

– Amazon CloudWatch, which is a tool for collecting, processing and moni- toring of raw data from other Amazon services, such as EC2.

• Microsoft Windows Azure platform consists of three components:

– Windows Azure is a windows based environment for running applications and storing data on servers. It supports applications built on top of .NET framework, and also supports web applications built using ASP.NET and Windows Communication Foundation.

– SQL Azure provides data services in the cloud based on SQL Server.

– .NET Services supports the creation of distributed applications on the clouds.

• Google App Engine is a platform for web applications, which supports Python and Java. Deploying code, monitoring, managing fault tolerance and launching application instances is transparently handled by Google

Differences Between Cloud and Grid Computing

We can notice that there are a lot of similarities between Cloud and Grid computing. Indeed, Clouds and Grids share the same vision, which is that of reducing the cost of computation by aggregating physical resources in large, virtual supercomputers. It is not easy to define precisely what are the differences between the two technologies, mostly because there are no universally accepted definitions of either Grid or Cloud computing, and also due to a fact that there is very little standardisation in the Cloud computing field.

There is a lot of work (e.g. Foster et al. [FZRL08], Vaquero et al. [VRMCL09]) which tries to informally describe the differences between Grid and Cloud computing. Most authors agree that there is little technical difference, except for the fact that Clouds seem to rely much more on virtualisation of physical and logical resources than Girds do. Most of the differences, therefore, come from the different usage scenarios of Grids and Clouds. Foster et al. argue in [FZRL08] that currently Clouds are not as well suited for the execution of high-performance applications as Grids are. Grids and Clouds also have different security models, which is the consequence of the fact that resources in Clouds are centralised within a single organisation, whereas those in

Grids typically belong to different organisations. Clouds also tend to rely more on the economic model, where the usage is paid per unit of resource.

In order, however, to be able to define more precisely the differences between the two technologies, we will have to wait for standardisation of technologies and use-case scenarios to emerge in Clouds.

2.2

Scheduling on Distributed Computing Environ-