CC Unit1
CC Unit1
1
• Unit 1.
• Introduction.
□ Cloud Computing at a Glance
□ Historical Developments
□ Building Cloud Computing Environments
□ Computing Platforms and Technologies,
Principles of Parallel and Distributed Computing
□ Eras of Computing,
□ Parallel vs. Distributed Computing
□ Elements of Parallel Computing,
□ Elements of Distributed Computing.
2
Introduction
5
• Computing services will be readily available on
demand , like other utility services such as
water, electricity, telephone, and gas available
in today’s society.
• Users (consumers)need to pay providers only
when they access the computing services.
• Consumers no longer need to invest heavily,
or encounter difficulties in building and
maintaining complex IT infrastructure.
7
• In this model , users access services based on their
requirements without regard to where the services are
hosted. This model has been referred to as utility
computing recently (since 2007) as Cloud Computing.
• Cloud Computing can be classified as a new paradigm
for the dynamic provisioning of computing services
supported by
state-of-the-art data centers employing virtualization
technologies for consolidation and effective utilization of
resources.
• Cloud computing allows renting infrastructure ,
runtime environments, and services on pay per-
use basis.
11
The Vision of Cloud Computing
• Cloud computing allows anyone having a
credit card to provision virtual hardware ,
runtime environments, and services.
13
The vision of Cloud computing
• Cloud computing allows anyone having a credit card to
provision virtual hardware , runtime environments and
services.
• Different stakeholders leverage Clouds for a variety of
services.
□ The need for ubiquitous storage and compute power
on demand is the most common reason to consider
cloud computing.
□ A scalable runtime for applications is an attractive
option for application and system developers that do
not have infrastructure or cannot afford any further
expansion of existing one.
□ The capability of Web-based access to documents and
their processing using sophisticated applications is one
of the appealing factors for end-users. 12
Defining a Cloud
• Cloud computing has become a popular buzzword
and it has been widely used to refer to different
technologies , services and concepts
• Cloud computing always associated with
□ Virtualized infrastructure (hardware on demand)
□ Utility computing
□ IT outsourcing
□ Platform and software as a service
14
• cloud computing refers to the internet-centric way of
doing computing.
• Internet plays a fundamental role in cloud computing
since it represents either the medium or the platform
through which many cloud computing services are
delivered and made accessible.
16
• Definition given by Armbrust :
“Cloud computing refers to both the
applications delivered as a service over the
internet, and the hardware and system
software in the datacenters that provide those
services”
17
• This definition describes cloud computing as a
phenomenon touching on the entire stack :
from the underlying hardware to the high level
software services and applications.
• It introduces the concept of
everything-as-a-service – XaaS .
18
• Another aspect of cloud computing is its
utility-oriented approach. Cloud computing
focuses on delivering services with a given
pricing model : in most of the cases a
“pay-per-use” strategy. It makes possible to
access online storage , to rent virtual
hardware , or to use development platforms
and pay only for their effective usage with no
or minimal upfront usage.
20
• Rajkumar Buyya definied
“A cloud is type of parallel and distributed
system consisting of a collection of
interconnected and virtualized computers that
are dynamically provisioned and presented as
one or more unified computing resources
based on service-level agreements established
through negotiation between the service
provider and consumers.”
21
A closer look
1. Large enterprises can offload some of their
activities to cloud based systems.
The New York Times has converted its digital
library about past editions into a Web friendly
format. This required a considerable amount of
computing power for a short period of time..
22
2. Small enterprises and start-ups can afford to
translate into business results their ideas more
quickly without excessive upfront costs.
23
3. System developers can concentrate on the
business logic rather than dealing with the
complexity of infrastructure management
and scalability.
Little Fluffy Toys is a London company has
developed a widget that provide users with
information about nearby rental bicycle
services. The company managed to back the
widgets computing needs on Google
AppEngine and be on market in one week .
24
4. End users can have their documents accessible
from everywhere and any device.
25
Characteristics and benefits
• Cloud computing has some interesting
characteristics that bring benefits to both cloud
service consumers (CSCs) and cloud service
providers (CSPs). They are
1. No upfront commitments
2. On demand access
3. Nice pricing
4. Simplified application acceleration and scalability
5. Efficient resource allocation
6. Energy efficiency
7. Seamless creation and the use of third-party
services.
26
Cloud computing reference model
32
1. Software as a Service (SaaS)
2. Platform as a Service (PaaS)
33
34
• At the base of the stack ,Infrastructure –as-a –Service
solutions deliver infrastructure on demand, in the form
of virtual hardware, storage , and networking.
36
• At the top of the stack, Software-as-a-Service.
37
• Each layer provides different services to users:
1. IaaS- services are used to develop scalable web
sites or for background processing.
38
Historical developments
• In tracking the historical evolution , 5 core
technologies played important role
1. Distributed systems
2. Virtualization
3. Web 2.0
4. Service oriented computing
5. Utility computing.
39
Distributed systems
40
• Other 3 major milestones that led to cloud
computing is :
1. Mainframe computing
2. Cluster computing
3. Grid computing
41
1. Mainframes
□ This is the first example of large computational
facility leveraging multiple processing units.
□ They are powerful, highly reliable computers
specialised for large data movement and massive
I/O operations.
□ They are mostly used by large organizations for bulk
data processing.
□ They provide large computational power by using
multiple processors which were presented as a
single entity to users.
42
□ Batch processing is the main application of
mainframes.
□ The popularity have reduced but still in use for
transaction processing (i.e., online banking,
airline ticket booking, supermarket and telcos
and government services)
• Clusters
□ Cluster Computing started as a low cost
alternative to use of mainframes and
supercomputers.
□ In 1980 clusters became standard technology
for parallel and high performance computing.
□ Being built by commodity machines they are
cheaper than mainframes.
□ Cluster technology contributed to the evolution
of tools and framework , they include condor,
parallel virtual machine (PVM), message
passing interface (MPI).
43
• Grids
□ Apperaed in early 1990s
44
• Virtualization
□ Virtualization is another core technology for cloud
computing.
47
Web 2.0
□ The web is the primary interface through
which cloud computing deliver its services.
□ It encompasses a set of technologies and
services that facilitate interactive information
sharing , collaboration , user-centered design
and application composition.
□ This has transformed the web into a rich
platform for application development . Such
evolution is known as web 2.0.
48
Web 2.0 basically refers to the transition from static
HTML Web pages to a more dynamic Web that is
more organized and based on serving Web
applications to users.
49
1. Web 2.0 brings interactivity and flexibility into web pages,
which provide enhanced user experience by gaining web-
based access to all the functions that are normally found
in desktop applications.
2. Web 2.0 applications are extremely dynamic : they
improve continuously and new updates and features are
integrated at a constant rate, by following the usage
trend of the community.
3. Loose coupling is another fundamental property. New
applications can be “synthesized” simply by composing
existing services and integrating them together, thus
providing added value.
51
• Service-oriented computing(SOC)
• A service is an abstraction representing a self-describing
and platform agnostic component that can perform any
function. This can be anything from simple function to a
complex business process.
56
• SaaS
57
• Utility oriented computing
□ Its a model in which resources such as
storage, compute power, applications, and
infrastructure are packaged and offered on a
pay-per-use basis.
□ The idea of providing computing as a utility
like natural gas, water, power, and telephone
connection has long history but has reality
today with the advent of cloud computing.
58
Building cloud computing environments
1. Application development
• Applications that leverage cloud computing
benefit from its capability of dynamically scaling
on demand.
• One class of applications that take the biggest
advantage from this feature is web applications.
• With the diffusion of web 2.0 technologies , the
web has become platform for developing rich
and complex applicatons.
• Another class of application is resourse-
intensive applications.
• This can be either data intensive or compute
intensive applications.
59
2. Infrastructure and system development
• Distributed computing is a foundational
model for cloud computing because cloud
systems are distributed systems.
• Web 2.0 technologies constitute the
interface through which cloud computing
services are delivered, managed, and
provisioned.
• Virtualization is the core feature of the
infrastructure used by cloud providers.
60
Computing platforms and technologies
1. Amazon Web Services (AWS)
□ Offers cloud IaaS services, ranging from virtual
compute, storage and networking.
□ Famous for compute and storage on demand
services namely Elastic Compute Cloud (EC2) and
Simple Storage Service (S3).
□ EC2 provides users with customizable virtual
hardware that can be used as the base
infrastructure for deploying computing systems
on the cloud.
□ S3 delivers persistent storage on demand. Users can
store objects of any size , from simple files to entire
disk images and have them accessible from
everywhere.
□ Amazon Virtual Private Cloud (VPC)
□ Amazon CloudFront
□ Amazon Relational Database Services (RDS)
61
2. Google AppEngine
□ App Engine is a fully managed, server less platform
for developing and hosting web applications at
scale. we can choose from several popular
languages, libraries, and frameworks to develop your
apps, then let App Engine take care of provisioning
servers and scaling your app instances based on
demand.
□ Is a scalable runtime environment devote to
executing Web applications.
□ AppEngine provides both a secure execution
environment and a collection of services that
simplify the development of scalable and high
performance web applications. 62
□ Developers can build and test applications
on their on machines by using the
AppEngine SDK , which replicates the
production runtime environment, and
helps test and profile applications. Once
development is complete developers can
easily migrate their application to
AppEngine and make it available to the
world. The languages supposed are Python,
Java, and Go.
3. Microsoft Azure
□ Is a cloud operating system and a platform for
developing applications in the cloud.
63
4. Hadoop
□ Apache Hadoop – an open source framework
suited for processing large data set.
□ It is an implementation of MapReduce, an application
programming model developed by google, which
provides two fundamental operations for data
processing: map and reduce
□ Map – transforms and synthesizes the input data
provided by the user.
□ Reduce – aggregates the output obtained by the map
operations
65
6. Manjrasoft Aneka
□ Cloud application platform for rapid creation of
scalable applications and their deployment on various
types of clouds in a seamless and elastic manner.
66
Principles of Parallel and Distributed computing
67
Eras of computing
68
Parallel vs distributed computing
• The term parallel – implies a tightly coupled system
• distributed – implies a wider class of system
including those who are tightly coupled.
Parallel computing
□ Refers to the model where the computation is divided among
several processors sharing the same memory.
□ It is characterised by the homogeneity of components : each
processor is of the same type and it has the same capability of
the others.
□ The shared memory has a single address space , which is
accessible to all the processors.
□ Parallel programs are then broken down in to several units of
executions that can be allocated to different processors, and can
communicate each other by means of the shared memory.
69
• Distributed computing
□ Any system that allows the computation to be
broken down into units and executed
concurrently on different computing
elements, whether these are processors on
different nodes , processors on same
computer, or cores within the same processor.
70
Elements of parallel computing
□ Processing of multiple tasks simultaneously on
multiple processors –parallel processing
□ The parallel program consists of multiple active
processes simultaneously solving a given problem .
□ A given task is divided into multiple subtasks
using divide and conquer technique and each of
them is processed on different CPUs.
□ Programming on multi-processor system using
divide and conquer technique is called parallel
programming.
71
❑ Hardware architectures for parallel processing
72
SISD
73
• SISD
• Uniprocessor machine capable of executing
single instruction which operates on single data
stream.
74
SIMD
75
• SIMD
□ Is a multiprocessor machine capable of executing
the same instruction on all the CPUs, but
operating on different streams.
□ These are well suited for scientific computing
since they involve lots of vector and matrix
operations.
□ E.g: statements such as Ci=Ai*Bi
77
• MISD
78
MIMD
79
• MIMD
□ Is a multiprocessor machine capable of executing
multiple instructions on multiple data sets.
□ Each PE has separate instructions and data
streams, and hence machines built using this
model are suited for any kind of operation.
80
shared and distributed memory MIMD
81
• Shared memory MIMD
82
• Distributed memory MIMD machine.
□ All PEs have a local memory.
□ Also called loosely-coupled multiprocessor
systems.
□ The communication between PEs takes place
through the interconnection network (IPC-
inter process communication channel).
□ Easier to program but is less tolerant to
failures.
83
❑ Approaches to parallel programming
84
• variety of parallel programming approaches are:
1. Data parallelism- divide and conquer technique is used
to split data into multiple sets, and each data set is
processed on different PEs by using the same
instruction.
2. Process parallelism- a given operation has multiple
activities , which can be processed on multiple
processors.
3. Farmer and worker model- a job distribution approach
is used. One processor is configured as master and all
other remaining PEs are designated as slaves; the
master assigns a job to slave PEs and they on
completion inform the master which in turn collects
the results.
85
Levels of parallelism
• Levels of parallelism are decided based on the
lumps of code (grain size) that can be
potential candidate for parallelism.
86
• Parallelism within an application can be
detected at several levels:
1. Large-grain (or task-level)
2. Medium-grain(or control-level)
3. Fine-grain(data-level)
88
Laws of caution
89
• Here are two important guidelines to take into
account:
1. Speed of computation is proportional to the
square root of system cost ; they never
increase linearly. Therefore, faster the
system , more the expense to increase its
speed.
2. Speed-up by a parallel computer increases as
the logarithm of the number of processors.
90
91
Elements of distributed computing
• General concept and definitions
□ By Tanenbaum
“ A distributed system is a collection of
independent computers that appears to its users
as a single coherent system.”
92
❑ Components of a distributed system
94
95
❑ Architectural styles for distributed
computing
96
• Architectural styles can be divided into two
major classes:
97
Software architectural styles
a. Data centered architectures-identify the
data as the fundamental element of the
software system and access to shared
data
b. Data flow architectures-availability of the
data that controls the computation
c. Virtual machine architectures-the
presence of an abstract execution
environment that stimulates h/w and s/w
98
d. Call and return architectures – identifies all
those systems that are composed by components
connected together by method calls.
e. Architectural styles based on independent
components- model systems in terms of
independed components which interact to each
other to perform their activities.
System architectural styles.
99
- for the client design , two major models
are
1. thin-client model – the load of data
processing and transformation is put on the
server side, and the client is concerned with
retrieving and returning the data
2. fat-client model – Client is responsible
for processing and transforming the data
before returning it back to the user.
100
101
b. Peer –to- peer
this model introduces a symmetric
architecture where all the components , called
peers, play the same role and incorporate
both the client and server capabilities.
102