Cs8791 Cloud Computing Unit1 Notes
Cs8791 Cloud Computing Unit1 Notes
Cs8791 Cloud Computing Unit1 Notes
UNIT I INTRODUCTION 9
Introduction to Cloud Computing – Definition of Cloud – Evolution of Cloud Computing –
Underlying Principles of Parallel and Distributed Computing – Cloud Characteristics –
Elasticity in Cloud – On-demand Provisioning.
1.1. Introduction
A definition proposed by the U.S. National Institute of Standards and Technology (NIST):
“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”.
Whenever you travel through a bus or train, you take a ticket for your destination and hold back
to your seat till you reach your destination. Likewise, other passengers also take ticket and travel
in the same bus with you and it hardly bothers you where they go. When your stop comes you
get off the bus thanking the driver. Cloud computing is just like that bus, carrying data and
information for different users and allows to use its service with minimal cost.
Cloud Computing can be defined as delivering computing power (CPU, RAM, Network
Speeds, Storage OS software) a service over a network (usually on the internet) rather than
physically having the computing resources at the customer location.
It introduces the concept of everything as a service, mostly referred as XaaS, where the different
components of a system — IT infrastructure, development platforms, databases, and soon—can
be delivered, measured, and consequently priced as a service.
Figure 2: Cloud Computing – Everything as a Service (Sharing the Resources (Database, App
Server, API, Mobile & PC)
Another important aspect of cloud computing is its utility-oriented approach. More than any
other trend in distributed computing, cloud computing focuses on delivering services with a
given pricing model, in most cases a “pay-per-use” strategy. It makes it possible to access online
storage, rent virtual hardware, or use development platforms and pay only for their effective
usage, with no or minimal up-front costs.
I don’t care where my servers are, who manages them, where my documents are stored, or where
my applications are hosted. I just want them always available and access them from any device
connected through Internet. And I am willing to pay for this service for as a long as I need it.
Figure 1.3 depicts the surplus of different notions included in current definitions of cloud
computing.
1.3 Figure: Cloud Computing Technologies, Concepts and Ideas.
A bird’s-eye view of a cloud computing environment is shown in Figure 1.4.
Public Clouds
Applications
Development and
Runtime Platform
Compute
Cloud
Storage
Manager
Clients Private
Cloud
Other Govt.
Cloud Services Cloud Services
10
a) Service Models
b) Deployment Models
a) Service Models
b) Deployment Models
The three major models for deploying and accessing cloud computing environments are public
clouds, private/enterprise clouds, and hybrid clouds (see Figure1.5). Public clouds are the
most common deployment models in which necessary IT infrastructure (e.g., virtualized
datacenters) is established by a third-party service provider that makes it available to any
consumer on a subscription basis. Such clouds are appealing to users because they allow users to
quickly leverage compute, storage, and application services. In this environment, users’ data and
applications are deployed on cloud datacenters on the vendor’s premises.
• Ubiquitous network access: cloud features don’t require special devices – laptops, mobile
phones, etc. are generally supported.
• Resource pooling: cloud resources are pooled to serve many customers “… using a multi-
tenant model, with different physical and virtual resources…”
• Measured service: resource use is measured and monitored; charges are made based on
usage and service type (e.g., storage, CPU cycles, etc.)
a) Distributed Systems
b) Virtualization
c) Web 2.0
d) Service-oriented computing computing
e) Utility computing.
a) Distributed Systems
◦ Grids, Clouds - Users can “consume” resources in the same way as they use other
utilities such as power, gas, and water.
1. Mainframe Computing
2. Cluster Computing
3. Grid Computing
4. Cloud Computing
Hardware Virtualization
Cloud computing solutions delivering virtual server on demands, such as Amazon EC2, Right
Scale, VMware vCloud, and others.
c) Web 2.0
• The Web is the primary interface through which Cloud computing deliver its services.
• Provide Web into a rich platform for application development. (RIA-Rich Internet
Application).
• It is collection of standard technologies:
• XML
• AJAX
• Flash, Silverlight
Google Documents, Google Maps, Flickr, Facebook, Twitter, YouTube, Blogger, and
Wikipedia.
• Service orientation is the core reference model for Cloud computing systems.
“any piece of code that performs a task can be turned into a service and expose its
functionalities through a network accessible protocol”
• Service-Oriented Computing introduces and diffuses two important concepts, which are
also fundamental for Cloud computing:
1. Quality of Service (QoS), metrics such as
e) Utility computing
“A service provisioning model for compute services in which resources such as storage, compute
power, applications, and infrastructure are packaged and offered on a pay-per-use basis”
Example:
IBM and other mainframe providers offered mainframe power to organizations such
as Banks and Government Agencies throughout their datacentres.
• The term parallel implies a tightly coupled system, whereas distributed systems refers
to a wider class of system, including those that are tightly coupled.
• More precisely, the term parallel computing refers to a model in which the
computation is divided among several processors sharing the same memory.
• The shared memory has a single address space, which is accessible to all the processors.
• Parallel programs are then broken down into several units of execution that can be
allocated to different processors and can communicate with each other by means of
shared memory.
• Originally parallel systems are considered as those architectures that featured multiple
processors sharing the same physical memory and that were considered a single
computer.
The term distributed computing encompasses any architecture or 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 the same computer, or
cores within the same processor.
Originally parallel systems are considered as those architectures that featured multiple processors
sharing the same physical memory and that were considered a single computer.
– Computing Grids
• The parallel program consists of multiple active processes (tasks) simultaneously solving
a given problem.
• A given task is divided into multiple subtasks using a divide-and-conquer technique, and
each subtask is processed on a different central processing unit (CPU).
• Many applications today require more computing power than a traditional sequential
computer can offer.
• The workload can then be shared between different processors. This setup results in
higher computing power and performance than a single processor a system offers.
organized data elements of vectors A and B can be divided into multiple sets ( N- sets for N PE
systems), and each PE can process one data set.
• Dominant representative SIMD systems are Cray’s Vector processing machine and
Thinking Machines Cm*, and GPGPU accelerators.
Data Output
Data Input
2
2
Processor 2
• For example
• Machines built using MISD model are not useful in most of the applications.
• Few machines are built but none of them available commercially.
Processor 2
Processor N
• Each PE in the MIMD model has separate instruction and data streams, hence machines
built using this model are well suited to any kind of application.
• MIMD machines are broadly categorized into shared-memory MIMD and distributed
memory MIMD based on the way PEs are coupled to the main memory.
Instruction Instruction Instruction
Stream 1 Stream 2 Stream N
Processor 1
Processor 2
Processor N
• All the PEs are connected to a single global memory and they all have access to it.
• Systems based on this model are also called tightly coupled multi-processor systems.
• The communication between PEs in this model takes place through the shared memory.
• Modification of the data stored in the global memory by one PE is visible to all other
PEs.
• Dominant representative shared memory MIMD systems are silicon graphics machines
and Sun/IBM SMP (Symmetric Multi-Processing).
Processor 1 Processor 2 Processor N
Memory Bus
bb
• The shared memory MIMD architecture is easier to program but is less tolerant to failures
and harder to extend with respect to the distributed memory MIMD model.
• Failures, in a shared memory MIMD affect the entire system, whereas this is not the case
of the distributed model, in which each of the PEs can be easily isolated.
• Moreover, shared memory MIMD architectures are less likely to scale because the
addition of more PEs leads to memory contention.
• This is a situation that does not happen in the case of distributed memory, in which each
PE has its own memory.
• This approach is highly suitable to processing on machines based on the SIMD model.
• In the case of Process Parallelism, a given operation has multiple (but distinct) activities
that can be processed on multiple processors.
As shown in the table and depicted in Figure 2.7, parallelism within an application can be
detected at several levels:
• Large grain (or task level)
• Medium grain (or control level)
• Fine grain (data level)
• Very fine grain (multiple-instruction issue)
1.3.9. Components of distributed System
• A distributed system is the result of the interaction of several components that traverse
the entire computing stack from hardware to software.
• The figure provides an overview of the different layers that are involved in providing the
services of a distributed system.
1. Hardware Layer
2. Operating System Layer
3. Middleware Layer
4. Application Layer
At the very bottom layer, computer and network hardware constitute the physical infrastructure;
these components are directly managed by the operating system, which provides the basic
services for Inter Process Communication (IPC), process scheduling and management, and
resource management in terms of file system and local devices. Taken together these two layers
become the plat- form on top of which specialized software is deployed to turn a set of
networked computers into a distributed system.
The use of well-known standards at the operating system level and even more at the hardware
and network levels allows easy harnessing of heterogeneous components and their organization
into a coherent and uniform system.
The middleware layer leverages such services to build a uniform environment for the develop
ment and deployment of distributed applications.
The top of the distributed system stack is represented by the applications and services designed
and developed to use the middleware.
These can serve several purposes and often expose their features in the form of Graphical User
Interfaces (GUIs) accessible locally or through the Internet via a Web browser. A very good
example is constituted by Infrastructure-as-a-Service (IaaS) providers such as Amazon Web
Services (AWS), which provide facilities for creating virtual machines, organizing them together
into a cluster, and deploying applications and systems on top.
1.3.10. Architectural styles for distributed computing
• Although a distributed system comprises the interaction of several layers, the middleware
layer is the one that enables distributed computing, because it provides a coherent and uniform
runtime environment for applications.
• Architectural styles do the same for the overall architecture of software systems.
b) System Architectural styles: styles that describe the physical organization of distributed
software systems in terms of their major components.
• The repository architectural style is the most relevant reference model in this category.
• The ways in which the independent components interact with the central data structure
can be very heterogeneous.
– Knowledge sources: These are entities that update the knowledge base that is
maintained in the black board.
– Blackboard: This represents the data structure that is shared among the knowledge
sources and stores the knowledge base of the application.
– Control: The control is the collection of triggers and procedures that govern the
interaction with the blackboard and update the status of the knowledge base.
A data-flow styles explicitly incorporate the pattern of data-flow, since their design is determined
by an orderly motion of data from component to component, which is the form of
communication between them.
Batch Sequential:
• The batch sequential style is characterized by an ordered sequence of separate programs
executing one after the other.
• These programs are chained together by providing as input for the next program the
output generated by the last program after its completion, which is most likely in the form
of a file.
• This design was very popular in the mainframe era of computing and still finds
applications today.
For example, many distributed applications for scientific computing are defined by jobs
expressed as sequence of programs that, for example, pre-filter, analyze, and post process data.
Pipe-and-Filter Style: It is a variation of the previous style for expressing the activity of
a software system as sequence of data transformations. Each component of the processing chain
is called a filter, and the connection between one filter and the next is represented by a data
stream.
3.VIRTUAL MACHINE ARCHITECTURES
• The virtual machine class of architectural styles is characterized by the presence of an
abstract execution environment (generally referred as a virtual machine) that simulates features
that are not available in the hardware or software.
• Applications and systems are implemented on top of this layer and become portable over
different hardware and software environments.
• The general interaction flow for systems implementing this pattern is – the program (or
the application) defines its operations and state in an abstract format, which is interpreted
by the virtual machine engine. The interpretation of a program constitutes its execution.
a) Rule based systems
b) Interpreters, and command language processors.
Rule-Based Style:
This architecture is characterized by representing the abstract execution environment as
an inference engine. Programs are expressed in the form of rules or predicates that hold true.
The examples of rule-based systems can be found in the networking domain: Network Intrusion
Detection Systems (NIDS) often rely on a set of rules to identify abnormal behaviors connected
to possible intrusion in computing systems.
Interpreter Style: The presence of engine to interpret the style.
5. INDEPENDENT COMPONENTS
a) Communicating Processes
a. In this architectural style, components are represented by independent processes
that leverage IPC facilities for coordination management.
b. Each of the processes provides other processes with services and can leverage the
services exposed by the other processes.
b) Event Systems
a. In this architectural style, the components of the system are loosely coupled and
connected. In addition to exposing operations for data and state manipulation,
each component also publishes (or announces) a collection of events with which
other components can register.
Like our Function calls in programming
b) System Architectural Styles
• System architectural styles cover the physical organization of components and processes
over a distributed infrastructure.
Client / Server
• The information and the services of interest can be centralized and accessed through a
single access point : the server.
• Multiple clients are interested in such services and the server must be appropriately
designed to efficiently serve requests coming from different clients.
Peer- to – Peer
• Symmetric architectures in which all the components, called peers, play the same role
and incorporate both client and server capabilities of the client/server model.
• More precisely, each peer acts as a server when it processes requests from other peers
and as a client when it issues requests to other peers.
2. The client process, by using a given addressing scheme, obtains a reference to the active
remote object. This reference is represented by a pointer to an instance that is of a shared type
of interface and class definition
3. The client process invokes the methods on the active object by calling them through the
reference previously obtained. Parameters and return values are marshaled as happens in the
case of RPC.
• Java Remote Method Invocation (RMI): technology provided by Java for enabling
RPC among distributed Java objects.
• .NET Remoting: IPC among .NET applications, a uniform platform for accessing remote
objects from within any application developed in any of the languages supported by
.NET.
2. 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).
3. 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
4. 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.
5. Measured service. Cloud systems automatically control and optimize resource use by
leveraging a metering capability at some level of abstraction appropriate to the type of service
(E.G., Storage, Processing, Bandwidth, And Active User Accounts). Resource usage can be
monitored, controlled, and reported, providing transparency for both the provider and consumer
of the utilized service.