2.3 Cloud Computing
2.3.1 Definitions
Ever since the introduction of cloud computing, a single precise definition of the term has not been coined although most definitions reference the delivery of services, ap-plications and resources from a set of remote host servers that are accessed over the commodity Internet [56, 57, 127, 64, 156]. There are however widely agreed defini-tions that describe the various deployment and service models and we outline those here. Cloud computing platforms exist in many forms and typically conform to com-mon deployment and service models. A cloud may either be deployed as a public, private or hybrid cloud, as shown in Figure 2.2.
Public Cloud Private Cloud Hybrid Cloud
Cloud Stack Cloud Stack
Apps Data
Figure 2.2: Cloud Computing Deployment Models; derived from [42]
Public cloud computing models are made available to the general public and resource use is charged like the pay-as-you-go model for charging electricity. Private cloud computing infrastructures typically reside behind organizational firewalls and are used in accordance to the goals they aim to achieve. Hybrid clouds are private clouds that are extended by cloudbursting [55] to the public cloud in order to cope with additional demand or to take advantage of additional services.
Cloud providers also conform to either a single or number of common service models: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS), each of which provide differing levels of environment abstraction [93]. Figure 2.3 depicts these different service models and the level of abstraction offered to the end-user.
Applications
Figure 2.3: Cloud Computing Service Models; derived from [13]
IaaS is a popular service model offered by cloud providers where raw compute, stor-age and network capabilities are delivered as a service to the end-user. End-users are only able to customize the infrastructure from the Operating System (OS) level up-wards to the application. This is in contrast to owning a dedicated cluster, where an administrator would control raw compute, storage and network resources. Within the IaaS model, these resources are available to cloud users via virtualization giving the impression that a single cloud user has full and exclusive access to the resource. Fur-thermore, virtualization reduces the barrier to entry for many as end-users do not have to make substantial changes to their applications to deploy them on a virtual machine, or instance. A common example of an IaaS cloud infrastructure is Amazon Elastic Compute Cloud (EC2).
PaaS on the other hand delivers an application environment to the end-user who only needs to be concerned with their application and data. The cloud provider man-ages the underlying infrastructure and can offer various application stacks such as Java and Python for example. This model is particularly useful for those who wish to avoid the complexities of system administration and are only concerned by running applica-tions. Common examples of PaaS cloud infrastructures are Google App Engine (GAE)
2.3. Cloud Computing 23
and Microsoft Azure.
Finally, at a higher layer of abstraction, SaaS is a method of delivering applications over the Internet. Like PaaS, the cloud provider manages the underlying infrastruc-ture but applications and associated data are created, managed and delivered by the cloud provider. Common examples of SaaS cloud applications are Google Mail and Microsoft Office 365.
Like Saas, both IaaS and PaaS cloud providers also offer products and services alongside their infrastructure offering. This may be scalable storage (e.g. Amazon S3 and GAE Datastore), relational databases (e.g. Amazon Relational Database Service and SQL Azure), monitoring tools (e.g. Amazon CloudWatch) or even authentication software (Amazon Web Services Identity and Access Management and Azure Active Directory). These services are easily integrated into a cloud user’s virtual infrastructure either via web interfaces or simple APIs.
2.3.2 Overview
Cloud computing has become a disruptive yet popular technology due to the advan-tages it offers both cloud provider and cloud user. By employing virtualization, ware-house scale cluster management reduces the management overhead per customer and the size of the user-base that can be served is much larger when compared to non-virtualized infrastructures. As a result, server utilization has increased, while the over-all energy consumed [150] has decreased, in turn promoting greener IT. Increased server utilization often leads to reduced operating expenses and these savings can ei-ther be passed to the customers of public cloud infrastructures or manifested in profit.
Cost is one major factor as to why public cloud computing has also become popular in recent years. Cloud computing’s ‘pay-as-you-go’ charging model, where resources are paid for per unit consumed per hour, can often be claimed to be a cheaper model than procuring a dedicated infrastructure [136, 184, 143]. Such claims are typically based on individual cases and should not be generalized.
Furthermore, estimating the true cost of a dedicated infrastructure is not well under-stood, even by those who currently administer such systems [202]. Additionally, cloud computing is often cited as being more expensive for long term use [202]. However, these additional costs may be offset by taking advantage of recent research to decrease costs; for example, by dynamically auto-scaling virtual instances based on workload information and performance targets [158]. Alternatively, expensive long-term costs
may be out-weighted by the other advantages cloud computing offers [56, 57].
One advantage is the scalable and elastic nature of the cloud; the ability to match a workload’s resource demand in an autonomic fashion by dynamically adding or re-moving resources. Elasticity is particularly useful for applications that have sporadic and unpredictable demand. A good example of this is the Animoto use case [5]. Ani-moto is a software company that creates video slideshows from uploaded photos, music and video clips. The company experienced substantial growth when their application gained popularity and therefore scaled from 40 to 5000 EC2 instances in three days.
Unfortunately, elasticity is not a feature commonly employed by other infrastruc-tures, such a clusters and Grids. Cluster and Grid users must either perform as much work as they can with the available resources or system administrators must procure enough hardware to cope with peak levels of usage if they strive to satisfy demand.
Furthermore, unlike cluster and Grid infrastructures, the cloud is perceived to be a flexible computational model where an apparently ‘unlimited’ number of resources can be deployed and utilized on-demand from any host with an Internet connection.
The cloud also offers high levels of availability. For example, Amazon EC2 commits to provide 99.95% availability as outlined in their Service Level Agreement (SLA) [3];
a contract between cloud customer and provider outlining the standards of service the provider has guaranteed to deliver.
Although levels of performance are not specified within SLAs, there exists a strong notion of trust between cloud user and provider on what levels of performance should be delivered. However it has been shown that actual performance delivered can vary significantly due to resource contention from the use of virtualization and relatively poor network performance [56, 117, 127, 130, 168, 194]. We give further performance measurements of a commercial cloud platform in Appendix A.
We have just given a brief overview of cloud computing as well as a number of its benefits and drawbacks. This however is by no means a full in-depth overview of the topic and aims to serve as a background for further discussion later in the thesis.
More information about cloud computing can be found at [72, 131]. We now give an overview of the commercial cloud infrastructure Amazon EC2.