0% found this document useful (0 votes)
115 views

Cloud Computing PDF

This document provides an overview of cloud computing fundamentals. It defines cloud computing according to several experts and organizations. Key definitions are provided by Gartner, Forrester Research, Huawei, and NIST. NIST's definition identifies five essential characteristics of cloud computing including on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. The document also outlines three service models and four deployment models of cloud computing.

Uploaded by

Rafiq Magdy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
115 views

Cloud Computing PDF

This document provides an overview of cloud computing fundamentals. It defines cloud computing according to several experts and organizations. Key definitions are provided by Gartner, Forrester Research, Huawei, and NIST. NIST's definition identifies five essential characteristics of cloud computing including on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. The document also outlines three service models and four deployment models of cloud computing.

Uploaded by

Rafiq Magdy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 103

Department of: Computer and Information Technology programs

Cloud Computing
Code: TS43CPR19En
Cloud
Computing
Fundamentals
1 The Road to Cloud Computing Pages (1-21)

Sub - Sections 2 Cloud Computing Reference Architecture and Players’


Roles in Cloud Industry Pages(1-18)

3 Cloud Computing Deployment Models Pages(1-12)

Cloud Computing 4 Cloud Computing Service Models Pages (1-21)

Fundamentals
5 Virtualization Pages (1-21)

This document consists of 93page


Chapter 1: The Road to Cloud Computing

Chapter (1): The Road to Cloud Computing

Aim of study
This chapter introduces some cloud computing essentials required to pave the way for cloud
computing fundamentals course.

Contents Pages

1.1 Introduction 2
1.2 A Brief History 3
1.3 Cloud Computing Famous Definitions 4
1.4 Cloud Computing Technology Innovation and Related Technologies 9
1.5 Discussion and Common Characteristics 15

1
Chapter 1: The Road to Cloud Computing

Chapter (1)
The Road to cloud computing

1.1 Introduction

Cloud computing is a paradigm shift in the IT industry similar to the


displacement of local electric generators with the electric grid, providing utility
computing, and it is changing the nature of competition within the computer
industry.

IT is moving out of the local data center into the cloud, where data and services
become easily available via cell phones, tablets, and other mobile devices around
the world.

Cloud computing fundamentals are introduced in this course document and after
completing this course the trainee should gain the knowledge of the basic
concepts and specific terminologies of cloud computing.

With the information provided by this course document, the trainee will be able
to understand the specific terminology of cloud computing and its application in
the continued shift into the cloud, where costs are billed like electricity and
reflect monthly usage levels rather than the traditional up-front major cost of
new servers and storage for a data center rack. Migration into the cloud allows
rapid deployment of test applications and then rapid scale-up to meet growing

2
Chapter 1: The Road to Cloud Computing

demands without worrying about whether the current network or hardware can
keep up.

1.2 A Brief History

The idea of computing in a “cloud” traces back to the origins of utility


computing, a concept that computer scientist John McCarthy publicly proposed
in 1961:

“If computers of the kind I have advocated become the computers of the future,
then computing may someday be organized as a public utility just as the
telephone system is a public utility. … The computer utility could become the
basis of a new and important industry.”

In 1969, Leonard Kleinrock, a chief scientist of the Advanced Research Projects


Agency Network (ARPANET) project that seeded the Internet, stated:
“As of now, computer networks are still in their infancy, but as they grow up and
become sophisticated, we will probably see the spread of ‘computer utilities’
…”.

In the late 1990s, Salesforce.com pioneered the notion of bringing remotely


provisioned services into the enterprise. In 2002, Amazon.com launched the
Amazon Web Services (AWS) platform, a suite of enterprise-oriented services
that provide remotely provisioned storage, computing resources, and business
functionality.

3
Chapter 1: The Road to Cloud Computing

It wasn’t until 2006 that the term “cloud computing” emerged in the commercial
arena. It was during this time that Amazon launched its Elastic Compute Cloud
(EC2) services that enabled organizations to “lease” computing capacity and
processing power to run their enterprise applications. Google Apps also began
providing browser-based enterprise applications in the same year, and three years
later, the Google App Engine became another historic milestone.

1.3 Cloud Computing Famous Definitions

Gartner report:
A Gartner report listing cloud computing at the top of its strategic technology
areas further reaffirmed its prominence as an industry trend by announcing its
formal definition as:
“…a style of computing in which scalable and elastic IT-enabled capabilities are
delivered as a service to external customers using Internet technologies.”

This is a slight revision of Gartner’s original definition from 2008, in which


“massively scalable” was used instead of “scalable and elastic.” This
acknowledges the importance of scalability in relation to the ability to scale
vertically and not just to enormous proportions.

Forrester Research:
Forrester Research provided its own definition of cloud computing as:
“…a standardized IT capability (services, software, or infrastructure) delivered
via Internet technologies in a pay-per-use, self-service way.”

4
Chapter 1: The Road to Cloud Computing

Huawei:
Huawei has defined cloud computing the delivery of computing as a service
rather than a product, whereby shared resources, software, and information are
provided to computers and other devices as a utility over the network (typically
the Internet). The term "cloud" is a metaphor for the network and Internet. Cloud
computing can be defined as follows:
- In a narrow sense, cloud computing refers to the delivery and usage
models of IT infrastructure. That is, the IT infrastructure is delivered on
demand over the Internet.
- In a broad sense, cloud computing refers to the delivery and usage models
of services. That is, IT, software, and Internet services are delivered on
demand over the Internet.
Figure 1.1 illustrates Cloud computing with respect to Huawei view.

5
Chapter 1: The Road to Cloud Computing

Figure1.1: Huawei Cloud Computing View.

The core concept of cloud computing is to provide services from computing


resource pool installed in a data center. The resource pool consists of computing
resources connected over the network. The network is considered as the cloud.
The resources in the cloud feature illusion of infinite supply to users and can be
used on demand at any time and offered on a pay-per-usage model.

6
Chapter 1: The Road to Cloud Computing

NIST:
The definition that received industry-wide acceptance was composed by the
National Institute of Standards and Technology (NIST). NIST published its
original definition back in 2009, followed by a revised version after further
review and industry input that was published in September of 2011:

“Cloud computing is a model for enabling ubiquitous, convenient, on-demand


network access to a shared pool of configurable computing resources (e.g.,
networks, servers, storage, applications, and services) that can be rapidly
provisioned and released with minimal management effort or service provider
interaction. This cloud model is composed of five essential characteristics, three
service models, and four deployment models.”

Essential Characteristics are as follow:


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

- Broad network access. Capabilities are available over the network and
accessed through standard mechanisms that promote use by heterogeneous
thin or thick client platforms (e.g., mobile phones, tablets, laptops, and
workstations).

7
Chapter 1: The Road to Cloud Computing

- Resource pooling. The provider’s computing resources are pooled to serve


multiple consumers using a multi-tenant model, with different physical
and virtual resources dynamically assigned and reassigned according to
consumer demand. There is a sense of location independence in that the
customer generally has no control or knowledge over the exact location of
the provided resources but may be able to specify location at a higher level
of abstraction (e.g., country, state, or datacenter). Examples of resources
include storage, processing, memory, and network bandwidth.

- Rapid elasticity. Capabilities can be elastically provisioned and released,


in some cases automatically, to scale rapidly outward and inward
commensurate with demand. To the consumer, the capabilities available
for provisioning often appear to be unlimited and can be appropriated in
any quantity at any time.

- Measured service. Cloud systems automatically control and optimize


resource use by leveraging a metering capability1 at some level of
abstraction appropriate to the type of service (e.g., storage, processing,
bandwidth, and active user accounts). Resource usage can be monitored,
controlled, and reported, providing transparency for both the provider and
consumer of the utilized service.

Service models –Software as a Service (SaaS), Platform as a Service (PaaS), and


Infrastructure as a Service (IaaS) - and deployment models – Private Cloud,

8
Chapter 1: The Road to Cloud Computing

Community Cloud, Public Cloud, and Hybrid Cloud - will be explained later in
next chapters.

1.4 Cloud Computing Technology Innovation and Related


Technologies

Established technologies such as Cluster, Distributed Computing, Grid


Computing, Utility computing are often used as inspiration and, at times, the
actual foundations upon which new technology innovations are derived and
built. This section briefly describes the pre-existing technologies considered to
be the primary influences on cloud computing.

- Cluster:
A cluster is a group of independent IT resources that are interconnected and
work as a single system. System failure rates are reduced while availability and
reliability are increased, since redundancy and failover features are inherent to
the cluster.

A general prerequisite of hardware clustering is that its component systems have


reasonably identical hardware and operating systems to provide similar
performance levels when one failed component is to be replaced by another.
Component devices that form a cluster are kept in synchronization through
dedicated, high-speed communication links.
The basic concept of built-in redundancy and failover is core to cloud platforms.

9
Chapter 1: The Road to Cloud Computing

- Distributed Computing:
In distributed computing, multiple software - which runs on the same computer
or different computers connected over networks - can share information.

Distributed computing allows computing load to be balanced among multiple


computers and programs to run on the most appropriate computers.
The difference between distributed computing and cloud computing is as
follows:
- Distributed computing emphasizes academic applications. It allows a
problem to be divided into many tasks, which are further allocated to
multiple computers for processing. After these smaller tasks are complete,
the results of these smaller tasks are collected, and a single output is
offered.
- Cloud computing emphasizes commercial applications. It focuses on
service provisioning through centralized management and scheduling of a
great deal of computing resources connected over networks.

- Grid Computing
Grid computing is a form of distributed computing, whereby a large number
of unused CPU cycles and disk storage of heterogeneous computers are
embedded in the distributed telecommunication infrastructure as a virtual
computer cluster to perform large tasks.
Grid Computing (or “computational grid”) provides a platform in which
computing resources are organized into one or more logical pools. These

10
Chapter 1: The Road to Cloud Computing

pools are collectively coordinated to provide a high performance distributed


grid, sometimes referred to as a “super virtual computer.”

Grid computing differs from clustering in that grid systems are much more
loosely coupled and distributed. As a result, grid computing systems can
involve computing resources that are heterogeneous and geographically
dispersed, which is generally not possible with cluster computing-based
systems.

Grid computing has been an on-going research area in computing science


since the early 1990s. The technological advancements achieved by grid
computing projects have influenced various aspects of cloud computing
platforms and mechanisms, specifically in relation to common feature-sets
such as networked access, resource pooling, and scalability and resiliency.
These types of features can be established by both grid computing and cloud
computing, in their own distinctive approaches.

For example, grid computing is based on a middleware layer that is deployed


on computing resources. These IT resources participate in a grid pool that
implements a series of workload distribution and coordination functions. This
middle tier can contain load balancing logic, failover controls, and autonomic
configuration management, each having previously inspired similar—and
several more sophisticated—cloud computing technologies. It is for this
reason that some classify cloud computing as a descendant of earlier grid
computing initiatives.

11
Chapter 1: The Road to Cloud Computing

The difference between grid computing and cloud computing is as follows:


- Resource utilization
Grid computing integrates distributed resources and supports virtual
organizations to offer high-level services

Cloud computing provides underlying resources from data centers that


have various types of resources pooled. Cloud computing does not involve
the concept of virtual organization.

- Applicability
Grid computing is initially used to converge resources to address
challenging applications. It is later applied to common IT applications.

Cloud computing has been developed to support comprehensive enterprise


computing and web applications since its emergence.

- Handling of heterogeneity
Grid computing uses middleware to shield the difference between
heterogeneous systems and offers the same environment for users. The
middleware handles the problems related to heterogeneous systems.

Cloud computing uses images or services to handle the problems related to


heterogeneous systems.

12
Chapter 1: The Road to Cloud Computing

- Task duration
Grid computing allows a single big task to be split into multiple smaller
tasks, which are further distributed to different computing machines. Data
is generated after the single big task is complete.
Cloud computing supports persistent services. Hosted and outsourced
services can be implemented based on the cloud computing infrastructure.

- Applications
Grid computing is widely used in scientific research. It does not have clear
commercial models.

Cloud computing is developed for commercial applications and has clear


commercial models.

- Utility Computing:
Utility computing is a service provisioning model. Service providers offer
computing resources required by users, efficiently manage the infrastructure, and
charge users based on the used applications. Utility computing rapidly offers the
required data by integrating scattered servers, storage systems, and applications.
Cloud computing is similar to utility computing in the way that computing,
storage and application resources are provided as services.
The differences between utility computing and cloud computing is as follows:
- Utility computing often requires support from the cloud computing
infrastructure.

13
Chapter 1: The Road to Cloud Computing

- Cloud computing uses virtualization technologies to provide optimal


flexibility and scalability. Cloud computing may use utility computing if
required.

Table 1.1 lists the difference between distributed computing, grid computing,
and utility computing technologies.
Computing Comparison with Cloud Computing
Technology
Distributed Distributed computing is making big contributions to
Computing scientific research, and cloud computing applies to
commercial applications.
Grid Grid Computing integrates distributed resources and supports
Computing virtual organizations. Cloud computing has centralized
resource pools but does not involve the concept of virtual
organization.
Grid computing emphasizes general application in its late
phases, while cloud computing focuses on general application
at the very beginning.
Grid computing uses middleware to shield the difference
between heterogeneous systems. Cloud computing allows the
existence of heterogeneity.
Grid computing allows a single big task to be split into
multiple smaller tasks, which are further distributed to
different computing machines. Cloud computing supports
persistent services.

14
Chapter 1: The Road to Cloud Computing

Grid computing is widely used in scientific research, while


cloud computing applies to commercial applications.
Utility Utility computing often requires support from cloud
Computing computing infrastructure. Cloud computing is based on
virtualization and can use utility computing if required.
Table 1.1: Difference between distributed computing, grid computing, and utility
computing technologies.

1.5 Discussion and Common Characteristics

Cloud computing is more than marketing term; it refers to flexible self-service,


network-accessible computing resource pools that can be allocated to meet
demand.

Services are flexible because the resources and processing power available to
each can be adjusted on the fly to meet changes in need or based on
configuration settings in an administrative interface, without the need for direct
IT personnel involvement.

These resources are assigned from a larger pool of available capacity (for
examples, memory, storage, CPUs) as needed, without having to worry about
whether existing hardware, data center space, power, and cooling are capable of
handling the load.

15
Chapter 1: The Road to Cloud Computing

Cloud computing allows the allocation of resources to be adjusted as needed,


creating a hardware-independent framework for future growth and development.

- The ” Cloud” Term Origin:


Since the beginning of the networking age, when network diagrams depicted an
enterprise and its extended components, the industry standard has been to use a
simple cloud icon to identify the public Internet (or any circuit switching or
packet switching networks), as shown in Figure 1.2. This cloud represents all of
the various types of networking and functions that are necessary to bridge
together various parts of the enterprise over the Internet because the specific
routing details are subject to change and are outside the enterprise network
environment. That’s where the term cloud originated, and when we discuss
migration into the cloud, what we generally mean is applications and services
being moved from the organizational or hosting data center to cloud service
providers available through the Internet.

16
Chapter 1: The Road to Cloud Computing

Figure 1.2: An example of the cloud symbol in network diagrams.

Almost anything can be hosted in the cloud, from databases and applications to
complete virtual infrastructures encompassing data storage, networking, and all
components of the server environment. The cloud can also host virtualized user
desktop environments available from any networked client device, whether or
not the client has sufficient local resources to host the virtualized desktop
environment and its various applications.

17
Chapter 1: The Road to Cloud Computing

Internet-based offsite-managed hosting services have been around for a while,


available through specialty providers such as Rackspace since 1997 and even
provided as value additions by local ISPs.
However, cloud computing goes beyond simply hosting a website or database
service on a machine located in a remote data center, with early cloud services
such as Google Gmail and Google Apps showing off the power of cloud
computing starting in 2006.

- Common Cloud Characteristics:

Cloud computing solutions have several common characteristics, regardless of


their form:

- Managed by the provider

Cloud computing services are managed by the cloud provider. Once applications
and services have been moved to the cloud, an organization no longer needs to
worry about local data center issues regarding power, space, and cooling, and
developers need only know whether their applications will be running on one
cloud service platform or another—for example, Amazon Elastic Compute
Cloud (EC2) or Microsoft Azure—without having to consider where the services
or application resources will be located. So, Knowledge of individual hardware
characteristics and capacity measures is no longer important to the organization,
while it becomes a background matter for the cloud provider to manage.

18
Chapter 1: The Road to Cloud Computing

- Flexible resource assignment

The capacity and resources available to cloud computing services can be


increased or decreased, with costs adjusted according to actual consumption.

This allows an organization to spin up a new offering with only minimal costs
for the resources used and then to meet spikes or cyclic use patterns with
increased capacity, paying for only the level of use needed.

Traditional data centers must always plan for future growth, and a sudden
success for a web-based offering can rapidly overrun available server and
network capacity unless data center managers purchase sufficient “spare”
resources beforehand.

Cloud computing draws resources from a pool as they are needed, based on level
of service consumption.

This is similar to the way power companies supply power to individual


organizations, billing each according to its individual use.

Pay Only for What You Need


Instead of buying huge storage arrays just in case of later need, you
can start out small and grow your cloud resources only when
required. Automatic failover to public cloud services when local
resources are insufficient, a practice termed cloud bursting.

19
Chapter 1: The Road to Cloud Computing

- Network accessible
Cloud services are available via networked devices and technologies, facilitating
rapid access by mobile customers and remote office locations. This provides an
“anywhere, anytime” service model not possible in traditional data centers,
where service downtime and local-area outages in power and networking can
impact uptime. Because cloud computing vendors can be located anywhere in
the world, they can host organizational services from areas outside of
geopolitical turmoil or environmental threats. Before a hurricane, for example, a
cloud service provider could transfer operations from Florida to Washington
transparently to the service consumer.

- Sustainable
Because cloud providers can provide resources as need, it is possible to reduce
power and cooling requirements during off-peak times, gaining economies of
scale well beyond those available to single-tenanted hardware based data
services, which must stay on waiting for later use.

The flexibility in cloud hosting location allows providers to shift operations


without disruption to consumers. They can move data center activity north
during summer months to save on cooling costs or transfer operations to areas
with excess power production capability, such as Iceland.

20
Chapter 1: The Road to Cloud Computing

Cloudy Skies Are “Greening” the Data Center


Cloud hosting supports green initiatives through the use of environmental
cooling by transferring operations to cooler locations rather than
requiring ever larger refrigerated air systems to meet summer heat
increases, reducing an organization’s environmental footprint.

- Managed through self-service on demand

After limits for resource availability are configured within the cloud provider’s
systems, available resource capacity can be automatically expanded or managed
by the client with minimal effort.
Bringing up a test server no longer requires access to the physical system,
loading software, and configuring networking by hand; instead, the customer
need only access their cloud provider and request a new resource allocation
using the self-service user interface. As long as the organization’s contractual
limits on resources allow the addition, it is managed automatically without
further technical assistance needed.

21
Chapter 2:Cloud computing Reference

Chapter (2): Cloud computing Reference


Architecture and Players’ Roles in Cloud Industry

Aim of study
This chapter introduces the Cloud computing reference model and the role of each player in
the cloud industry.

Contents Pages
2.1 The Conceptual Reference Model 2
2.2 Cloud Consumer 7
2.2 Cloud Provider 12
2.3 Cloud Auditor 14
2.4 Cloud Broker 15
2.5 Cloud Carrier 18

1
Chapter 2:Cloud computing Reference

Chapter (2)
Cloud Computing Reference Architecture and Players’ Roles in
Cloud Industry

2.1 The Conceptual Reference Model

According to NIST cloud computing reference model, figure 2.1 illustrates an


overview of cloud computing reference model which clarifies the major actor
and their activities and functions in cloud computing.

A generic high-level architecture that intended to facilitate the understanding of


the requirements, uses, characteristics and standards of cloud computing is
depicted by the diagram.

Figure 2.1: The Conceptual Reference Model.


2
Chapter 2:Cloud computing Reference

As shown in Figure 2.1, the NIST cloud computing reference architecture


defines five major actors: cloud consumer, cloud provider, cloud carrier, cloud
auditor and cloud broker. Each actor is an entity (a person or an organization)
that participates in a transaction or process and/or performs tasks in cloud
computing. Table 1 briefly lists the actors defined in the NIST cloud computing
reference architecture.
The general activities of the actors are discussed in the remainder of this chapter.

There are five major actor defined by NIST cloud computing reference
architecture: cloud consumer, cloud provider, cloud carrier, cloud auditor, and
cloud broker illustrated in figure 2.2.

Figure 2.2: Cloud Actors.

3
Chapter 2:Cloud computing Reference

Each actor is an entity (a person or an organization) that participates in a


transaction or process and/or performs tasks in cloud computing.
A list of these 5 actors is summarized in table 2.1 as follow:

Actor Definition
Cloud Consumer A person or organization that maintains a business
relationship with, and uses service from, Cloud
Providers.
Cloud Provider A person, organization, or entity responsible for making
a service available to interested parties.
Cloud Auditor A party that can conduct independent assessment of
cloud services, information system operations,
performance and security of the cloud implementation.
Cloud Broker An entity that manages the use, performance and delivery
of cloud services, and negotiates relationships between
Cloud Providers and Cloud Consumers.
Cloud Carrier An intermediary that provides connectivity and transport
of cloud services from Cloud Providers to Cloud
Consumers.

Table 2.1 Actors in Cloud Computing.

Interactions among the actors illustrated in figure 2.3. Cloud services request by
cloud consumer may be requested directly from cloud provider or indirectly via a
cloud broker. A cloud auditor conducts independent audits and may contact the

4
Chapter 2:Cloud computing Reference

others to collect necessary information. Each actor role will be detailed discussed
in the next section

Figure 2.3: Interactions between the actors in Cloud Computing.

Example Usage Scenario 1: As depicted in figure 2.4, a cloud consumer may


request service from a cloud broker instead of contacting a cloud provider
directly. The cloud broker may create a new service by combining multiple
services or by enhancing an existing service. In this example, the actual cloud
providers are invisible to the cloud consumer and the cloud consumer interacts
directly with the cloud broker.

Figure 2.4: Usage Scenario for Cloud Brokers.

5
Chapter 2:Cloud computing Reference

Example Usage Scenario 2: Cloud carriers provide the connectivity and


transport of cloud services from cloud providers to cloud consumers. As
illustrated in figure 2.5, a cloud provider participates in and arranges for two
unique service level agreements (SLAs), one with a cloud carrier (e.g. SLA2)
and one with a cloud consumer (e.g. SLA1). A cloud provider arranges service
level agreements (SLAs) with a cloud carrier and may request dedicated and
encrypted connections to ensure the cloud services are consumed at a consistent
level according to the contractual obligations with the cloud consumers. In this
case, the provider may specify its requirements on capability, flexibility and
functionality in SLA2 in order to provide essential requirements in SLA1.

Figure 2.5: Usage Scenario for Cloud Carriers.

Example Usage Scenario 3: For a cloud service, a cloud auditor conducts


independent assessments of the operation and security of the cloud service
implementation. The audit may involve interactions with both the Cloud
Consumer and the Cloud Provider as illustrated in figure 2.6.

Figure 2.6 Usage Scenario of Cloud Auditor.

6
Chapter 2:Cloud computing Reference

2.2 Cloud Consumer

The main player for the cloud computing service is the cloud consumer. It
represents a person or organization that maintains a business relationship with,
and uses the service from a cloud provider. A cloud consumer browses the
service catalog from a cloud provider, requests the appropriate service, sets up
service contracts with the cloud provider, and uses the service.
Service level Agreements (SLAs) are needed for cloud consumers to specify the
technical performance requirements fulfilled by a cloud provider. SLAs can
cover terms regarding the quality of service (QoS), security, remedies for
performance failures.
A cloud provider may also list in the SLAs a set of promises explicitly not made
to consumers, i.e. limitations, and obligations that cloud consumers must accept.
A cloud consumer can freely choose a cloud provider with better pricing and
more favorable terms.

Depending on the services requested, the activities and usage scenarios can be
different among cloud consumers. Figure 2.7 presents some example cloud
services available to a cloud consumer.

The cloud consumer may be billed for the service provisioned, and needs to
arrange payments accordingly.

7
Chapter 2:Cloud computing Reference

Figure 2.7: Example service available to cloud consumer.

The consumers of SaaS can be organizations that provide their members with
access to software applications, end users who directly use software applications,
or software application administrators who configure applications for end users.
SaaS consumers can be billed based on the number of end users, the time of use,
the network bandwidth consumed, and the amount of data stored or duration of
stored data.
Some SaaS cloud services examples which illustrated in the last figure 2.7 are:
- Email and Office Productivity, which are applications for email, word
processing, spreadsheets, presentations, etc.
- Billing which are application services to manage customer billing based
on usage and subscriptions to products and services.

8
Chapter 2:Cloud computing Reference

- Customer Relationship Management (CRM), is applications that range


from call center applications to sales force automation.
- Collaboration is Tools that allow users to collaborate in workgroups,
within enterprises, and across enterprises.
- Content Management is Services for managing the production of and
access to content for web-based applications.

- Document Management is Applications for managing documents,


enforcing document production workflows, and providing workspaces for
groups or enterprises to find and access documents.

- Financials is Applications for managing financial processes ranging from


expense processing and invoicing to tax management.

- Human Resources is software for managing human resources functions


within companies.
- Sales are Applications that are specifically designed for sales functions
such as pricing, commission tracking, etc.

- Social Networks is Social software that establishes and maintains a


connection among users that are tied in one or more specific types of
interdependency.

- Enterprise Resource Planning (ERP) is Integrated computer-based system


used to manage internal and external resources, including tangible assets,
financial resources, materials, and human resources

9
Chapter 2:Cloud computing Reference

Cloud consumers of PaaS can employ the tools and execution resources provided
by cloud providers to develop, test, deploy and manage the applications hosted in
a cloud environment. PaaS consumers can be application developers who design
and implement application software, application testers who run and test
applications in cloud-based environments, application deployers who publish
applications into the cloud, and application administrators who configure and
monitor application performance on a platform. PaaS consumers can be billed
according to, processing, database storage and network resources consumed by
the PaaS application, and the duration of the platform usage.

Some PaaS cloud services examples which illustrated in the last figure 2.6 are:

- Business Intelligence is a Paas service provides Platforms for the creation


of applications such as dashboards, reporting systems, and data analysis.
- Database is a PaaS Services offering scalable relational database
solutions or scalable non-SQL datastores.

- Development and Testing is a PaaS service provides Platforms for the


development and testing cycles of application development, which expand
and contract as needed.

- Integration Development is a PaaS service provides platforms for building


integration applications in the cloud and within the enterprise.

10
Chapter 2:Cloud computing Reference

- Application Deployment is a PaaS service provides Platforms suited for


general purpose application development. These services provide
databases, web application runtime environments, etc.

IaaS Consumers have access to virtual computers, network-accessible storage,


network infrastructure components, and other fundamental computing resources
on which they can deploy and run arbitrary software.

IaaS consumers can be system developers, system administrators and IT


managers who are interested in creating, installing, managing and monitoring
services for IT infrastructure operations.
IaaS consumers are provisioned with the capabilities to access these computing
resources, and are billed according to the amount or duration of the resources
consumed, such as CPU hours used by virtual computers, volume and duration
of data stored, network bandwidth consumed, number of IP addresses used for
certain intervals.

Some IaaS cloud services examples which illustrated in the last figure 2.7 are:

- Backup and Recovery is an IaaS Services for backup and recovery of file
systems and raw data stores on servers and desktop systems.

- Compute is an IaaS that provides Server resources for running cloud-


based systems that can be dynamically provisioned and configured as
needed.

11
Chapter 2:Cloud computing Reference

- Content Delivery Network (CDN) is an IaaS service to store content and


files to improve the performance and cost of delivering content for web-
based systems.

- Services Management is an IaaS Service that manages cloud infrastructure


platforms. These tools often provide features that cloud providers do not
provide or specialize in managing certain application technologies.

- Storage is an IaaS service that provides Massively scalable storage


capacity that can be used for applications, backups, archival, and file
storage.

2.3 Cloud Provider (Cloud Service Provider CSP)

A cloud provider is a person, an organization; it is the entity responsible for


making a service available to interested parties. A Cloud Provider acquires
and manages the computing infrastructure required for providing the services,
runs the cloud software that provides the services, and makes arrangement to
deliver the cloud services to the Cloud Consumers through network access.

For SaaS, the cloud provider deploys, configures, maintains and updates the
operation of the software applications on a cloud infrastructure so that the
services are provisioned at the expected service levels to cloud consumers.
The provider of SaaS assumes most of the responsibilities in managing and
controlling the applications and the infrastructure, while the cloud consumers
have limited administrative control of the applications.

12
Chapter 2:Cloud computing Reference

For PaaS, the Cloud Provider manages the computing infrastructure for the
platform and runs the cloud software that provides the components of the
platform, such as runtime software execution stack, databases, and other
middleware components. The PaaS Cloud Provider typically also supports the
development, deployment and management process of the PaaS Cloud
Consumer by providing tools such as integrated development environments
(IDEs), development version of cloud software, software development kits
(SDKs), deployment and management tools. The PaaS Cloud Consumer has
control over the applications and possibly some the hosting environment
settings, but has no or limited access to the infrastructure underlying the
platform such as network, servers, operating systems (OS), or storage.

For IaaS, the Cloud Provider acquires the physical computing resources
underlying the service, including the servers, networks, storage and hosting
infrastructure. The Cloud Provider runs the cloud software necessary to
makes computing resources available to the IaaS Cloud Consumer through a
set of service interfaces and computing resource abstractions, such as virtual
machines and virtual network interfaces.
The IaaS Cloud Consumer in turn uses these computing resources, such as a
virtual computer, for their fundamental computing needs Compared to SaaS
and PaaS Cloud Consumers, an IaaS Cloud Consumer has access to more
fundamental forms of computing resources and thus has more control over
the more software components in an application stack, including the OS and
network. The IaaS Cloud Provider, on the other hand, has control over the
physical hardware and cloud software that makes the provisioning of these

13
Chapter 2:Cloud computing Reference

infrastructure services possible, for example, the physical servers, network


equipments, storage devices, host OS and hypervisors for virtualization.
A Cloud Provider’s activities can be described in five major areas, as shown
in figure 2.8, a cloud provider conducts its activities in the areas of service
deployment, service orchestration, cloud service management, security, and
privacy.

Figure 2.8: Cloud Provider Major Activities.

2.4 Cloud Auditor

A cloud auditor is a party that can perform an independent examination of cloud


service controls with the intent to express an opinion thereon. Audits are
performed to verify conformance to standards through review of objective
evidence. A cloud auditor can evaluate the services provided by a cloud provider
in terms of security controls, privacy impact, performance, etc.

14
Chapter 2:Cloud computing Reference

Security controls are the management, operational, and technical safeguards or


countermeasures employed within an organizational information system to
protect the confidentiality, integrity, and availability of the system and its
information.
For security auditing, a cloud auditor can make an assessment of the security
controls in the information system to determine the extent to which the controls
are implemented correctly, operating as intended, and producing the desired
outcome with respect to the security requirements for the system. The security
auditing should also include the verification of the compliance with regulation
and security policy.

2.5 Cloud Broker (Cloud Service Broker CSB)


As cloud computing evolves, the integration of cloud services can be too
complex for cloud consumers to manage. A cloud consumer may request cloud
services from a cloud broker, instead of contacting a cloud provider directly. A
cloud broker is an entity that manages the use, performance and delivery of
cloud services and negotiates relationships between cloud providers and cloud
consumers.

In general, a cloud broker can provide services in three categories:

- Service Intermediation:
Service Intermediation is when a broker performs value-add service on
behalf of the consumer. For example, in figure 2.9, the cloud broker
performs some administrative or management function on behalf of the
consumer for a particular cloud service. This value-add service may

15
Chapter 2:Cloud computing Reference

include activities such as invoice management, invoice and usage


reconciliation, and end-user account management, etc.

Figure 2.9: Cloud Broker Service Intermediation.

- Service Aggregation:
Service Aggregation is when a broker integrates two or more cloud
services to provide a complex cloud solution to the consumer. Figure 2.10
illustrates a cloud service that is composed of three different cloud
provider's services.

Figure 2.10: Cloud Broker Service Aggregation.

Figure 2.11 illustrates a more complex cloud solution composed from


several cloud services, each one delivered through a unique cloud
provider.

16
Chapter 2:Cloud computing Reference

Figure 2.11: Cloud Broker Complex Service Aggregation.

- Service Arbitrage:
Service arbitrage is similar to service aggregation except that the services
being aggregated are not fixed. Service arbitrage means a broker has the
flexibility to choose services from multiple agencies. The cloud broker, for
example, can use a credit-scoring service to measure and select an agency
with the best score.
Service Arbitrage is when a broker dynamically selects the best cloud
service provider in real time. Figure 2.12 illustrates a broker checking for
the best cloud service, for example online storage, from three cloud
providers.

17
Chapter 2:Cloud computing Reference

Figure 2.12: Cloud Broker Service Arbitrage.

2.6 Cloud Carrier


A cloud carrier acts as an intermediary that provides connectivity and transport
of cloud services between cloud consumers and cloud providers.
Cloud carriers provide access to consumers through network, telecommunication
and other access devices (cloud terminals).
For example, cloud consumers can obtain cloud services through network access
devices, such as computers, laptops, mobile phones, mobile Internet devices
(MIDs), etc. The distribution of cloud services is normally provided by network
and telecommunication carriers or a transport agent, where a transport agent
refers to a business organization that provides physical transport of storage
media such as high-capacity hard drives.
Note that a cloud provider will set up SLAs with a cloud carrier to provide
services consistent with the level of SLAs offered to cloud consumers, and may

18
Chapter 2:Cloud computing Reference

require the cloud carrier to provide dedicated and secure connections between
cloud consumers and cloud providers.

19
Chapter 3: Cloud Computing Deployment Models

Chapter (3): Cloud Computing Deployment Models

Aim of study
This chapter introduces the four cloud computing deployment models - public, private,
community, and hybrid clouds - according to NIST.

Contents Pages
3.1 Introduction 2
3.2 Cloud Computing Deployment models 5

1
Chapter 3: Cloud Computing Deployment Models

Chapter (3)
Cloud Computing Deployment Models

3.1 Introduction

There are many issues to consider when moving an enterprise application to the
cloud environment. For example, some service providers are mostly interested in
lowering operation cost, while others may prefer high reliability and security.
Accordingly, there are different types of clouds, each with its own benefits and
drawbacks.

Cloud computing deployment models can be differentiated by the user groups


accessing a cloud and the degree by which IT resources hosting the cloud itself
are shared between customers.

According to NIST cloud definition; there are 4 Cloud deployment models as


follow:
- Public clouds
- Private cloud
- Community cloud
- Hybrid cloud

The differences between them are based on how exclusive the computing
resources are made to a Cloud Consumer.

2
Chapter 3: Cloud Computing Deployment Models

The following figure 3.1 covers these cloud deployment models to clarify the
differences between them.
The term “tenant” is used here to refer to companies or individuals that act as a
cloud consumer.
Each tenant may have multiple users associated with it, i.e., a company may act
as the customer of a cloud that is then used by employees of that company.

Each cloud deployment model is characterized by the number of tenants


accessing the cloud and the number of tenants sharing IT resources hosting the
cloud itself. For example, access to a cloud may be restricted to a certain user
group, while the IT resources hosting the cloud itself may still be shared with
others.
Also, investigation what the different restrictions in accessibility mean for
customers and providers and how the different cloud properties access via
network, on-demand self-service, measured service (pay-per-use), resource
pooling and rapid elasticity influence the use of different cloud deployment
models is presented.

The restriction of the number of tenants accessing a cloud and sharing IT


resources has a significant impact on the cloud properties displayed by different
cloud deployment models, especially, regarding resource pooling, rapid elasticity
and subsequently metered service (pay-per-use).

Different cloud deployment models regarding the common level of elasticity and
pay-per-use they provide is depicted in figure 3.1.

3
Chapter 3: Cloud Computing Deployment Models

Figure 3.1: Level of elasticity and Pay-per-use of different cloud deployment


types.
As shown in the last figure 3.1, public cloud – generally accessible to everyone -
has the most tenants sharing so it can provides the highest level of elasticity and
pay-per-use where only the operational costs are billed to cloud consumers/
customers.

Community cloud – accessible to a controlled group of institutions - serves fewer


tenants, often collaborating companies. An upfront investment may be required
by these companies to establish the community cloud.
In addition, elasticity may be reduced as the collaborating companies may
experience similar workloads.

4
Chapter 3: Cloud Computing Deployment Models

Private cloud – accessible only by a single institution- has the least elasticity as it
used by only one tenant making high upfront investments and reduced elasticity
even more likely.

The hybrid cloud - combining any set of other clouds - spans all these properties
as it integrates applications hosted in the different environments.

3.2 cloud deployment models


As mentioned previously, there are four types of cloud deployment models
which are public, private, community, and hybrid as illustrated in figure 3.2.
Each of them will be discussed in details in the next sections.

Deployment
Models

Public Private Communiy Hybrid


Cloud Cloud Cloud Cloud

Figure 3.2 Cloud Computing Deployment Models.

5
Chapter 3: Cloud Computing Deployment Models

3.2.1 Public Cloud


A public cloud is one in which the cloud infrastructure and computing resources
are made available to the general public over a public network.
A public cloud is owned by an organization selling cloud services, and serves a
diverse pool of clients.
Figure 3.3 shows a simple view of a public cloud and its customers.

Figure 3.3: Public cloud.

In public cloud model, IT resources are provided as a service to a very large


customer group in order to enable elastic use of a static resource pool.

6
Chapter 3: Cloud Computing Deployment Models

3.2.2 Private Cloud


A private cloud gives a single Cloud Consumer’s organization the exclusive
access to and usage of the infrastructure and computational resources.

It may be managed either by the Cloud Consumer organization or by a third


party, and may be hosted on the organization’s premises (i.e. on-site private
clouds) or outsourced to a hosting company (i.e. outsourced private clouds).
Figure 3.4 and Figure 3.5 present an on-site private cloud and an outsourced
private cloud, respectively.

Figure 3.4: On-site Private Cloud.

7
Chapter 3: Cloud Computing Deployment Models

Figure 3.5: Out-Sourced Private Cloud.

3.2.2.1 Virtual Private Cloud (VPC)

An alternative solution to addressing the limitations of both public and private


clouds is called Virtual Private Cloud (VPC).

A VPC is essentially a platform running on top of public clouds. The main


difference is that a VPC leverages virtual private network (VPN) technology that

8
Chapter 3: Cloud Computing Deployment Models

allows service providers to design their own topology and security settings such
as firewall rules.
VPC is essentially a more holistic design since it not only virtualizes servers and
applications, but also the underlying communication network as well.

3.2.3 Community Cloud


A community cloud serves a group of Cloud Consumers which have shared
concerns such as mission objectives, security, privacy and compliance policy,
rather than serving a single organization as does a private cloud.

Similar to private clouds, a community cloud may be managed by the


organizations or by a third party, and may be implemented on customer premise
(i.e. on-site community cloud) or outsourced to a hosting company (i.e.
outsourced community cloud).

Figure 3.6 depicts an on-site community cloud comprised of a number of


participant organizations. A cloud consumer can access the local cloud
resources, and also the resources of other participating organizations through the
connections between the associated organizations.

Figure 3.7 shows an outsourced community cloud, where the server side is
outsourced to a hosting company. In this case, an outsourced community cloud
builds its infrastructure off premise, and serves a set of organizations that request
and consume cloud services.

9
Chapter 3: Cloud Computing Deployment Models

Figure 3.6:On-site Community Cloud.

10
Chapter 3: Cloud Computing Deployment Models

Figure 3.7: Outsourced Community Cloud.

11
Chapter 3: Cloud Computing Deployment Models

3.2.4 Hybrid Cloud


A hybrid cloud is a composition of two or more clouds (on-site private, on-site
community, off-site private, off-site community or public) that remain as distinct
entities but are bound together by standardized or proprietary technology that
enables data and application portability.
Figure 3.8 presents a simple view of a hybrid cloud that could be built with a set
of clouds in the five deployment model variants.

Figure 3.8: Hybrid Cloud (include two or more cloud models and may contain all
models in some cases).

12
Chapter 4: Cloud Computing Service Models

Chapter (4): Cloud Computing Service Models

Aim of study

This chapter introduces a detailed description about cloud computing service models as Software
as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS)
according to NIST. Also, XaaS concept will be provided.

Contents Pages
4.1 Introduction 2

4.2 Cloud Services Categorization 2

4.3 Software as a Service (SaaS) Exploration 6

4.4 Platform as a Service (PaaS) Exploration 10

4.5 Infrastructure as a Service (IaaS) Exploration 15

4.6 Everything as a Service (XaaS) Exploration 19

1
Chapter 4: Cloud Computing Service Models

Chapter (4)

Cloud Computing Service Models

4.1 Introduction

The aim of this chapter is to provide a detailed description about various cloud
computing service models.

According to NIST definitions there are three primary types of cloud computing
service models that are Software as a Service (SaaS), Platform as a Service (PaaS),
and Infrastructure as a Service (IaaS). Also, everything as a service (XaaS) will be
presented.

4.2 Cloud Services Categorization

Cloud services models and cloud deployment models, which discussed in the
previous chapter 3, are aligned. The following figure 4.1 illustrates service models
and delivery models. All the services can be delivered on any of the cloud delivery/
deployment models.

2
Chapter 4: Cloud Computing Service Models

Figure 4.1: Service Delivery Models.

Cloud computing providers (CCP) categorize their offerings into three primary
“aaS” categories according to their level of abstraction, identified by National
Institution of Standards and Technology (NIST) by these designations: Software as
a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service
(IaaS).

Figure 4.2 shows the three service models which represented in a form of a
pyramid like, because IaaS provides the most fundamental service category and
each successive level includes elements of the lower-level service categories.

3
Chapter 4: Cloud Computing Service Models

Figure 4.2: Service models Pyramid like representation.

Building atop successive layers, providers begin with the most fundamental level
of IaaS, which includes familiar elements from traditional settings such as
networking and storage and other architectural elements of interest to system
administrators and enterprise planners. Application developers will consume
services provided by PaaS providers, which also support the hosting infrastructure.
Users will consume applications provided by the SaaS level, which itself includes
components of both platform and infrastructure services beyond the consumer’s
visibility. Figure 4.3 aligns these roles using the same model layering.

4
Chapter 4: Cloud Computing Service Models

Figure 4.3: Cloud service models aligned with their principle consuming
populations.

5
Chapter 4: Cloud Computing Service Models

4.3 Software as a Service (SaaS) Exploration

According to NIST definition, the Software as a Service (SaaS) is defined as: The
capability provided to the consumer is to use the provider’s applications running
on a cloud infrastructure. The applications are accessible from various client
devices through either a thin client interface, such as a web browser (e.g., web-
based email) or a program interface. The consumer does not manage or control the
underlying cloud infrastructure including network, servers, operating systems,
storage, or even individual application capabilities, with the possible exception of
limited user-specific application configuration settings.

Three basic questions arise with respect to SaaS - who the consumers of SaaS are,
what a consumer gets, and how usage fees are calculated – and their answers are
provided.

6
Chapter 4: Cloud Computing Service Models

Software as a Service (SaaS) is often the first example of cloud computing that
many users will experience — sometimes without even realizing they are
interacting with a cloud at all.
Hosted software applications available through a web browser or via a thin client
are often indistinguishable to the user, who just wants to run the software
application and not worry about application details operating behind the curtain.
Figure 4.4 provides some examples, but of course not all, of the many SaaS
offerings that are available.

Figure 4.4: Some examples of SaaS providers and applications.

SaaS is like any traditional software application, it provides the end user with some
type of application that consumes, produces, or processes electronic information.

7
Chapter 4: Cloud Computing Service Models

SaaS products are generally prebuilt and consumed using the provided
functionality without significant customization, as in the case of Google Gmail
users who simply access the web-based standard email and calendaring
application, shown in Figure 4.5.

Figure 4.5: Example Gmail cloud SaaS client for email accessed using Google’s
Chrome web Browser.

Similar to traditional software products, SaaS alternatives are prebuilt and cannot
be changed beyond personalization and configuration settings by the consumer.

8
Chapter 4: Cloud Computing Service Models

Cloud SaaS applications offer distinct advantages over traditional locally installed
software and are driving the mad rush to bring the cloud into existing enterprise
environments.

SaaS Software Stack and Provider/Consumer Scope of Control


In SaaS, the cloud provider controls most of the software stack. Figure 4.6
illustrates how control and management responsibilities are shared. In the center,
the figure depicts a traditional software stack comprising layers for the hardware,
operating system, middleware, and application. The figure also depicts an
assignment of responsibility either to the cloud provider, the cloud consumer, or
both.

Figure 4.6: SaaS Provider/Consumer Scope of Control

In the SaaS service model, a consumer possesses control over the application-
specific resources that a SaaS application makes available. For example, if a
provider supplies an email application, the consumer will typically have the ability
to create, send, and store email messages. Figure 4.6 depicts this as "user level"
control. In some cases, a consumer also has limited administrative control of an
application. For example, in the example of an email application, selected

9
Chapter 4: Cloud Computing Service Models

consumers may have the ability to create email accounts for other consumers,
review the activities of other consumers, etc.

In contrast, a provider typically maintains significantly more administrative control


at the application level. A provider is responsible for deploying, configuring,
updating, and managing the operation of the application so that it provides
expected service levels to consumers. A provider's responsibilities also extend to
enforcing acceptable usage policies, billing, problem resolution, etc. To discharge
these obligations a provider must exercise final authority over the application.
Although a consumer may possess limited administrative control, the control
possessed by the consumer exists only at the discretion of the provider.

4.4 Platform as a Service (PaaS) Exploration

According to NIST definition, the Platform as a Service (PaaS) is defined as: The
capability provided to the consumer is to deploy onto the cloud infrastructure
consumer-created or acquired applications created using programming languages,
libraries, services, and tools supported by the provider. The consumer does not
manage or control the underlying cloud infrastructure including network, servers,
operating systems, or storage, but has control over the deployed applications and
possibly configuration settings for the application-hosting environment.

Three basic questions concerns PaaS - who the consumers of PaaS are, what a
consumer gets, and how usage fees are calculated – and their answers are provided.

10
Chapter 4: Cloud Computing Service Models

Platform as a Service (PaaS) expands an organization’s capability to customize


application development in the cloud by providing access to cloud program
development tools and development environments.

Figure 4.7 provides some examples of current PaaS offerings that are available but
this is not meant as a complete listing.

11
Chapter 4: Cloud Computing Service Models

Figure 4.7: Some examples of PaaS providers and applications.

Because the same technologies can be used by application developers for both
traditional and PaaS cloud applications, the process of migrating existing software
solutions from traditional to cloud hosting is greatly simplified.

Some PaaS vendors have created their own proprietary application development
languages, although many try to develop similar analogs to existing languages to
diminish the ramp-up time for hiring new programmers to develop applications for
their platform.

Salesforce.com provides an example of this in its Force.com PaaS proprietary


Apex (Java-like) and Visualforce (XML-like) languages. More robust PaaS

12
Chapter 4: Cloud Computing Service Models

providers allow programming using standardized and open-source languages to


ease adoption and migration of existing organizational applications.

Google App Engine’s PaaS application development can be conducted using


standardized Java and Python as well as its own Go open-source language.

Figure 4.8 shows Microsoft’s Azure PaaS’s current options, including Microsoft’s
own .NET suite of languages (including C#, VB .NET, J#), Node.Js, PHP, Java,
and Python for software application development of Azure cloud service–hosted
applications.

Figure 4.8: Microsoft’s Windows Azure PaaS development resources illustrating


its supported variety of programming languages.

13
Chapter 4: Cloud Computing Service Models

PaaS Software Stack and Provider/Consumer Scope of Control

In PaaS, the cloud provider controls the more privileged, lower layers of the
software stack. Figure 4.9 illustrates how control and management responsibilities
are shared. In the center, the figure depicts a traditional software stack comprising
layers for the hardware, operating system, middleware, and application. The figure
also depicts an assignment of responsibility either to the cloud provider, the cloud
consumer, or both.

Figure 4.9: PaaS Component Stack and Scope of Control

The provider operates and controls the lowest layers, the operating system and
hardware; implicit in this is control over networking infrastructure such as LANs
and routers between data centers. At the middleware layer, the provider makes
programming and utility interfaces available to the consumer; these interfaces
provide the execution environment within which consumer applications run and
provide access to needed resources such as CPU cycles, memory, persistent
storage, data stores, data bases, network connections, etc. The provider determines
the programming model, i.e., the circumstances under which consumer application
code gets activated, and monitors the activities of consumer programs for billing
and other management purposes.

14
Chapter 4: Cloud Computing Service Models

Once a consumer has used the facilities of the PaaS cloud to implement and deploy
an application, the application essentially is a SaaS deployment and the consumer
has administrative control over the application subject only to the provider
supporting the consumer according to the terms of use.

4.5 Infrastructure as a Service (IaaS) Exploration

According to NIST definition, the Infrastructure as a Service (IaaS) is defined as:


The capability provided to the consumer is to provision processing, storage,
networks, and other fundamental computing resources where the consumer is able
to deploy and run arbitrary software, which can include operating systems and
applications. The consumer does not manage or control the underlying cloud
infrastructure but has control over operating systems, storage, and deployed
applications, and possibly limited control of select networking components (e.g.,
host firewalls).
Again, 3 basic questions concerns IaaS - who the consumers of IaaS are, what a
consumer gets, and how usage fees are calculated – and their answers are provided.

15
Chapter 4: Cloud Computing Service Models

Infrastructure as a Service (IaaS), the third category of cloud services, allows a


client almost complete control over applications, languages, and fundamental
resources supporting organizational services such as databases, storage, and
networking.

Figure 4.10 provides some examples of IaaS providers — noting that, a number far
less than providers for higher-level service models in the cloud pyramid.

Figure 4.10: Some examples of IaaS providers and applications.

Sometimes Hardware as a Service (HaaS) is used alternatively to refer to IaaS to


reflect its function in providing on-demand hardware-equivalent resources such as
storage and network interconnectivity to its clients/consumers.

16
Chapter 4: Cloud Computing Service Models

Figure 4.11 shows the Windows Azure IaaS portal interface, with two virtual
machines currently configured as database servers for application development
prototyping.

Figure 4.11: Windows Azure Platform management console, showing two existing
virtual machines configured as database servers for development access using a
Visual Studio utility.

Controls are present for management of networking, storage and other resources
within pre established limitations allocated to this account. This is an
administrative-level tool through which you can provision resources for developers

17
Chapter 4: Cloud Computing Service Models

who will then construct applications for end users — affording control of the entire
cloud service pyramid from here.

IaaS Software Stack and Provider/Consumer Scope of Control


In IaaS, the cloud provider controls the most privileged, lower layers of the
software stack. Figure 4.12 illustrates how control and management responsibilities
are shared. In the center, the figure depicts a traditional software stack comprising
layers for the hardware, operating system, middleware, and applications. In the
case of IaaS, the layer usually occupied by the operating system is split into two
layers. The lower (and more privileged) layer is occupied by the Virtual Machine
Monitor (VMM), which is also called the hypervisor. A hypervisor uses the
hardware to synthesize one or more Virtual Machines (VMs); each VM is "an
efficient, isolated duplicate of a real machine". In essence, when a consumer rents
access to a VM, the VM appears to the consumer as actual computer hardware that
can be administered (e.g., powered on/off, peripherals configured) via commands
sent over a network to the provider. An operating system running within a VM is
called a guest operating system; when full virtualization techniques are used by the
provider, the consumer is free (using the provider's utilities) to load any supported
operating system software desired into the VM.

Figure 4.12: IaaS Component Stack and Scope of Control.

18
Chapter 4: Cloud Computing Service Models

As shown in Figure 4.12, the provider maintains total control over the physical
hardware and administrative control over the hypervisor layer. The consumer may
make requests to the cloud (including the hypervisor layer) to create and manage
new VMs but these requests are honored only if they conform to the provider's
policies over resource assignment. Through the hypervisor, the provider will
typically provide interfaces to networking features (such as virtual network
switches) that consumers may use to configure custom virtual networks within the
provider's infrastructure. The consumer will typically maintain complete control
over the operation of the guest operating system in each VM, and all software
layers above it. While this structure grants very significant control over the
software stack to consumers, consumers consequently must take on the
responsibility to operate, update, and configure these traditional computing
resources for security and reliability. This structure contrasts significantly with
SaaS and PaaS clouds where many of these issues are handled transparently for
consumers.

4.6 Everything as a Service (XaaS) Exploration

There are 3 different service models described before, all of them take the
following form:

XaaS, or “<Something> as a Service”/ “<Everything as a service”

Everything as a Service represents the continued expansion of cloud-service-level


combinations and integration between cloud and traditional services.

19
Chapter 4: Cloud Computing Service Models

XaaS is not a clearly defined term but a living reference used to describe whatever
the current level of integration provides.

All provided cloud services aligned with “as a Service” term is rapidly expanding
and often masked by media and cloud vendors/providers who redefine “aaS”
concepts to best suit marketing for their own unique offerings.

The common Dropbox cloud storage presents an example of why attempts to


define the specific form of cloud service can be difficult. The web client interface
for Dropbox is an example of SaaS, but the Dropbox service is itself a storage
component existing as a limited IaaS resource for other application development
leveraging its storage capabilities.

Cloud IaaS resources are available for consumption not only by other cloud
services but also by traditional constructed applications.

Figure 4.13 illustrates this within the presented blog, where a standard server-
deployed WordPress add-on provides nightly backups to his cloud Dropbox
storage allocation.

Cloud and traditional resources can be mixed to create what is being increasingly
referred to simply as” Everything as a Service (XaaS)”. Whatever the future holds,
it is clear that cloud computing will enhance flexibility and availability to meet an
increasingly mobile global population of consumers.

20
Chapter 4: Cloud Computing Service Models

Figure 4.13: A WordPress blog is backed up each night to Dropbox by a third-


party application that consumes the IaaS cloud storage aspect of Dropbox.

21
Chapter (5): Virtualization

Chapter (5): Virtualization

Aim of study

This chapter introduces the basics of virtualization as a cloud computing enabler.

Contents Pages
5.1 Virtualization as a Cloud Computing Enabler 2

5.2 Virtualization definition 4

5.3 Virtualization Architecture 11

5.4 Virtualization Technology Exploration 13

1
Chapter (5): Virtualization

Chapter (5)

Virtualization

5.1 Virtualization as a Cloud Computing Enabler

Virtualization and cloud computing are tightly coupled and related, and both
vendors and solution providers are increasingly using virtualization to build clouds.

Virtualization implementation is growing because it provides many benefits such


as the following:

- Access to server, network, and storage resources on demand.


- Energy savings for a greener earth.
- Physical space reduction.
- Hard-to-find people resource savings.
- Reduction in CAPEX and OPEX.

The sum of these savings can be huge, depending on the size of the enterprise.

Virtualization is the creation of a virtual version of something such as an operating


system, computing device (server), storage device, or network devices.

Sometimes, Cloud computing and virtualization are used interchangeably, but this
is incorrect.

2
Chapter (5): Virtualization

For example, server virtualization provides flexibility to enable cloud computing,


but that does not make virtualization the same as cloud computing. There are many
technologies that enable cloud computing, and virtualization is one of them;
however, it is not absolutely necessary to have virtualization for cloud computing.

It is difficult to define virtualization because of many flavors of it. There are 2


approaches of virtualization definition, one-to-many or many-to-one.
In a one-to-many approach, virtualization enables to create many virtualized
resources from one physical resource. This form of virtualization allows data
centers to maximize resource utilization. Virtual resources hosting individual
applications are mapped to physical resources to provide more efficient server
utilization.

With a many-to-one approach, virtualization enables to create a virtual (logical)


resource from multiple physical resources. This is especially true in the context of
cloud computing—multiple physical resources are grouped together to form one
cloud.

Again, virtualization is not cloud computing, but rather an enabler for establishing
and managing clouds.

3
Chapter (5): Virtualization

5.2 Virtualization definition

Virtualization in a broad sense refers to any technology that creates a virtual


version of resources.

In computing, virtualization is the creation of a virtual version of physical


computer resources, providing one or multiple operating environments and
implementing emulation, isolation, and sharing of resources.

Virtualization can be defined as a layer of abstraction, and it can exist in parts of or


throughout the entire IT stack.

In other words, virtualization could be restated from the data center and IT
perspective as “the process of implementing a collection of technological
capabilities required to hide the physical characteristics of server resources,
network resources, and storage resources from the way in which systems,
applications, or end users interact with those resources.”

The term “virtualization” broadly describes the separation of a resource or request


for a service from the underlying physical delivery of that service.

With virtual memory, for example, computer software gains access to more
memory than is physically installed, via the background swapping of data to disk
storage. Similarly, virtualization techniques can be applied to other IT

4
Chapter (5): Virtualization

infrastructure layers - including networks, storage, server hardware, and operating


systems and applications.

This mixture of virtualization technologies - or virtual infrastructure - provides a


layer of abstraction between computing, storage and networking hardware, and the
applications running on it. Figure 5.1 illustrate this virtualization layer and the
situation before and after virtualization.

Figure 5.1: Virtualization layer and the situation before and after Virtualization.

5
Chapter (5): Virtualization

The deployment of virtual infrastructure is non-disruptive, since the user


experiences are largely unchanged. However, virtual infrastructure gives
administrators the advantage of managing pooled resources across the enterprise,
allowing IT managers to be more responsive to dynamic organizational needs and
to better leverage infrastructure investments.

To be more familiar with virtualization concept, figure 5.2 re-illustrates before and
after virtualization.

Figure 5.2: Before and after Virtualization.

6
Chapter (5): Virtualization

Performance metrics before and after virtualization are compared and tabulated in
table 5.1 which show that after virtualization is more efficient in resource
utilization, independence, program running efficiency, and security.

Performance Before Virtualization After Virtualization


Resource Each host runs only one Each host runs multiple OSs,
utilization Operating System (OS). The Which are allocated as required.
system resource utilization is The system resource utilization
low is high.
Independence Software and hardware are OSs and hardware are
closely coupled, which causes independent from each other.
high hardware costs and VMs are independent from
inflexible configuration. hardware and can run on any
hardware.
Program If a host runs programs at the Management OSs and
running same time, conflicts may applications are encapsulated in
efficiency occur. As a consequence, the independent files.
operating efficiency is low. Different entities do not conflict
with each other. Only one
program runs on a host.
Therefore, the operating
efficiency is high.
Security The security is not guaranteed. Powerful security and fault
isolation measures are provided.
Table 5.1: Performance Metrics before and after Virtualization.

7
Chapter (5): Virtualization

5.2.1 Related concepts

- Virtual machine (VM)


A VM is a software implementation of a machine (that is, a computer) that
executes programs like a physical machine. A VM can run in an isolated
environment and provides the same security and reliability as a local PC.

- Hypervisor
A hypervisor, also called virtual machine monitor (VMM), is a software layer
between physical servers and operating systems (OSs), allowing multiple OSs and
applications to share hardware resources.
A hypervisor is the primary OS in the virtual environment in the bare-metal
architecture. It can access all physical devices, such as disks and memory on a
server. It coordinates accesses to the hardware resources and protects VMs. When
a server starts and runs the hypervisor, the hypervisor loads OSs of all VM clients
and allocates required memories, CPUs, networks, and disks to each VM.

- Para-virtualization
In Para-virtualization the kernel of the guest operating system is modified specifically to run
on the hypervisor. This typically involves replacing any privileged operations that will only
run in ring 0 of the CPU with calls to the hypervisor (known as hypercalls). The hypervisor
in turn performs the task on behalf of the guest kernel.
This typically limits support to open source operating systems such as Linux which may be
freely altered and proprietary operating systems where the owners have agreed to make the
necessary code modifications to target a specific hypervisor.

8
Chapter (5): Virtualization

- Full Virtualization
Full virtualization provides support for unmodified guest operating systems. The term
unmodified refers to operating system kernels which have not been altered to run on a
hypervisor and therefore still execute privileged operations as though running in ring 0 of the
CPU.
In this scenario, the hypervisor provides CPU emulation to handle and modify privileged and
protected CPU operations made by unmodified guest operating system kernels.
Unfortunately this emulation process requires both time and system resources to operate
resulting in inferior performance levels when compared to those provided by Para-
virtualization.

- Host OS
A host OS is the OS installed on the physical machine on which the virtualization
takes place.

- Guest OS
A guest OS is the OS running on a VM.

5.2.2 NIST Full Virtualization View

Virtualization, according to NIST, is the simulation of the software and/or


hardware upon which other software runs.

This simulated environment is called a virtual machine (VM). There are many
forms of virtualization, distinguished primarily by computing architecture layer.

9
Chapter (5): Virtualization

For example, application virtualization provides a virtual implementation of the


application programming interface (API) that a running application expects to use,
allowing applications developed for one platform to run on another without
modifying the application itself. The Java Virtual Machine (JVM) is an example of
application virtualization; it acts as an intermediary between the Java application
code and the operating system (OS).

Another form of virtualization, known as operating system virtualization, provides


a virtual implementation of the OS interface that can be used to run applications
written for the same OS as the host, with each application in a separate VM
container.

According to NIST; in full virtualization, one or more OSs and the applications
they contain are run on top of virtual hardware. Each instance of an OS and its
applications runs in a separate VM called a guest operating system.

The guest OSs on a host are managed by the hypervisor, also called the virtual
machine monitor (VMM), which controls the flow of instructions between the guest
OSs and the physical hardware, such as CPU, disk storage, memory, and network
interface cards.

The hypervisor can partition the system’s resources and isolate the guest OSs so
that each has access to only its own resources, as well as possible access to shared
resources such as files on the host OS. Also, each guest OS can be completely
encapsulated, making it portable. Some hypervisors run on top of another OS,
which is known as the host operating system.

10
Chapter (5): Virtualization

In full virtualization the hypervisor provides most of the same hardware interfaces
as those provided by the hardware’s physical platform.

This means that the OSs and applications running within full virtualization do not
need to be modified for virtualization to work if the OSs and applications are
compatible with the underlying hardware.

An interesting twist on full virtualization is Para-virtualization, which is a method


for the hypervisor to offer interfaces to the guest OS that the guest OS can use
instead of the normal hardware interfaces. If a guest OS can use Para-virtualized
interfaces, they offer significantly faster access for resources such as hard drives
and networks. Different types of Para-virtualization are offered by different
hypervisor systems.

5.3 Virtualization Architecture

Virtualization architectures are classified into the following 2 types based on the
position in the system:
- Hosted virtualization architecture
- Bare-metal virtualization architecture

11
Chapter (5): Virtualization

5.3.1 Hosted Virtualization Architecture

In the hosted virtualization architecture, virtualized programs are installed


and run on the host OS. The host OS supports devices and manages physical
resources. Figure 5.3 shows the hosted virtualization architecture

Figure 5.3: Hosted Virtualization Architecture.

5.3.2 Bare-Metal Virtualization Architecture


In the bare-metal virtualization architecture, virtualization software is
installed directly on hardware, while OSs and applications are installed on the
virtualization software. Management is implemented by the virtualization
layer kernel and server console. Figure 5-4 shows the bare metal virtualization
architecture.

12
Chapter (5): Virtualization

Figure 5-4: Bare-metal virtualization architecture.

5.4 Virtualization Technology Exploration

There are 4 virtualization technologies, discussed in this section, as follow

- Server virtualization
- Storage virtualization
- Network virtualization
- Service virtualization

Figure 5.5 shows server virtualization, network virtualization, storage


virtualization, and service virtualization.

13
Chapter (5): Virtualization

Figure 5.5: Virtualization Types.

Figure 5.6 is a representative diagram that shows different types of virtualization


technologies and its sub-types.

14
Chapter (5): Virtualization

Virtualization
Technology

Server Storage Network Service


Virtualization Virtualization Virtualization Virtualization

Vrtualization Virtualization Network-


Host-based Storagebased Divide Combine
Objective Degree based

Full
Processor
Virtualization

Para-
Memory
Virtualization

Hardware-
I/O assisted
Virtualization

Figure 5.6: Virtualization Technologies and its Sub-types.

15
Chapter (5): Virtualization

- Relationship between Virtualization Architectures and Virtualization


Technologies

Different virtualization technologies can be used for the same virtualization


architecture at different stages. The key solution used to implement the
virtualization architecture can consist of multiple virtualization technologies.
Therefore, the virtualization architectures and virtualization technologies are not
mapped to each other.

5.4.1 Server virtualization

Physical servers are virtualized into logical resources, which are distinguished by
priority levels and allocated on demand.

This virtualization technology simplifies management, improves efficiency, and


reduces the resources reserved for the peak of a single workload. Server
virtualization adopts the isolation method.

Nine virtualization technologies can be obtained based on different virtualization


objectives and degrees.

16
Chapter (5): Virtualization

5.4.1.1 Virtualization objectives

- Processor

Processor virtualization allows commands on virtual machines (VMs) to be


executed properly and efficiently as they are executed on physical servers.

- Memory

Memory virtualization allows each VM to have an independent memory address


and ensures memory efficiency approaching that of physical servers.

- I/O

I/O virtualization allows VMs to access required I/O resources, isolates I/O
resources, and lowers the virtualization costs.

5.4.1.2 Virtualization Degree

- Full Virtualization
In full virtualization, the virtual machine monitor (VMM) implements
virtualization of CPUs, memory, and device I/O without modification of guest OSs
and hardware. Full virtualization provides high compatibility but brings extra
overheads to processors.

17
Chapter (5): Virtualization

-Para-Virtualization
In Para-virtualization, the VMM implements CPU and memory virtualization. The
guest OS implements device I/O virtualization. The guest OS need to be modified
to coordinate with the VMM. Para-virtualization provides high performance but
poor compatibility.

-Hardware-assisted

Hardware-assisted virtualization is a platform virtualization approach that enables


efficient full virtualization with the help of hardware, primarily the host processor.
In hardware-assisted virtualization, guest OSs are not modified and good
compatibility is provided. This technology is the development trend of
virtualization and will eliminate the difference between software virtualization
technologies.

5.4.2 Storage Virtualization


Storage virtualization refers to providing a logical, abstracted view of physical
storage devices. It provides a way for many users or applications to access storage
without being concerned with where or how that storage is physically located or
managed. It enables physical storage in an environment to be shared across
multiple application servers, and physical devices behind the virtualization layer to
be viewed and managed as if they were one large storage pool with no physical
boundaries. The storage virtualization hides the fact there are separate storage
devices in an organization by making all the devices appear as one device.

18
Chapter (5): Virtualization

Virtualization hides the complex process of where the data needs to be stored and
bringing it back and presenting it to the user when it is required.

There are 3 storage virtualization types described in the next section.

5.4.2.1 Storage Virtualization types


Host-based, Storage device-based, and Network-based virtualization are the 3
storage virtualization types as follow.

- Host-based Storage Virtualization


Host-based storage virtualization applies when only one host server or
cluster accesses multiple disk arrays.

The hosted-based storage virtualization, also known as logical volume


management, is implemented by the logical volume management software
on the host operating system (OS).
The logical volume management software virtualizes multiple Disk Arrays
into virtual logical block space. When the storage demand increases, the
logical volume management software maps some logical space to the newly
added disk arrays. Therefore, physical storage devices can be added or
removed without interrupting services.

- Storage Device-based Storage Virtualization


Storage device-based storage virtualization applies when multiple hosts
access a disk array. This technology implements virtualization by adding the

19
Chapter (5): Virtualization

virtualization function on the storage controller. The storage capacity on a


disk array is divided into multiple logic unit numbers (LUNs) to provide
access for different host systems.
In this type, a storage module provides the virtualization service, and no
additional virtualization software is required. But it provides only an
incomplete storage virtualization solution.
- Network-based Storage Virtualization
Network-based storage virtualization applies when multiple hosts access
multiple heterogeneous disk arrays. This technology implements
virtualization by adding the virtualization engine on the storage area network
(SAN).
In network-based virtualization, storage virtualization is implemented on
network devices between hosts and storage devices. Generally, virtualization
engines are used on the network, or storage virtualization functional modules
are embedded in switches, routers, or other additional servers.

5.4.3 Network Virtualization


Network Virtualization types are classified into 2 categories as follow:

- Dividing a physical network into multiple logical networks


In cloud computing, the technology that divides a physical network into
multiple logical virtual networks is commonly used.

20
Chapter (5): Virtualization

Commonly used technologies include the VLAN, virtual routing and


forwarding (VRF), virtual VPN, virtual Firewall, virtual load balancing, virtual
switch, virtual network link (VN-Link), and edge virtual bridging (EVB).

- Combining multiple physical networks into a logical network


The purpose of combing multiple physical networks into a logical network is to
improve performance. Commonly used technologies include stacking, cluster,
and Cisco virtual private cloud (VPC) and virtual software switch (VSS).

5.4.3 Service Virtualization


Service virtualization in data centers refers to the services such as firewall services
for additional security or load-balancing services for additional performance and
reliability.
The virtual interface—often referred to as a virtual IP (VIP)—is exposed to the
outside world, representing itself as the actual web server, and it manages the
connections to and from the web server as needed. This enables the load balancer
to manage multiple web servers or applications as a single instance, providing a
more secure and robust topology than one allowing users direct access to
individual web servers. This is a one-to-many virtualization representation. One
server is presented to the world, hiding the availability of multiple servers behind a
reverse proxy appliance.

21
List of Figures
Figure 1.1 Huawei Cloud Computing View.
Figure 1.2 An example of the cloud symbol in network
diagrams.
Figure 2.1 The Conceptual Reference Model.
Figure 2.2 Cloud Actors.
Figure 2.3 Interactions between the actors in Cloud
Computing.
Figure 2.4 Usage Scenario for Cloud Brokers.
Figure 2.5 Usage Scenario for Cloud Carriers.
Figure 2.6 Usage Scenario of Cloud Auditor.
Figure 2.7 Example service available to cloud consumer.
Figure 2.8 Cloud Provider Major Activities.
Figure 2.9 Cloud Broker Service Intermediation.
Figure 2.10 Cloud Broker Service Aggregation
Figure 2.11 Cloud Broker Complex Service Aggregation
Figure 2.12 Cloud Broker Service Arbitrage
Figure 3.1 Level of elasticity and Pay-per-use of different
cloud deployment types.
Figure 3.2 Cloud Computing Deployment Models
Figure 3.3 Public cloud.
Figure 3.4 On-site Private Cloud.
Figure 3.5 Out-Sourced Private Cloud.
Figure 3.6 On-site Community Cloud
Figure 3.7 Outsourced Community Cloud.
Figure 3.8 Hybrid Cloud (includes two or more cloud models
and may contain all models in some cases).
Figure 4.1 Service Delivery Models.
Figure 4.2 Service models Pyramid like representation.
Figure 4.3 Cloud service models aligned with their principle
consuming populations.
Figure 4.4 Some examples of SaaS providers and applications.
Figure 4.4 Example Gmail cloud SaaS client for email
accessed using Google’s Chrome web Browser.
Figure 4.5 SaaS Provider/Consumer Scope of Control
Figure 4.6 Some examples of PaaS providers and applications.
Figure 4.7 Microsoft’s Windows Azure PaaS development
resources illustrating its supported variety of
programming languages.

1
Figure 4.8 PaaS Component Stack and Scope of Control
Figure 4.9 Some examples of IaaS providers and applications.
Figure 4.10 Windows Azure Platform management console,
showing two existing virtual machines configured
as database servers for development access using a
Visual Studio utility.
Figure 4.11 IaaS Component Stack and Scope of Control.
Figure 4.12 A WordPress blog is backed up each night to
Dropbox by a third-party application that consumes
the IaaS cloud storage aspect of Dropbox.
Figure 5.1 Virtualization layer and the situation before and
after Virtualization.
Figure 5.2 Before and after Virtualization.
Figure 5.3 Hosted Virtualization Architecture.
Figure 5-4 Bare-metal virtualization architecture.
Figure 5.5 Virtualization Types.
Figure 5.6 Virtualization Technologies and its Sub-types.

2
List of Tables

Table 1.1 Difference between distributed computing, grid


computing, and utility computing technologies.
Table 2.1 Actors in Cloud Computing.
Table 5.1 Performance Metrics before and after Virtualization.

3
List of Abbreviation

ARPANET Advanced Research Projects Agency Network


API Application Programming Interface
AWS Amazon Web Services
CAPEX Capital Expenditure
CCP Cloud Computing Provider
CDN Content Delivery Network
CRM Customer Relationship Management
CSB Cloud Service Broker
CSP Cloud Service Provider
EC2 Elastic Compute Cloud
ERP Enterprise Resource Planning
EVB Edge Virtual Bridging
HaaS Hardware as a Service
IaaS Infrastructure as a Service
IDE Integrated Development Environment
JVM Java Virtual Machine
LUN Logic Unit Number
MID Mobile Internet Device
NIST National Institute of Standards and Technology
OPEX Operational Expenditure
OS Operating System
PaaS Platform as a Service
QoS Quality of Service
SaaS Software as a Service
SAN Storage Area Network.
SDK Software Development Kit
SLA Service Level Agreement
VIP Virtual IP
VLAN Virtual Local Area Network
VM Virtual Machine

4
VMM Virtual Machine Monitor
VN-Link Virtual Network Link
VPC Virtual Private Cloud
VPN Virtual Private Network
VRF Virtual Routing and Forwarding
VSS Virtual Software Switch
XaaS Everything as a Service

5
List of Tables
Table 1.1 Difference between distributed computing, grid
computing, and utility computing technologies.
Table 2.1 Actors in Cloud Computing.
Table 5.1 Performance Metrics before and after Virtualization.

You might also like