CH-3
Cloud Computing Technologies
and Virtualization
Cloud Computing Technologies
• To make cloud computing flexible,
reliable, and usable following
technologies are listed :
• Virtualization
• Service-Oriented Architecture (SOA)
• Grid Computing
• Utility Computing
Virtualization
• Virtualization is a technique, which allows to
share single physical instance of an application
or resource among multiple organizations or
tenants .
• It does this by assigning a logical name to a
physical resource and providing a pointer to
that physical resource when demanded.
Service-Oriented Architecture
(SOA)
• Service Oriented Architecture (SOA) is a
specification and a methodology for providing
platform and language-independent services for use
in distributed applications.
• Service-Oriented Architecture helps to use
applications as a service for other applications
regardless the type of vendor, product or technology.
• It is possible to exchange the data between
applications of different vendors without additional
programming or making changes to services.
Grid Computing
• Grid Computing refers to distributed
computing, in which a group of computers
from multiple locations are connected with
each other to achieve a common objective.
These computer resources are heterogeneous
and geographically dispersed.
• Grid Computing breaks complex task into
smaller pieces, which are distributed to CPUs
that reside within the grid.
Utility Computing
• Utility computing is based on Pay-per-
Use model.
• It offers computational resources on demand
as a metered service. Cloud computing, grid
computing, and managed IT services are based
on the concept of utility computing.
Load Balancing and
Virtualization
• The technology used to distribute service requests
to resources is referred to as load balancing.
• Load balancing can be implemented in hardware
or in software
• Load balancing is an optimization technique which
is used to:
* increase utilization and throughput
* lower latency
* reduce response time
* avoid system overload
• The following network resources can be
load balanced:
Network interfaces and services such as
DNS, FTP, and HTTP
Connections through intelligent switches
Processing through computer system
assignment
Storage resources
Access to application instances
Load balancing mechanism
• Client/
Sent request service
requester
Listens • Load
request balancer
• Scheduler
Assigns round
request robin/ w
round robin
Conti..
• A session ticket is created by the load balancer so that
traffic from the client can be properly routed to requested
resource.
• Without this session record or persistence, a load balancer
would not be able to correctly failover a request from one
resource to another.
• Persistence can be enforced using session data stored in a
database and replicated across multiple load balancers.
• a session cookie stored on the client has the least amount
of overhead for a load balancer because it allows the load
balancer an independent selection of resources.
Advanced load balancing
Features:
• the response time, the work queue length, connection
latency and capacity,
• the ability to bring standby servers online (priority
activation)
• workload weighting based on a resource’s capacity
(asymmetric loading),
• HTTP traffic compression, TCP offload and buffering,
• security and authentication,
• Packet shaping using content filtering and priority
queuing.
Application Delivery Controller
• An Application Delivery Controller (ADC) is a combination
load balancer and application server
• It is a server placed between a firewall or router and a server
farm providing Web services.
• Application Delivery Controller is assigned a virtual IP
address (VIP) that it maps to a pool of servers based on
application specific criteria.
• An ADC is a combination network and application layer
device.
• ADCs referred to as a content switch, multilayer switch, or
Web switch
Features
• ADC include data compression, content
caching.
• server health monitoring, security, SSL offload
and advanced routing based on current
conditions.
• network optimization, and an application or
framework optimization.
Hypervisors
● Given a computer system with a certain set of resources, you
can set aside portions of those resources to create a virtual
machine.
● From the standpoint of applications or users, a virtual machine
has all the attributes and characteristics of a physical
system but is strictly software that emulates a physical
machine.
● A system virtual machine (or a hardware virtual machine)
has its own address space in memory, its own processor
resource allocation, and its own device I/O using its own
virtual device drivers.
● Some virtual machines are designed to run only a single
application or process and are referred to as process
virtual machines.
Hypervisor
• A low-level program is required to provide
system resource access to virtual machines,
and this program is referred to as the
hypervisor or Virtual Machine Monitor
(VMM).
● Type 1
● Type2
● A hypervisor running on bare metal is a Type 1 VM or native VM.
● Examples of Type 1 Virtual Machine Monitors are LynxSecure, RTS
Hypervisor, Oracle VM, Sun xVM Server,VirtualLogix
VLX,VMware ESX and ESXi, and Wind River VxWorks, among
others.
● The operating system loaded into a virtual machine is referred to
as the guest operating system, and there is no constraint on running
the same guest on multiple VMs on a physical system.
● Type 1 VMs have no host operating system because they are
installed on a bare system.
●Some hypervisors are installed over an operating
system and are referred to as Type 2 or hosted VM.
● Examples of Type 2 Virtual Machine Monitors are
Containers, KVM, Microsoft Hyper V, Parallels
Desktop for Mac,Wind River Simics,VMWare
Fusion,Virtual Server 2005 R2, Xen,Windows
Virtual PC, and VMware Workstation 6.0
Types of VMM
● Emulation :In emulation, the virtual machine simulates
hardware, so it can be independent of the underlying system
hardware. A guest operating system using emulation does not
need to be modified in any way.
● Paravirtualization : Paravirtualization requires that the host
operating system provide a virtual machine interface for the
guest operating system and that the guest access hardware
through that host VM.
● An operating system running as a guest on a paravirtualization
system must be ported to work with the host interface.
Conti..
● Full virtualization: In full virtualization scheme, the VM is
installed as a Type 1 Hypervisor directly onto the hardware.
All operating systems in full virtualization communicate
directly with the VM hypervisor, so guest operating
systems do not require any modification.
● Guest operating systems in full virtualization systems
are generally faster than other virtualization schemes.
Porting Applications
●Cloud computing applications have the ability to run
on virtual systems and for these systems to be
moved as needed.
●Developers who write software to run in the cloud
will undoubtedly want the ability to port their
applications from one cloud vendor to another,
but that is a much more difficult proposition.
● Portability means that you can move an application from one
host environment to another, including cloud to cloud such as
from Amazon Web Services to Microsoft Azure.
● The work needed to complete the porting of an application
from one platform to another depends upon the specific
circumstances.
● Containers are one technology meant to make such porting
easier, by encapsulating the application and operating systems
into a bundle that can be run on a platform that supports that
container standard like Docker or Kubernetes.
●The cloud computing portability and
interoperability categories as :
●Data Portability
●Application Portability
●Platform Portability
Data Portability
● Data portability enables re-use of data components across
different applications.
● Suppose that an enterprise uses a SaaS product for Customer
Relations Management (CRM), for example, and the commercial
terms for use of that product become unattractive compared with
other SaaS products or with use of an in-house CRM solution.The
customer data held by the SaaS product may be crucial to the
enterprise's operation. How easy will it be to move that data to
another CRM solution?
Application Portability
● Application portability enables the re-use of application
components across cloud PaaS services and traditional
computing platforms.
● Suppose that an enterprise has an application built on a particular
cloud PaaS service and, for cost, performance, or other reasons,
wishes to move it to another PaaS service or to in-house systems.
How easy will this be?
● If the application uses features that are specific to the platform, or
if the platform interface is non-standard, then it will not be easy.
● Application portability requires a standard interface exposed by
the supporting platform.
● A particular application portability issue that arises with cloud
computing is portability between development and operational
environments.
● Cloud PaaS is particularly attractive for development environments from
a financial perspective, because it avoids the need for investment in expensive
systems that will be unused once the development is complete.
● But, where a different environment is to be used at run time – either on in-house
systems or on different cloud services – it is essential that the applications can be
moved unchanged between the two environments.
● Cloud computing is bringing development and operations closer together,
and indeed increasingly leading to the two being integrated as devops.
● This can only work if the same environment is used for development and
operation, or if there is application portability between development and
Platform Portability
There are two kinds of platform portability:
1. Re-use of platform components across cloud IaaS services and non
cloud infrastructure – platform source portability.
2. Re-use of bundles containing applications and data with their
supporting platforms – machine image portability.
The UNIX operating system provides an example of platform source
portability.
It is mostly written in the C programming language, and can be
implemented on different hardware by re-compiling it and rewriting a few
small hardware-dependent sections that are not coded in C.
Some other operating systems can be ported in a similar way. This is the
traditional approach to platform portability.
It enables applications portability because applications that use the
standard operating system interface can similarly be re-compiled and run
on systems that have different hardware.
Machine image portability gives enterprises and application vendors a
new way of achieving applications portability, by bundling the
application with its platform and porting the resulting bundle.
It requires a standard program representation that can be deployed in
different IaaS use environments.
Capacity Planning
Capacity planning for a cloud computing system offers you
many enhanced capabilities and some new challenges over
a purely physical system.
A capacity planner seeks to meet the future demands on a
system by providing the additional capacity to fulfill those
demands.
Capacity planning measures the maximum amount of work
that can be done using the current technology and then adds
resources to do more work as needed.
• Capacity planning is an iterative process with the following steps:
1. Determine the characteristics of the present system.
2. Measure the workload for the different resources in the system: CPU, RAM,
disk, network, and so forth.
3. Load the system until it is overloaded, determine when it breaks, and specify
what is required to maintain acceptable performance. Knowing when systems
fail under load and what factor(s) is responsible for the failure is the critical
step in capacity planning.
4. Predict the future based on historical trends and other factors.
5. Deploy or tear down resources to meet your predictions.
6. Iterate Steps 1 through 5 repeatedly.
Defining Baseline and Metrics
• The first item of business is to determine the current system capacity or workload as a
measurable quantity over time.
• Because many developers create cloud-based applications and Web sites based on a
LAMP solution stack.
• LAMP stands for:
Linux, the operating system
Apache HTTP Server, the Web server based on the work of the Apache
Software Foundation
MySQL, the database server developed by the Swedish company MySQL AB,
owned by Oracle Corporation through its acquisition of Sun Microsystems
PHP, the Hypertext Preprocessor scripting language developed by The PHP Group
Baseline measurements
• Let’s assume that a capacity planner is working with a system that
has a Web site based on APACHE, and let’s assume the site is
processing database transactions using MySQL.
• There are two important overall workload metrics in this LAMP
system:
– Page views or hits on the Web site, as measured in hits per
second.
– Transactions completed on the database server, as measured by
transactions per second or perhaps by queries per second
• historical record for the Web server page views
over a hypothetical day, week, and year are
graphed
● WT, the total workload for the system per unit time.To obtain
WT, you need to integrate the area under the curve for the time
period of interest.
● WAVG, the average workload over multiple units of time To
obtain WAVG, you need to sum various WT ‘s and divide
by the number of unit times involved.
● WMAX, the highest amount of work recorded by the system This
is the highest recorded system utilization.
● WTOT, the total amount of work done by the system, which is
A similar set of graphs would be collected to characterize the database
servers, with the workload for those servers measured in transactions per
second.
As part of the capacity planning exercise, the workload for the Web
servers would be correlated with the workload of the database servers to
determine patterns of usage.
The goal of a capacity planning exercise is to accommodate spikes in
demand as well as the overall growth of demand over time.
These two factors, the growth in demand over time is the most important
consideration because it represents the ability of a business to grow.
System metrics
• Capacity planning must measure system-level statistics,
determining what each system is capable of, and how
resources of a system affect system-level performance.
• A machine instance (physical or virtual) is primarily
defined by four essential resources: CPU, Memory
(RAM), Disk, Network connectivity.
• Each of these resources can be measured by tools that
are operating-system-specific.
Load testing
• Examining your server under load for system metrics isn’t going to give
you enough information to do meaningful capacity planning.
• You need to know what happens to a system when the load increases.
• Load testing seeks to answer the following questions:
› What is the maximum load that my current system can support?
› Which resource(s) represents the bottleneck in the current system that limits the
system’s performance? This parameter is referred to as the resource ceiling. Depending
upon a server’s configuration, any resource can have a bottleneck removed, and the
resource ceiling then passes onto another resource.
› Can I alter the configuration of my server in order to increase capacity?
› How does this server’s performance relate to your other servers that might have
different characteristics?