Cloud Computing Book (2017-Regulation) PDF-1-89 Unit - I & II

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 89

UNIT-I INTRODUCTION

CHAPTER 1 INTRODUCTION

1.1 CLOUD COMPUTING

1.1.1 Introduction to Cloud Computing

Computing as a service has seen a phenomenal growth in recent years. The primary motivation for this
growth has been the promise of reduced capital and operating expenses, and the ease of dynamically scaling and
deploying new services without maintaining a dedicated compute infrastructure. Hence, cloud computing has
begun to rapidly transform the way organizations view their IT resources. From a scenario of a single system
consisting of single operating system and single application, organizations have been moving into cloud
computing, where resources are available in abundance and the user has a wide range to choose from. Cloud
computing is a model for enabling convenient, on-demand network access to a shared pool of configurable
computing resources that can be rapidly provisioned and released with service provider interaction or minimal
management effort. Here, the end-users need not to know the details of a specific technology while hosting their
application, as the service is completely managed by the Cloud Service Provider (CSP). Users can consume
services at a rate that is set by their particular needs. This on-demand service can be provided any time. CSP would
take care of all the necessary complex operations on behalf of the user. It would provide the complete system
which allocates the required resources for execution of user applications and management of the entire system 2
flow.
Cloud computing consists of three distinct types of computing services delivered remotely to clients via the
internet. Clients typically pay a monthly or annual service fee to providers, to gain access to systems that deliver
software as a service, platforms as a service and infrastructure as a service to subscribers. Clients who subscribe to
cloud computing services can reap a variety of benefits, depending on their particular business needs at a given
point in time. The days of large capital investments in software and IT infrastructure are now a thing of the past for
any enterprise that chooses to adopt the cloud computing model for procurement of IT services. The ability to
access powerful IT resources on an incremental basis is leveling the playing field for small and medium sized
organizations, providing them with the necessary tools and technology to compete in the global marketplace,
without the previously requisite investment in on premise IT resources. Clients who subscribe to computing
services delivered via the “cloud”• are able to greatly reduce the IT service expenditures for their organizations;
and gain access to more agile and flexible enterprise level computing services, in the process.
1.1.2 Types of service in cloud
computing SAAS( Software as a Service)
Saas (Software as a Service) provides clients with the ability to use software applications on a remote basis
via an internet web browser. Software as a service is also referred to as “software on demand”. Clients can access
SaaS applications from anywhere via the web because service providers host applications and their associated data
at their location. The primary benefit of SaaS, is a lower cost of use, since subscriber fees require a much smaller
investment than what is typically encountered under the traditional model of software delivery. Licensing fees,
installation costs, maintenance fees and support fees that are routinely associated with the traditional model of
software delivery can be virtually eliminated by subscribing to the SaaS model of software delivery. Examples of
SaaS include: Google Applications and internet based email applications like Yahoo! Mail, Hotmail and Gmail.

PAAS(Platform as a Service)
PaaS (Platform as a Service) provides clients with the ability to develop and publish customized
applications in a hosted environment via the web. It represents a new model for software development that is
rapidly increasing in its popularity. An example of PaaS is Salesforce.com. PaaS provides a framework for agile
software development, testing, deployment and maintenance in an integrated environment. Like SaaS, the primary
benefit of PaaS, is a lower cost of use, since subscriber fees require a much smaller investment than what is
typically encountered when implementing traditional tools for software development, testing and deployment. PaaS
providers handle platform maintenance and system upgrades, resulting in a more efficient and cost effective
solution for enterprise software development.
IAAS(Infrastructure as a Service)
IaaS (Infrastructure as a Service) allows clients to remotely use IT hardware and resources on a “pay-as-
you-go”• basis. It is also referred to as HaaS (hardware as a service). Major IaaS players include compa nies like
IBM, Google and Amazon.com. IaaS employs virtualization, a method of creating and managing infrastructure
resources in the “cloud”• . IaaS provides small start up firms with a major advantage, since it allows them to
gradually expand their IT infrastructure without the need for large capital investments in hardware and peripheral
systems.

1.2 DEFINITION OF CLOUD


Cloud Computing is the use of hardware and software to deliver a service over a network (typically the Internet).
With cloud computing, users can access files and use applications from any device that can access the Internet. An
example of a Cloud Computing provider is Google's Gmail. Cloud Computing lets you store and access your
applications or data over remote computers instead of your own computer.
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.
Example: AWS, Azure, Google Cloud

1.2.1 Why Cloud Computing?


With increase in computer and Mobile user’s, data storage has become a priority in all fields. Large and small scale
businesses today thrive on their data & they spent a huge amount of money to maintain this data. It requires a
strong IT support and a storage hub. Not all businesses can afford high cost of in-house IT infrastructure and back
up support services. For them Cloud Computing is a cheaper solution. Perhaps its efficiency in storing data,
computation and less maintenance cost has succeeded to attract even bigger businesses as well.

Cloud computing decreases the hardware and software demand from the user’s side. The only thing that user must
be able to run is the cloud computing systems interface software, which can be as simple as Web browser, and the
Cloud network takes care of the rest. We all have experienced cloud computing at some instant of time, some of the
popular cloud services we have used or we are still using are mail services like Gmail, Hotmail or Yahoo etc.

While accessing e-mail service our data is stored on cloud server and not on our computer. The technology and
infrastructure behind the cloud is invisible. It is less important whether cloud services are based on HTTP, XML,
Ruby, PHP or other specific technologies as far as it is user friendly and functional. An individual user can connect
to cloud system from his/her own devices like desktop, laptop or mobile. Cloud computing harnesses small
business effectively having limited resources, it gives small businesses access to the technologies that previously
were out of their reach.

1.2.2 Benefits of Cloud Computing


First of all, ‘cloud’ is just a metaphor to describe the technology. Basically, cloud is nothing but a data center filled
with hundreds of components like servers, routers, and storage units. Cloud data centers could be anywhere in the
world; also you can access it from anywhere with an Internet-connected device. Why do people use it? Because of
the following benefits it has:

Fig 1.2 Benefits of cloud computing

Pay-per-use Model: You only have to pay for the services you use, and nothing more!
24/7 Availability: It is always online! There is no such time that you cannot use your cloud service; you can use it
whenever you want.
Easily Scalable: It is very easy to scale up and down or turn it off as per customers’ needs. For instance, if your
website’s traffic increases only on Friday nights, you can opt for scaling up your servers that particular day of the
week and then scaling down for the rest of the week.
Security: Cloud computing offers amazing data security. Especially if the data is mission-critical, then that data
can be wiped off from local drives and kept on the cloud only for your access to stop it ending up in wrong hands.
Easily Manageable: You only have to pay subscription fees; all maintenance, up-gradation and delivery of
services are completely maintained by the Cloud Provider. This is backed by the Service-level Agreement (SLA).

1.3 EVOLUTION OF CLOUD COMPUTING


A recent sensation in the realm of outsourcing is called Cloud Computing. Cloud is a huge collection of
effortlessly approachable imaginary like utilities that can be used and accessed from anywhere, (for example s/w,
h/w, advancement operating environments and applications). These operating environments and applications could
be alterably re-designed to acclimate to a varying burden, permitting likewise for best environment utilization.
These environments and facilities are ordinarily known to be a per utilization payment arrangement where in
insurances are guaranteed by the service issuer by method of altered service level agreements.
While the happening to contemporary workstation systems administration happened inside mid1970s, not
any talk of something remotely looking like a thought like "cloud computing" occurred until at long last in the
ballpark of an a few years after the fact in 8f when John Back of Sun Microsystems begat the noteworthy motto,
"The real system is The true machine." As prophetic similarly Sun was a while back, fittings (essential Figure and
systems administration) had been none, of these influential none, of these commoditized enough to attain this
vision around then. Cloud computing was still leastways a decade off. Meanwhile, Sun's Unix-delightful working
framework and servers turned into the "new iron," swapping mainframes that been around for numerous eras.

Sun's machines utilized open systems administration models, for example TCP/IP. This empowered projects
running on only one machine to identify with running systems on different models. Such requisitions ordinarily
emulated the customer server building design model. Around this time period, Sir Tim Berners-Lee prescribed the
thought connected with imparting learning spared on numerous hosting space to be made accessible to the planet
through customer machines. Documents might be placed holding hypertext, course book with metadata made up of
area data as a referrals for the thing portrayed by means of that content.

That conceived an offspring towards the Common Gateway Interface. Common gateway interface
presented outer provisions in the web server to system client enter notwithstanding process or get the Html records.
The "web application" had come. We've now minute voyage from the genuine mid-1980s on the early to mid-
1990s. Common gateway interface made alert content achievable, which in flip realized customization. Common
gateway interface's cutoff points were being likewise arrived at quickly when then transformed into comparative
however more versatile results. Winning static archives paled in contrasting with being able to create Html alertly
on-investment on clients. It was conceivable to make web keeping money: a singular and everybody furthermore
could log into and view their novel ledgers; purchasers could potentially buy items internet, taking mail request of
size to a completely new level. A standout amongst the most powerful of online stores has been and it is still to
this time, Amazon. It's most likely a brilliant amaze that Rain woods came into staying not long after the
production of the true common gateway interface standard. From here in the center 1990s, they planned one of the
best and most massive system of workstation frameworks by the first 2000s. They purchased enough computing
assets to allow their business to withstand the true organize activity require for the occasion acquiring season.
Concurring on their whitepaper: "By 2006, we had utilized in excess of a couple of years and hundreds with respect
to a large number of cash building and administering the vast scale, strong, and proficient It foundation that fueled
your operation of one of numerous planet's biggest online retail stages." Your quandary: what does this mechanical
assembly do throughout the sunny season? It sat unmoving. Why not "sublease" this apparatus to attempt and
recover expenses? All around mid2006, these individuals started Amazon Web Services, promoting their
computing power to anybody. Other substantial legitimately known innovation organizations with computing assets
joined the in general amusement that truly carries us to today.

Despite the fact that the exact history of cloud computing is not the existing (the first business and
customer cloud computing administrations sites – salesforce.com in addition to Google, were presented in 1999),
the story is trussed straight to the improvement of the Internet and business engineering, since cloud computing is
the method to the issue connected with how the Internet can help fortify business innovation. Business innovation
has a drawn out and intriguing history, one that is almost as long on the grounds that business itself, yet the specific
advancements that about straight impacted the of cloud computing begin with The true rise of workstations as
suppliers of genuine business results.

In spite of the fact that machines had been pretty nearly for some period, the state of the innovation and the
convention of the fifties made the best environment for start to be processed rapidly. Machines have been
fundamentally huge adding machines that utilized hit cards to work with figuring’s, so however they were suitable,
progressions could plainly come in. The social setting was molded by method of Cold War interest with the utopia
that could be made utilizing engineering, besides since newly discovered thriving to store it. These two elements
implied individuals wound up both eager and likewise fit to purchase headways. The exact first useful microchip
got it’s begin in the past due 1950s, and once workstations could accomplish more intricate computations,
individuals began building systems for business requisitions. The exact first normal office machine work is done in
1951 by the true Leo workstation, which was made to manage the real overnight handling determinations, payroll,
stock and additionally other managerial assignments for J. Lyons & Co., a providing food in addition to sustenance
assembling association. This could be recognized the initially incorporated administration data framework. Just
about as fast as machines had been showing their pragmatic use good to go, organizations began examining how to
administration littler organizations. Inside 1959, IBM discharged the 1401 model, which gave minor undertakings
access to actualities transforming machines. Your 1401 was popular to the point that by the mid-60s, about 50% of
the planet's machine frameworks were 1401-character frameworks.

The internet's "youth" Whereby it came to be clear that Arpanet was a decently major ordeal and some
huge workstation organizations were made In the nineteen seventies, the thoughts and likewise components that
had been prescribed in the 50s and 60s were being created decisively. Additionally, a large portion of the world's
greatest machine organizations were begun, and the internet was conceived. Inside 1971, Intel, set up in the
previous decade, acquainted the earth with the precise first microchip, and Apple organization architect Ray
Tomlinson composed a system that permitted individuals to send correspondences starting with one machine then
onto the next, from this point forward sending the essential message that a great deal of individuals might recognize
similarly message.
Then, Bill Gates and Robert Allen established Microsoft in 1974; however Steve Wozniak and additionally
Steve Jobs started Apple Computers inside 1976 and divulged the Apple Two in the indistinguishable year. All
your while, the All of us Department of Protection had been making Arpanet into Internet, and in 1976, Xerox's
Robert Metcalfe indicated the idea of Ethernet. Later inside the decade, CompuServe Information Services and The
definitive source both went on the internet in 1979, pre-figuration the focus if the internet might be supervised by
and used through business administration suppliers. The 80s introduced the introductory major, worldwide
mouthpiece blast in Pcs. Through 1980, there had been more than 5 different million Pcs being used worldwide,
however normally these were expected for business or government utilization. So in 1981, IBM position the first Pc
on the industry, and in 1982, Microsoft started certificate MS DOS, this working framework that, as a result of
gigantic scale marketing deliberations by Microsoft organization, most Pc frameworks might run along. At that
point, in place of your worldwide dystopia, 1984 carried the first Macintosh Pc, the establishing joined with Dell
workstation by Michael Dell and William Gibson's begetting of the statement 'the internet'.
The plant seeds were being seeded for the increment of the internet. The internet's global starting Where
the Internet as a spot for both business and correspondence carried its own weight. The specific 1990s joined the
planet in an unmatched way, beginning together with Cern's ease the World Wide-cut Web for general (that is, non-
business) use in 1991. In Michael became bonkers, a browser reputed to be Mosaic permitted pictures to be
demonstrated on Internet, and private organizations were permitted to work with Internet despite anything that
might have happened before, as well. When firms were on the web, they started to assume the business potential
outcomes that accompanied having the ability to achieve the planet in an immediate, and a percentage of the
greatest players online were established.
Marc Andreessen and John Clark established Netscape in 94’ and none excessively early, since 1995
sawing machine internet activity gave up to business endeavors like Netscape. In the meantime, stalwarts of the
true internet Amazon.com and likewise eBay were started by Jeff Bezos and Pierre Omidyan, severally. The
internet's "adulthood" notwithstanding cloud computing ascent Where the dab com house of cards blasts as a
pimple notwithstanding cloud computing goes to the real fore The remainder of the nineties and starting with the
2000s were an incredible opportunity to find or put resources into an internet-based organization. Cloud computing
had the right environment to lose, as multi-leaseholder architectures, profoundly overarching fast data transfer
capacity and regular programming interoperability details were created in this specific time. Salesforce.net
appeared in late 90s and was the essential webpage to convey business requisitions from the "typical" site – what
on earth is presently called cloud computing.
The unadulterated confidence of this period prompted the specific spot com blast, where internet based
organizations, backed by evidently very nearly unending wander capital and likewise excessively sure expectations,
developed quickly. The majority of these sites trusted they can run at a misfortune briefly, then accuse of respect to
administrations later, which implied they have been running on venture capital and acquiring no wage at wholly.
Amazon and Search motors both neglected to work at a benefit in their first years, however it was in light of the
fact that they wound up using cash on marketing deliberations or upgrading their innovation. The dab com bubble
hit the top on tenth March 2000, then blast over the accompanying weekend as major high-tech stockholders like
Dell and Coregonus artedi sold off an incredible arrangement of their stock. To prepare could have carried to the
failure of the house of cards, incorporating the opposition to -syndication controlling towards Microsoft (which,
however, not uncovered until they begin of April, had as of recently been generally foreseen).
Different explanations incorporate poor on-line (a) takings from the 1999 Christmas time of year and Y2K
all things considered not in the planet-outcome way numerous individuals anticipated. Rather, companies used a
bunches of cash redesigning frameworks and supplies, so when the day passed on without occasion, organizations
quit using cash to blanket the inconvenience of upgrading an incredible arrangement. This implied that they quit
exchanging, false procuring stops and generally discovered approaches to curtail financial spending. Regardless,
research shows that half of us speck comes made due until 2004, so rather than being headed out from business by
the unfolding of the belch, organizations either do well or were not reasonable. Still, to stay to survive, enterprises
needed to rethink or refine their specific plans of action and what you offered to purchasers. Numerous more
current companies chose to indulgence administrations that watched the internet as a basic part of the true
administration, as opposed to like a medium to area requests or correspond with clients.
Amazon.com presented Amazon Web Services in 2004. This gave clients the capacity with a specific end
goal to store information and hang a huge amount of people to work with exceptionally little obligations, (for
example Hardware Turk), around some different administrations. Face book had been established in '04,
revolutionizing the methodology clients impart and the way they store their own particular information (their
photos and film), inadvertently making the cloud an individual administration.

In 2006, Amazon online unfolded its cloud administrations. To begin with had been its Elastic Compute
cloud (Ec2), which allowed individuals to memory access machines and running their own particular programming
on them, altogether on the cloud. At that point they presented Simple Storage Service (S3). This introduced the
pay-seeing that-you-head off model to both purchasers and the business sector overall, and it has fundamentally
come to be standard practice at present. Salesforce.com then started force.com in 2007. That stage as an
administration let associations' engineers construct, retailer and run the sum of the applications and sites they
required running their business in the cloud. Google Apps started in 2009, permitting individuals to make and store
paperwork truly in the genuine cloud.
Most as of late, cloud computing organizations have been pondering how they might make their stock all
the more join. In 2010 Salesforce.com started the cloud-based database at Database.com planned for engineers,
denoting the advancement of could computing administrations that might be utilized on any unit, run on practically
any stage and composed in diverse modifying dialect. Obviously, the long run of the internet and cloud computing
have in prior times demonstrated hard to compute, however so farseeing as organizations strive to unite the globe
and serve in which joined planet with new ways, there'll dependably be a need for both the internet and cloud
computing.

1.4 UNDERLYING PRINCIPLES OF PARALLEL AND DISTRIBUTED COMPUTING


1.4.1 Parallel Computing
Cloud computing is intimately tied to parallel and distributed processing. Cloud applications are based on
the client–server paradigm. Such applications run multiple instances of the service and require reliable and in-order
delivery of messages. Parallel computing is a term usually used in the area of High Performance Computing
(HPC).It specifically refers to performing calculations or simulations using multiple processors. Supercomputers
are designed to perform parallel computation. These system do not necessarily have shared memory (as incorrectly
claimed by other answers
What is Parallel Computing?
Parallel computing is a type of computation in which many calculations or execution of processes is carried
out simultaneously. Whereas, a distributed system is a system whose components are located on different
networked computers which communicate and coordinate their actions by passing messages to one another. Thus,
this is the fundamental difference between parallel and distributed computing.
Parallel computing is also called parallel processing. There are multiple processors in parallel computing.
Each of them performs the computations assigned to them. In other words, in parallel computing, multiple
calculations are performed simultaneously. The systems that support parallel computing can have a shared memory
or distributed memory. In shared memory systems, all the processors share the memory. In distributed memory
systems, memory is divided among the processors.
Figure 1.5 Parallel computing architecture
There are multiple advantages to parallel computing. As there are multiple processors working
simultaneously, it increases the CPU utilization and improves the performance. Moreover, failure in one processor
does not affect the functionality of other processors. Therefore, parallel computing provides reliability. On the
other hand, increasing processors is costly. Furthermore, if one processor requires instructions of another, the
processor might cause latency.

In the simplest sense, parallel computing is the simultaneous use of multiple compute resources to solve a
computational problem:
 A problem is broken into discrete parts that can be solved concurrently
 Each part is further broken down to a series of instructions
 Instructions from each part execute simultaneously on different processors
 An overall control/coordination mechanism is employed
Parallel Computing
It is the use of multiple processing elements simultaneously for solving any problem. Problems are broken down
into instructions and are solved concurrently as each resource which has been applied to work is working at the
same time.
Advantages of Parallel Computing over Serial Computing are as follows:
 It saves time and money as many resources working together will reduce the time and cut potential costs.
 It can be impractical to solve larger problems on Serial Computing.
 It can take advantage of non-local resources when the local resources are finite.
Serial Computing ‘wastes’ the potential computing power, thus Parallel Computing makes better work of hardware.
Types of Parallelism:
Bit-level parallelism: It is the form of parallel computing which is based on the increasing processor’s size. It
reduces the number of instructions that the system must execute in order to perform a task on large-sized data.
Example: Consider a scenario where an 8-bit processor must compute the sum of two 16-bit integers. It must first
sum up the 8 lower-order bits, then add the 8 higher-order bits, thus requiring two instructions to perform the
operation. A 16-bit processor can perform the operation with just one instruction.
Instruction-level parallelism: A processor can only address less than one instruction for each clock cycle phase.
These instructions can be re-ordered and grouped which are later on executed concurrently without affecting the
result of the program. This is called instruction-level parallelism.
Task Parallelism: Task parallelism employs the decomposition of a task into subtasks and then allocating each of
the subtasks for execution. The processors perform execution of sub tasks concurrently.
Why parallel computing?

 The whole real world runs in dynamic nature i.e. many things happen at a certain time but at different
places concurrently. This data is extensively huge to manage.
 Real world data needs more dynamic simulation and modeling, and for achieving the same, parallel
computing is the key.
 Parallel computing provides concurrency and saves time and money.
 Complex, large datasets, and their management can be organized only and only using parallel computing’s
approach.
 Ensures the effective utilization of the resources. The hardware is guaranteed to be used effectively
whereas in serial computation only some part of hardware was used and the rest rendered idle.
Also, it is impractical to implement real-time systems using serial computing.
Applications of Parallel Computing:
 Data bases and Data mining.
 Real time simulation of systems.
 Science and Engineering.
 Advanced graphics, augmented reality and virtual reality.
Limitations of Parallel Computing:
 It addresses such as communication and synchronization between multiple sub-tasks and processes which
is difficult to achieve.
 The algorithms must be managed in such a way that they can be handled in the parallel mechanism.
 The algorithms or program must have low coupling and high cohesion.
 But it’s difficult to create such programs.
 More technically skilled and expert programmers can code a parallelism based program well.
Future of Parallel Computing: The computational graph has undergone a great transition from serial computing
to parallel computing. Tech giant such as Intel has already taken a step towards parallel computing by employing
multicore processors. Parallel computation will revolutionize the way computers work in the future, for the better
good. With all the world connecting to each other even more than before, Parallel Computing does a better role in
helping us stay that way. With faster networks, distributed systems, and multi-processor computers, it becomes
even more necessary.

1.4.2 What is Distributed Computing?


Distributed computing divides a single task between multiple computers. Each computer can communicate
with others via the network. All computers work together to achieve a common goal. Thus, they all work as a
single entity. A computer in the distributed system is a node while a collection of nodes is a cluster.

A Distributed System is composed of a collection of independent physically (and geographically) separated


computers that do not share physical memory or a clock. Each processor has its own local memory and the
processors communicate using local and wide area networks. The nodes of a distributed system may be of
heterogeneous architectures.

A Distributed Operating System attempts to make this architecture seamless and transparent to the user to
facilitate the sharing of heterogeneous resources in an efficient, flexible and robust manner. Its aim is to shield the
user from the complexities of the architecture and make it appear to behave like a timeshared centralized
environment.

Distributed Operating Systems offer a number of potential benefits over centralized systems. The availability of
multiple processing nodes means that load can be shared or balanced across all processing elements with the
objective of increasing throughput and resource efficiency. Data and processes can be replicated at a number of
different sites to compensate for failure of some nodes or to eliminate bottlenecks. A well designed system will be
able to accommodate growth in scale by providing mechanisms for distributing control and data.

Communication is the central issue for distributed systems as all process interaction depends on it. Exchanging
messages between different components of the system incurs delays due to data propagation, execution of
communication protocols and scheduling. Communication delays can lead to inconsistencies arising between
different parts of the system at a given instant in time making it difficult to gather global information for decision
making and making it difficult to distinguish between what may be a delay and what may be a failure.

Fault tolerance is an important issue for distributed systems. Faults are more likely to occur in distributed systems
than centralized ones because of the presence of communication links and a greater number of processing elements,
any of which can fail. The system must be capable of reinitializing itself to a state where the integrity of data and
state of ongoing computation is preserved with only some possible performance degradation.

Figure 1.6 Distributed Computing architecture


There are multiple advantages of using distributed computing. It allows scalability and makes it easier to share
resources easily. It also helps to perform computation tasks efficiently. On the other hand, it is difficult to develop
distributed systems. Moreover, there can be network issues.

Distributed Computing
In daily life, an individual can use a computer to work with applications such as Microsoft Word, Microsoft
PowerPoint. Complex problems may not be accomplished by using a single computer. Therefore, the single
problem can be divided into multiple tasks and distributed to many computers. These computers can communicate
with other computers through the network. They all perform similarly to a single entity. The process of dividing a
single task among multiple computers is known as distributed computing. Each computer in a distributed system is
known as a node. A set of nodes is a cluster.

Distributed computing is used in many applications today. Some examples are Facebook and Google. They consist
of millions and millions of users. All users communicate with others, share photographs etc. This large amount of
data is stored using distributed computing. Automated teller machines in banks, telephone networks, cellular
networks, distributed databases also use distributed computing.

Distributed computing provides multiple advantages. Distributed systems are extendable to the increasing growth.
It provides scalability, and it is easy to share resources. Some disadvantages are there can be network issues, and it
is difficult to develop distributed software.
In distributed computing systems, multiple system processors can communicate with each other using messages
that are sent over the network. Such systems are increasingly available these days because of the availability at low
price of computer processors and the high-bandwidth links to connect them.
The following reasons explain why a system should be built distributed, not just parallel:

Scalability: As distributed systems do not have the problems associated with shared memory, with the
increased number of processors, they are obviously regarded as more scalable than parallel systems.
Reliability: The impact of the failure of any single subsystem or a computer on the network of computers defines
the reliability of such a connected system. Definitely, distributed systems demonstrate a better aspect in this area
compared to the parallel systems.
Data sharing: Data sharing provided by distributed systems is similar to the data sharing provided by distributed
databases. Thus, multiple organizations can have distributed systems with the integrated applications for data
exchange.
Resources sharing: If there exists an expensive and a special purpose resource or a processor, which cannot be
dedicated to each processor in the system, such a resource can be easily shared across distributed systems.
Heterogeneity and modularity: A system should be flexible enough to accept a new heterogeneous processor to
be added into it and one of the processors to be replaced or removed from the system without affecting the overall
system processing capability. Distributed systems are observed to be more flexible in this respect.
Geographic construction: The geographic placement of different subsystems of an application may be inherently
placed as distributed. Local processing may be forced by the low communication bandwidth more specifically
within a wireless network.
Economic: With the evolution of modern computers, high-bandwidth networks and workstations are available at
low cost, which also favors distributed computing for economic reasons.

MapReduce
As we discussed that map reduce is really a robust framework manage large amount of data. The map reduce
framework has to involve a lot of overhead when dealing with iterative map reduce.Twister is a great framework to
perform iterative map reduce.
Additional functionality:
1.) Static and variable Data : Any iterative algorithm requires a static and variable data. Variable data are
computed with static data (Usually the larger part of both) to generate another set of variable data. The process is
repeated till a given condition and constrain is met. In a normal map-reduce function using Hadoop or DryadLINQ
the static data are loaded uselessly every time the computation has to be performed. This is an extra overhead for
the computation. Even though they remain fixed throughout the computation they have to be loaded again and
again.

Twister introduces a “config” phase for both map and reduces to load any static data that is required. Loading static
data for once is also helpful in running a long running Map/Reduce task

2.) Fat Map task : To save the access a lot of data the map is provided with an option of configurable map task,
the map task can access large block of data or files. This makes it easy to add heavy computational weight on the
map side.

3.) Combine operation: Unlike GFS where the output of reducer are stored in separate files, Twister comes with a
new phase along with map reduce called combine that’s collectively adds up the output coming from all the
reducer.

4.) Programming extensions: Some of the additional functions to support iterative functionality of Twister are:
i) mapReduceBCast(Value value) for sending a single to all map tasks. For example, the “Value” can be a set of
parameters, a resource (file or executable) name, or even a block of data

ii) configureMaps(Value[]values) and configureReduce(Value[]values) to configure map and reduce with


additional static data
TWISTER ARCHITECTURE
The Twister is designed to effectively support iterative MapReduce function. To reach this flexibility it reads data
from the local disk of the worker nodes and handle the intermediate data data in the distributed memory of the
workers mode.

The messaging infrastructure in twister is called broker network and it is responsible to perform data transfer using
publish/subscribe messaging.

Twister has three main entity:


1. Client Side Driver responsible to drive entire MapReduce computation
2. Twister Daemon running on every working node.
3. The broker Network.
Access Data
1. To access input data for map task it either reads dta from the local disk of the worker nodes.
2. receive data directly via the broker network.
They keep all data read as file and having data as native file allows Twister to pass data directly to any executable.
Additionally they allow tool to perform typical file operations like
(i) create directories, (ii) delete directories, (iii) distribute input files across worker nodes, (iv) copy a set of
resources/input files to all worker nodes, (v) collect output files from the worker nodes to a given location, and (vi)
create partition-file for a given set of data that is distributed across the worker nodes.
Intermediate Data
The intermediate data are stored in the distributed memory of the worker node. Keeping the map output in
distributed memory enhances the speed of the computation by sending the output of the map from these memory to
reduces.
Messaging
The use of publish/subscribe messaging infrastructure improves the efficiency of Twister runtime. It use scalable
NaradaBrokering messaging infrastructure to connect difference Broker network and reduce load on any one of
them.
Fault Tolerance
There are three assumption for for providing fault tolerance for iterative mapreduce:
(i) failure of master node is rare adn no support is provided for that.
(ii) Independent of twister runtime the communication network can be made fault tolerant.
(iii) the data is replicated among the nodes of the computation infrastructure. Based on these assumptions we try
to handle failures of map/reduce tasks, daemons, and worker nodes failures.

What is the Difference between Parallel and Distributed Computing?

S.NO PARALLEL COMPUTING DISTRIBUTED COMPUTING

Many operations are performed System components are located at

1. simultaneously different locations

2. Single computer is required Uses multiple computers

Multiple processors perform Multiple computers perform multiple

3. multiple operations operations

It may have shared or

4. distributed memory It have only distributed memory

Processors communicate with Computer communicate with each other

5. each other through bus through message passing.

Improves the system Improves system scalability, fault

6. performance tolerance and resource sharing capabilities

Parallel vs Distributed Computing

Parallel computing is a computation type Distributed computing is a computation type in which


in which multiple processors execute networked computers communicate and coordinate the work
multiple tasks simultaneously. through message passing to achieve a common goal.
Number of Computers Required

Parallel computing occurs on one computer. Distributed computing occurs between multiple computers.

Processing Mechanism

In parallel computing multiple processors In distributed computing, computers rely on message


perform processing. passing.

Synchronization

All processors share a single master clock There is no global clock in distributed computing, it uses
for synchronization. synchronization algorithms.

Memory

In Parallel computing, computers can have In Distributed computing, each computer has their own
shared memory or distributed memory. memory.

Usage

Parallel computing is used to increase Distributed computing is used to share resources and to
performance and for scientific computing. increase scalability.

Summary – Parallel vs Distributed Computing


Parallel computing and distributed computing are two types of computation. This article discussed the difference
between Parallel and Distributed Computing. The difference between parallel and distributed computing is that
parallel computing is to execute multiple tasks using multiple processors simultaneously while in parallel
computing, multiple computers are interconnected via a network to communicate and collaborate in order to
achieve a common goal. Parallel computing is mainly used for increasing performance. Distributed computing is
used to coordinate the use of shared resources or to provide communication services to the users.

1.5 CLOUD CHARACTERISTICS


 On Demand Self-services
 Broad Network Access
 Resource Pooling
 Rapid Elasticity
 Measured Service
 Dynamic Computing Infrastructure
 IT Service-centric Approach
 Minimally or Self-managed Platform
 Consumption-based Billing
 Multi Tenancy
 Managed Metering

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).
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 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.

Large Network Access


The user can access the data of the cloud or upload the data to the cloud from anywhere just with the help
of a device and an internet connection. These capabilities are available all over the network and accessed
with the help of internet.
Availability
The capabilities of the Cloud can be modified as per the use and can be extended a lot. It analyzes the
storage usage and allows the user to buy extra Cloud storage if needed for a very small amount.
Automatic System
Cloud computing automatically analyzes the data needed and supports a metering capability at some level
of services. We can monitor, control, and report the usage. It will provide transparency for the host as
well as the customer.
Economical
It is the one-time investment as the company (host) has to buy the storage and a small part of it can be
provided to the many companies which save the host from monthly or yearly costs. Only the amount which
is spent is on the basic maintenance and a few more expenses which are very less.
Security
Cloud Security, is one of the best features of cloud computing. It creates a snapshot of the data stored so
that the data may not get lost even if one of the servers gets damaged. The data is stored within the storage
devices, which cannot be hacked and utilized by any other person. The storage service is quick and
reliable.
1.6 ELASTICITY IN CLOUD
Elasticity is the ability to grow or shrink infrastructure resources dynamically as needed to adapt
to workload changes in an autonomic manner, maximizing the use of resources.
Elasticity is the degree to which a system is able to adapt to workload changes by provisioning and de-
provisioning resources in an autonomic manner, such that at each point in time the available resources match the
current demand as closely as possible.
Elasticity in cloud infrastructure involves enabling the hypervisor to create virtual machines or containers
with the resources to meet the real-time demand. Scalability often is discussed at the application layer, highlighting
capability of a system, network or process to handle a growing amount of work, or its potential to be enlarged in
order to accommodate that growth.
This can result in savings infrastructure costs overall. Not everyone can benefit from elastic services
though. Environments that do not experience sudden or cyclical changes in demand may not benefit from the cost
savings elastic services offer. Use of “Elastic Services” generally implies all resources in the infrastructure be
elastic. This includes but not limited to hardware, software, QoS and other policies, connectivity, and other
resources that are used in elastic applications. This may become a negative trait where performance of certain
applications must have guaranteed performance. It depends on the environment.
This is the case for businesses with dynamic resource demands like streaming services or e-
commerce marketplaces. Various seasonal events (like Christmas, Black Friday) and other engagement
triggers (like when HBO’s Chernobyl spiked an interest in nuclear-related products) cause spikes of
customer activity. These volatile ebbs and flows of workload require flexible resource management to
handle the operation consistently.
Dimensions and Core Aspects
Any given adaptation process is defined in the context of at least one or possibly multiple types of
resources that can be scaled up or down as part of the adaptation. Each resource type can be seen as a separate
dimension of the adaptation process with its own elasticity properties. If a resource type is a container of other
resources types, like in the case of a virtual machine having assigned CPU cores and RAM, elasticity can be
considered at multiple levels. Normally, resources of a given resource type can only be provisioned in discrete units
like CPU cores, virtual machines (VMs), or physical nodes. For each dimension of the adaptation process with
respect to a specific resource type, elasticity captures the following core aspects of the adaptation:
Speed
The speed of scaling up is defined as the time it takes to switch from an under-provisioned state to an
optimal or over-provisioned state. The speed of scaling down is defined as the time it takes to switch from an over-
provisioned state to an optimal or under-provisioned state. The speed of scaling up/down does not correspond
directly to the technical resource provisioning/de-provisioning time.
Precision
The precision of scaling is defined as the absolute deviation of the current amount of allocated resources
from the actual resource demand. As discussed above, elasticity is always considered with respect to one or more
resource types. Thus, a direct comparison between two systems in terms of elasticity is only possible if the same
resource types (measured in identical units) are scaled. To evaluate the actual observable elasticity in a given
scenario, as a first step, one must define the criterion based on which the amount of provisioned resources is
considered to match the actual current demand needed to satisfy the system’s given performance requirements.
Based on such a matching criterion, specific metrics that quantify the above mentioned core aspects, can be defined
to quantify the practically achieved elasticity in comparison to the hypothetical optimal elasticity. The latter
corresponds to the hypothetical case where the system is scalable with respect to all considered elasticity
dimensions without any upper bounds on the amount of resources that can be provisioned and where resources are
provisioned and de-provisioned immediately as they are needed exactly matching the actual demand at any point in
time. Optimal elasticity, as defined here, would only be limited by the resource scaling units.
Motivation.
As a subscription-oriented utility, cloud computing has gained growing attention in recent years in both
research and industry and is widely considered as a promising way of managing and improving the utilization of
data center resources and providing a wide range of computing services. Virtualization is a key enabling
technology of cloud computing. System virtualization is able to provide abilities to access software and hardware
resources from a virtual space and enables an execution platform to provide several concurrently usable and
independent instances of virtual execution entities, often called virtual machines (VMs). A cloud computing
platform relies on the virtualization technique to acquire more VMs to deal with workload surges or release VMs to
avoid resource over-provisioning. Such a dynamic resource provision and management feature is called elasticity.
For instance, when VMs do not use all the provided resources, they can be logically resized and be migrated from a
group of active servers to other servers, while the idle servers can be switched to the low-power modes (sleep or
hibernate).

Elasticity is the degree to which a system is able to adapt to workload changes by provisioning and de-
provisioning resources in an autonomic manner, such that at each point in time the available resources match the
current demand as closely as possible. By dynamically optimizing the total amount of acquired resources, elasticity
is used for various purposes. From the perspective of service providers, elasticity ensures better use of computing
resources and more energy savings and allows multiple users to be served simultaneously. From a user’s
perspective, elasticity has been used to avoid inadequate provision of resources and degradation of system
performance and also achieve cost reduction. Furthermore, elasticity can be used for other purposes, such as
increasing the capacity of local resources. Hence, elasticity is the foundation of cloud performance and can be
considered as a great advantage and a key benefit of cloud computing.
Over Provisioning and Under Provisioning
The main reason for cloud elasticity is to avoid either over provisioning or under provisioning of resources.
Giving a cloud user either too much or too little data and resources will put that user at a disadvantage. If an
enterprise has too many resources, they’ll be paying for assets they aren’t using. If they have too few resources,
they can’t run their processes correctly. Elastic systems can detect changes in workflows and processes in the
cloud, automatically correcting resource provisioning to adjust for updated user projects.
 Modern business operations live on consistent performance and instant service availability.
 Cloud scalability and cloud elasticity handle these two business aspects in equal measure.
 Cloud scalability is an effective solution for businesses whose workload requirements are increasing slowly
and predictably.
 Cloud elasticity is a cost-effective solution for the business with dynamic and unpredictable resource
demands.

Notations and Preliminaries

For clarity and convenience, Notations describes the correlated variables which are used in the following sections.
To elaborate the essence of cloud elasticity, we give the various states that are used in our discussion. Let denote
the number of VMs in service and let be the number of requests in the system.
(1) Just-in-Need State. A cloud platform is in a just-in-need state if i<j<3i is defined as the accumulated time in
all just-in-need states.
(2) Over-provisioning State. A cloud platform is in an over-provisioning state if 0<j<i. T o is defined as the
accumulated time in all over-provisioning states.
(3) Under-provisioning State. A cloud platform is in an under-provisioning state if j>3i. T u is defined as the
accumulated time in all under-provisioning states.
Notice that constants 1 and 3 in this paper are only for illustration purpose and can be any other values,
depending on how an elastic cloud platform is managed. Different cloud users and/or applications may prefer
different bounds of the hypothetical just-in-need states. The length of the interval between the upper (e.g., ) and
lower (e.g., ) bounds controls the re-provisioning frequency. Narrowing down the interval leads to higher re-
provision frequency for a fluctuating workload.
The just-in-need computing resource denotes a balanced state, in which the workload can be properly
handled and quality of service (QoS) can be satisfactorily guaranteed. Computing resource over-provisioning,
though QoS can be achieved, leads to extra but unnecessary cost to rent the cloud resources. Computing resource
under-provisioning, on the other hand, delays the processing of workload and may be at the risk of breaking QoS
commitment.
We present our elasticity definition for a realistic cloud platform and present mathematical foundation for
elasticity evaluation. The definition of elasticity is given from a computational point of view and we develop a
calculation formula for measuring elasticity value in virtualized clouds. Let Tm be the measuring time, which
includes all the periods in the just-in-need, over-provisioning, and under-provisioning states; that is, T m=Tj+To+Tu
Definition : The elasticity E of a cloud perform is the percentage of time when the platform is in just-in-need
states; that is, E=Tj/Tm=1-To/Tm-Tu/Tm
Broadly defining, elasticity is the capability of delivering preconfigured and just-in-need virtual machines
adaptively in a cloud platform upon the fluctuation of the computing resources required. Practically it is determined
by the time needed from an under-provisioning or over-provisioning state to a balanced resource provisioning state.
Definition 1 provides a mathematical definition which is easily and accurately measurable. Cloud platforms with
high elasticity exhibit high adaptively, implying that they switch from an over-provisioning or an under-
provisioning state to a balanced state almost in real time. Other cloud platforms take longer time to adjust and
reconfigure computing resources. Although it is recognized that high elasticity can also be achieved via physical
host standby, we argue that, with virtualization-enabled computing resource provisioning, elasticity can be
delivered in a much easier way due to the flexibility of service migration and image template generation.

where Tm denotes the total measuring time, in which To is the over-provisioning time which accumulates each
single period of time that the cloud platform needs to switch from an over-provisioning state to a balanced state
and is the Tu under-provisioning time which accumulates each single period of time that the cloud platform needs
to switch from an under-provisioning state to a corresponding balanced state.
Let Pj ,Po ,and Pu be the accumulated probabilities of just-in-need states, over-provisioning states, and under-
provisioning states, respectively. If Tm is sufficiently long, we have

Equation (E1) can be used when elasticity is measured by monitoring a real system. Equation (Pj) can be
used when elasticity is calculated by using our CTMC model. If elasticity metrics are well defined, elasticity of
cloud platforms could easily be captured, evaluated, and compared.
We would like to mention that the primary factors of elasticity, that is, the amount, frequency, and time of
resource re-provisioning, are all summarized in T o and Tu (i.e.Po, and Pu). Elasticity can be increased by changing
these factors. For example, one can maintain a list of standby or underutilized compute nodes. These nodes are
prepared for the upcoming surge of workload, if there is any, to minimize the time needed to start these nodes.
Such a hot standby strategy increases cloud elasticity by reducing Tu .

Relevant Properties of Clouds

We compare cloud elasticity with a few other relevant concepts, such as cloud resiliency, scalability, and
efficiency.
Resiliency
The persistence of service delivery that can be trusted justifiably, when facing changes. Therefore, cloud
resiliency implies the extent to which a cloud system withstands the external workload variation and under which
no computing resource re-provisioning is needed and the ability to re-provision a cloud system in a timely manner.
We think the latter implication defines the cloud elasticity while the former implication only exists in cloud
resiliency. In our elasticity study, we will focus on the latter one.
Scalability
Elasticity is often confused with scalability in more ways than one. Scalability reflects the performance
speedup when cloud resources are re-provisioned. In other words, scalability characterizes how well in terms of
performance a new compute cluster, either larger or smaller, handles a given workload. On the other hand,
elasticity explains how fast in terms of the re-provisioning time the compute cluster can be ready to process the
workload. Cloud scalability is impacted by quite a few factors such as the compute node type and count and
workload type and count. For example, Hadoop MapReduce applications typically scale much better than other
single-thread applications. It can be defined in terms of scaling number of threads, processes, nodes, and even data
centers. Cloud elasticity, on the other hand, is only constrained by the capability that a cloud service provider
offers. Other factors that are relevant to cloud elasticity include the type and count of standby machines, computing
resources that need to be re-provisioned. Different from cloud scalability, cloud elasticity does not concern
workload/application type and count at all.
Efficiency
Efficiency characterizes how cloud resource can be efficiently utilized as it scales up or down. This
concept is derived from speedup, a term that defines a relative performance after computing resource has been
reconfigured. Elasticity is closely related to efficiency of the clouds. Efficiency is defined as the percentage of
maximum performance (speedup or utilization) achievable. High cloud elasticity results in higher efficiency.
However, this implication is not always true, as efficiency can be influenced by other factors independent of the
system elasticity mechanisms (e.g., different implementations of the same operation). Scalability is affected by
cloud efficiency. Thus, efficiency may enhance elasticity, but not sufficiency. This is due to the fact that elasticity
depends on the resource types, but efficiency is not limited by resource types. For instance, with a multitenant
architecture, users may exceed their resources quota. They may compete for resources or interfere each other’s job
executions.
Elastic Cloud Platform Modeling

To model elastic cloud platforms, we make the following assumptions.


(i) All VMs are homogeneous with the same service capability and are added/removed one at a time.λ
(ii) The user request arrivals are modeled as a Poisson process with rate .
(iii) The service time, the start-up time, and the shut-off time of each VM are governed by exponential
distributions with rates α,µ , and , respectively .
(iv) Let i denote the number of virtual machines that are currently in service, and let denote the number
of requests that are receiving service or in waiting.
(v) Let State v(i,j) denote the various states of a cloud platform when the virtual machine number is j
and the request number is i . Let the hypothetical just-in-need state, over-provisioning state, and under-
provisioning state be JIN, OP, and UP, respectively. We can set the equations of the relation between the
virtual machine number and the request number as follows:
Let i denote the various states of a cloud platform when the virtual machine number is and the request
number is . Let the hypothetical just-in-need state, over-provisioning state, and under-provisioning state be JIN,
OP, and UP, respectively. We can set the equations of the relation between the virtual machine number and the
request number as follows:

The hypothetical just-in-need state, over-provisioning state, and under-provisioning state are listed in Table

For example:
Streaming Services. Netflix is dropping a new season of Mind hunter. The notification triggers a
significant number of users to get on the service and watch or upload the episodes. Resource-wise, it is an
activity spike that requires swift resource allocation.

E-commerce. Amazon has a Prime Day event with many special offers, sells-offs, promotions, and
discounts. It attracts an immense amount of customers on the service that is doing different activities.
Actions include searching for products, bidding, buying stuff, writing reviews, rating products. This
diverse activity requires a very flexible system that can allocate resources to one sector without dragging
down others.

Figure 1.7 Elasticity in cloud


Cloud elasticity is a popular feature associated with scale-out solutions (horizontal scaling), which allows
for resources to be dynamically added or removed when needed. Elasticity is generally associated with public cloud
resources and is more commonly featured in pay-per-use or pay-as-you-grow services. This means IT managers are
not paying for more resources than they are consuming and any given time. In virtualized environments cloud
elasticity could include the ability to dynamically deploy new virtual machines or shutdown inactive virtual
machines.
A use case that could easily have the need for cloud elasticity would be in retail with increased seasonal
activity. For example, during the holiday season for black Friday spikes and special sales during this season there
can be a sudden increased demand on the system. Instead of spending budget on additional permanent
infrastructure capacity to handle a couple months of high load out of the year, this is a good opportunity to use an
elastic solution. The additional infrastructure to handle the increased volume is only used in a pay-as-you-grow
model and then “shrinks” back to a lower capacity for the rest of the year. This also allows for additional sudden
and unanticipated sales activities throughout the year if needed without impacting performance or availability. This
can give IT managers the security of unlimited headroom when needed. This can also be a big cost savings to retail
companies looking to optimize their IT spend if packaged well by the service provider.
Elasticity as the scaling of system resources to increase or decrease capacity, whereby definitions and
Specifically state that the amount of provisioned re- in a broader sense, it could also contain manual steps. Without
a defined adaptation process, a scalable system cannot behave in an elastic manner, as scalability on its own does
not include temporal aspects. When evaluating elasticity, the following points need to be checked beforehand:
Autonomic Scaling: What adaptation process is used for autonomic scaling?
• Elasticity Dimensions: What is the set of resource types scaled as part of the adaptation process?
• Resource Scaling Units: For each resource type, in what unit is the amount of allocated resources varied?
• Scalability Bounds: For each resource type, what is the upper bound on the amount of resources that can be
allocated?
What is Cloud Scalability?
Scalability is one of the preeminent features of cloud computing. In the past, a system’s scalability relied on the
company’s hardware, and thus, was severely limited in resources. With the adoption of cloud computing,
scalability has become much more available and more effective.
Automatic scaling opened up numerous possibilities for the implementation of big data machine learning models
and data analytics to the fold.

Overall, Cloud Scalability covers expected and predictable workload demands and also handles rapid and
unpredictable changes in the scale of operation. The pay-as-you-expand pricing model makes possible the
preparation of the infrastructure and its spending budget in the long term without too much strain.
There are several types of cloud scalability:
Vertical, aka Scale-Up - the ability to handle an increasing workload by adding resources to the existing
infrastructure. It is a short term solution to cover immediate needs.
Horizontal, aka Scale-Out - the expansion of the existing infrastructure with new elements to tackle more
significant workload requirements. It is a long term solution aimed to cover present and future resource demands
with room for expansion.
Diagonal scalability is a more flexible solution that combines adding and removal of resources according to the
current workload requirements. It is the most cost-effective scalability solution by far.
1.8 ON-DEMAND PROVISIONING
On-demand computing is a delivery model in which computing resources are made available to the user as
needed. The resources may be maintained within the user's enterprise, or made available by a cloud service
provider. When the services are provided by a third-party, the term cloud computing is often used as a synonym for
on-demand computing.
The on-demand model was developed to overcome the common challenge to an enterprise of being able to
meet fluctuating demands efficiently. Because an enterprise's demand on computing resources can vary drastically
from one time to another, maintaining sufficient resources to meet peak requirements can be costly. Conversely, if
an enterprise tried to cut costs by only maintaining minimal computing resources, it is likely there will not be
sufficient resources to meet peak requirements.
The on-demand model provides an enterprise with the ability to scale computing resources up or down
with the click of a button, an API call or a business rule. The model is characterized by three attributes: scalability,
pay-per-use and self-service. Whether the resource is an application program that helps team members collaborate
or additional storage for archiving images, the computing resources are elastic, metered and easy to obtain.
Many on-demand computing services in the cloud are so user-friendly that non-technical end users can
easily acquire computing resources without any help from the organization's information technology (IT)
department. This has advantages because it can improve business agility, but it also has disadvantages because
shadow IT can pose security risks. For this reason, many IT departments carry out periodic cloud audits to identify
greynet on-demand applications and other rogue IT.
a) Local On-demand Resource Provisioning
 The Engine for the Virtual Infrastructure
 Virtualization of Cluster and HPC Systems Benefits
 Open Nebula creates a distributed virtualization layer
 Extend the benefits of VM Monitors from one to multiple resources
 Decouple the VM (service) from the physical location
 Transform a distributed physical infrastructure into a flexible and elastic virtual infrastructure, which
adapts to the changing demands of the VM Service workload

b)Remote On-demand Resource Provisioning


 Access to Cloud Systems
 Federation of Cloud Systems
 The RESERVOIR Project

Benefit of Remote Provisioning


The virtualization of the local infrastructure supports a virtualized alternative to contribute resources to a Grid
infrastructure.
• Simpler deployment and operation of new middleware distributions
• Lower operational costs
• Easy provision of resources to more than one infrastructure or VO
• Easy support for VO-specific worker nodes
• Performance partitioning between local and grid clusters
VMs to Provide pre-Created Software Environments for Jobs
• Extensions of job execution managers to create per-job basis VMs so as to
provide a pre-defined environment for job execution
• Those approaches still manage jobs
• The VMs are bounded to a given PM and only exist during job execution
• Condor, SGE, MOAB, Globus GridWay…
• Job Execution Managers for the Management of VMs
• Job execution managers enhanced to allow submission of VMs
• Those approaches manage VMs as jobs
• Condor, “pilot” backend in Globus VWS
Differences between VMs and Jobs as basic Management Entities
• VM structure: Images with fixed and variable parts for migration…
• VM life-cycle: Fixed and transient states for contextualization, live migration.
• VM duration: Long time periods (“forever”)
• VM groups (services): Deploy ordering, affinity, rollback management…
• VM elasticity: Changing of capacity requirements and number of VMs
• Different Metrics in the Allocation of Physical Resources
Capacity provisioning:
Probability of SLA violation for a given cost of provisioning including support for server consolidation,
partitioning.
• HPC scheduling: Turnaround time, wait time, throughput
VMware DRS, Platform Orchestrator, IBM Director, Novell ZENworks,Enomalism, Xenoserver
• Advantages:
• Open-source (Apache license v2.0)
• Open and flexible architecture to integrate new virtualization technologies
• Support for the definition of any scheduling policy (consolidation, workload balance, affinity, SLA…)
• LRM-like CLI and API for the integration of third-party tools
Static Provisioning: For applications that have predictable and generally unchanging demands/workloads, it is
possible to use “static provisioning" effectively. With advance provisioning, the customer contracts with the
provider for services and the provider prepares the appropriate resources in advance of start of service. The
customer is charged a flat fee or is billed on a monthly basis.
Dynamic Provisioning: In cases where demand by applications may change or vary, “dynamic provisioning"
techniques have been suggested whereby VMs may be migrated on-the-fly to new compute nodes within the cloud.
With dynamic provisioning, the provider allocates more resources as they are needed and removes them when they
are not. The customer is billed on a pay-per-use basis. When dynamic provisioning is used to create a hybrid cloud,
it is sometimes referred to as cloud bursting.
User Self-provisioning: With user self- provisioning (also known as cloud self- service), the customer purchases
resources from the cloud provider through a web form, creating a customer account and paying for resources with a
credit card. The provider's resources are available for customer use within hours, if not minutes. Parameters for
Resource Provisioning
i) Response time: The resource provisioning algorithm designed must take minimal time to respond when
executing the task.
ii) Minimize Cost: From the Cloud user point of view cost should be minimized.
iii) Revenue Maximization: This is to be achieved from the Cloud Service Provider’s view.
iv) Fault tolerant: The algorithm should continue to provide service in spite of failure of nodes.
v) Reduced SLA Violation: The algorithm designed must be able to reduce SLA violation.
vi) Reduced Power Consumption: VM placement & migration techniques must lower power consumption.

Resource Provisioning Strategies For efficiently making use of the Cloud Resources, resource provisioning
techniques are to be used.
There are many resource provisioning techniques both static and dynamic provisioning each having its own pros
and cons. The provisioning techniques are used to improve QoS parameters , minimize cost for cloud user and
maximize revenue for the Cloud Service Provider improve response time , deliver services to cloud user even in
presence of failures, improve performance reduces SLA violation, efficiently uses cloud resources reduces power
consumption

c) Static Resource Provisioning Techniques


Aneka’s deadline driven provisioning technique is used for scientific application as scientific applications
require large computing power. Aneka is a cloud application platform which is capable of provisioning resources
which are obtained from various sources such as public and private clouds, clusters, grids and desktop grids. This
technique efficiently allocates resources thereby reducing application execution time. Because resource failures are
inevitable it is a good idea to efficiently couple private and public cloud using an architectural framework for
realizing the full potential of hybrid clouds. Proposes a failure- aware resource provisioning algorithm that is
capable of providing cloud users’ QoS requirements. This provides resource provisioning policies and proposes a
scalable hybrid infrastructure to assure QoS of the users. This improves the deadline violation rate by 32% and
57% improvement in slowdown with a limited cost on a public cloud. Since resources held by single cloud are
usually limited it is better to get resources from other participating clouds. But this is difficult to provide right
resources from different cloud providers because management policies are different and description about various
resources is different in each organization. Also interoperability is hard to achieve. To overcome this, Inter Cloud
Resource Provisioning (ICRP) system is proposed in where resources and tasks are described semantically and
stored using resource ontology and using a semantic scheduler and a set of inference rules resources are assigned.
With the increasing functionality and complexity in Cloud computing, resource failure cannot be avoided. So the
proposed strategy in addresses the question of provisioning resources to applications in the presence of failures in a
hybrid cloud computing environment. It takes into account the workload model and the failure correlations to
redirect requests to appropriate cloud providers. This is done using real failure traces and workload models, and it
is found that the deadline violation rate of users’ request is reduced by 20% with a limited cost on Amazon Public
Cloud.
d) Dynamic Resource provisioning Techniques
The algorithm proposed in suitable for web applications where response time is one of the important factors. For
web applications guaranteeing average response time is difficult because traffic patterns are highly dynamic and
difficult to predict accurately and also due to the complex nature of the multi-tier web applications it is difficult to
identify bottlenecks and resolving them automatically. This provisioning technique proposes a working prototype
system for automatic detection and resolution of bottlenecks in a multi-tier cloud hosted web applications. This
improves response time and also identifies over provisioned resources. VM based resource management is a heavy
weight task. So this is less flexible and less resource efficient. To overcome this, a lightweight approach called
Elastic Application Container [EAC] is used for provisioning the resources where EAC is a virtual resource unit for
providing better resource efficiency and more scalable applications. This EAC–oriented platform and algorithm is
to support multi tenant cloud use . Dynamic creation of the tenant is done by integrating cloud based services on
the fly. But dynamic creation is by building the required components from the scratch. Even though multitenant
systems save cost, but incur huge reconfiguration costs. This approach allows clients to specify their requirements
which are not supported in previous techniques. This approach proposes a novel user interface-tenant selector
(UTC) model which enables cloud based services to be systematically modeled and provisioned as variants of
existing service tenants in the cloud. This considers functional, non functional and resource allocation requirements
which are explicitly specified by the client via the user interface component of the model. So the cost and time is
saved in this approach. The technique proposed in makes use of the provisioned called adaptive power-aware
virtual machine provisioned (APA-VMP) where the resources are provisioned dynamically from the resource pool.
This is from Infrastructure-as-a- Service provider point of view where the custom Virtual machines (VM) are
launched in appropriate server in a data center.
Server Consolidation is a technique to save on energy costs in virtualized data centers. The instantiation of
a given set of Virtual Machines (VMs) to Physical Machines (PMs) can be thought of as a provisioning step where
amount of resources to be allocated to a VM is determined and a placement step which decides which VMs can be
placed together on physical machines thereby allocating VMs to PMs. Here a provisioning scheme is proposed
which takes into account acceptable intensity of violation of provisioned resources. Correlation among aggregated
resource demands of VMs is considered when VMs are mapped to PMs. This reduces number of servers (up to
32%) required to host 1000 VMs and thus enables to turn off unnecessary servers. In Cloud Computing federated
Cloud Environment is used when the resource requirement of user requests exceeds the resource limits of Cloud
Providers’ resources. It is desirable to reduce SLA violation which can be achieved through load balancing
algorithm that is threshold based. This algorithm allocates VMs in order to balance the load among multiple
datacenters in a federated cloud environment by focusing on reducing users’ SLA violation.

Sl. On demand Provisioning


Merits Challenges
No. Techniques
Deadline-driven provisioning of Able to efficiently allocate Not suitable for HPC-data
resources for scientific resources from different sources in intensive applications.
1
applications in hybrid clouds order to reduce application
with Aneka execution times.
Dynamic provisioning in multi- Matches tenant functionalities with Does not work for testing on real-
2 tenant service clouds client requirements. life cloud–based system and across
several domains.
Elastic Application Container: A Outperforms in terms of Not suitable for web applications
3 Lightweight Approach for Cloud Flexibility and resource and supports only one type of
Resource Provisioning efficiency. programming language, Java.
Hybrid Cloud Resource Able to adopt user the workload Not suitable to run real
Provisioning Policy in the model to provide flexibility in the experiments.
Presence of Resource Failures choice of strategy based on the
4
desired level of QoS, the needed
performance, and the available
budget.
Provisioning of Requests for Runtime efficient & can provide Not practical for medium to large
Virtual Machine Sets with an effective means of online VM- problems.
5
Placement Constraints in IaaS to-PM mapping and also
Clouds Maximizes revenue.
Failure-aware resource Able to improve the users’ QoS Not able to run real experiments
provisioning for hybrid Cloud about 32% in terms of deadline and also not able to move VMs
infrastructure violation rate and 57% in terms of between public and private clouds
6
slowdown with a limited cost on a to deal with resource failures in the
public cloud. local
infrastructures.
VM Provisioning Method to Reduces SLA violations & Increases the problem of resource
Improve the Profit and SLA Improves Profit. allocation and load balancing
7
Violation of Cloud Service among the datacenters.
Providers
Risk Aware Provisioning and Significant amount of reduction in Takes into account only CPU
Resource Aggregation based the numbers required to host requirements of VMs.
8
Consolidation of Virtual 1000 VMs and enables to turn off
Machines unnecessary servers.
Semantic based Resource Enables the fulfillment of customer QoS parameters like response time
Provisioning and Scheduling in requirements to the maximum by and throughput has to be achieved
Inter-cloud Environment providing additional resources to for interactive applications.
9 the cloud system participating in a
federated cloud environment
thereby solving the
interoperability problem.
Design and implementation of Efficient VM placement and Not suitable for conserving power
adaptive power-aware virtual significant reduction in power. in modern data centers.
10
machine provisioned (APA-
VMP) using swarm intelligence
Adaptive resource provisioning Automatic Identification and Not suitable for n-tier clustered
for read intensive multi-tier resolution of bottlenecks in application hosted on a cloud.
11
applications in the cloud multitier web application hosted on
a cloud.
Optimal Resource Provisioning Efficiently provisions Cloud Applicable only for SaaS users and
for Cloud Computing Resources for SaaS users with a SaaS providers.
12
Environment limited budget and Deadline
thereby optimizing QoS.
SUMMARY
Cloud computing is expressively leading today’s IT enterprises towards achieving their business goals
alongside providing utmost customer satisfaction with very lower cost with respect to infrastructure, platforms, and
software perspectives. While these infrastructure-related hassles handled by a CSP, cloud service provider,
organization needs to completely focus on the service to their customers. Being a user of cloud services from CSP,
organizations need not have high technical potential with respect infrastructure and platforms. Whereas, Cloud
Service Users need to have expertise on the functionality provisioning/servicing based on their customer
requirements. Alongside to its benefits, cloud computing is also comes with various challenges. Among all,
security being a leading threat.

CHAPTER-2 CLOUD ENABLING TECHNOLOGIES

2.1 SERVICE-ORIENTED ARCHITECTURE (SOA)


A service-oriented architecture (SOA) is essentially a collection of services. These services communicate
with each other. The communication can involve either simple data passing or it could involve two or more
services coordinating some activity. Some means of connecting services to each other is needed.
Service-Oriented Architecture (SOA) is a style of software design where services are provided to the other
components by application components, through a communication protocol over a network. Its principles are
independent of vendors and other technologies. In service oriented architecture, a number of services communicate
with each other, in one of two ways: through passing data or through two or more services coordinating an activity.
Services
If a service-oriented architecture is to be effective, we need a clear understanding of the term service. A service is a
function that is well-defined, self-contained, and does not depend on the context or state of other services.
See Service.
Connections
The technology of Web Services is the most likely connection technology of service-oriented architectures. The
following figure illustrates a basic service-oriented architecture. It shows a service consumer at the right sending a
service request message to a service provider at the left. The service provider returns a response message to the
service consumer. The request and subsequent response connections are defined in some way that is understandable
to both the service consumer and service provider. How those connections are defined is explained in Web Services
Explained. A service provider can also be a service consumer.
Web services which are built as per the SOA architecture tend to make web service more independent. The web
services themselves can exchange data with each other and because of the underlying principles on which they are
created, they don't need any sort of human interaction and also don't need any code modifications. It ensures that
the web services on a network can interact with each other seamlessly.
Benefit of SOA
 Language Neutral Integration: Regardless of the developing language used, the system offers and invoke
services through a common mechanism. Programming language neutralization is one of the key benefits
of SOA's integration approach.
 Component Reuse: Once an organization built an application component, and offered it as a service, the
rest of the organization can utilize that service.
 Organizational Agility: SOA defines building blocks of capabilities provided by software and it offers
some service(s) that meet some organizational requirement; which can be recombined and integrated
rapidly.
 Leveraging Existing System: This is one of the major use of SOA which is to classify elements or
functions of existing applications and make them available to the organizations or enterprise.
2.1.1 SOA Architecture
SOA architecture is viewed as five horizontal layers. These are described below:
Consumer Interface Layer: These are GUI based apps for end users accessing the applications.
Business Process Layer: These are business-use cases in terms of application.
Services Layer: These are whole-enterprise, in service inventory.
Service Component Layer: are used to build the services, such as functional and technical libraries.
Operational Systems Layer: It contains the data model.
SOA Governance
It is a notable point to differentiate between It governance and SOA governance. IT governance
focuses on managing business services whereas SOA governance focuses on managing Business services.
Furthermore in service oriented organization, everything should be characterized as a service in an
organization. The cost that governance put forward becomes clear when we consider the amount of risk
that it eliminates with the good understanding of service, organizational data and processes in order to
choose approaches and processes for policies for monitoring and generate performance impact.
SOA Architecture Protocol
Figure 2.2 SOA Protocol Diagram
Here lies the protocol stack of SOA showing each protocol along with their relationship among
each protocol. These components are often programmed to comply with SCA (Service Component
Architecture), a language that has broader but not universal industry support. These components are written
in BPEL (Business Process Execution Languages), Java, C#, XML etc and can apply to C++ or
FORTRAN or other modern multi-purpose languages such as Python, PP or Ruby. With this, SOA has
extended the life of many all-time famous applications.

SOA Security
 With the vast use of cloud technology and its on-demand applications, there is a need for well - defined
security policies and access control.
 With the betterment of these issues, the success of SOA architecture will increase.
 Actions can be taken to ensure security and lessen the risks when dealing with SOE (Service Oriented
Environment).
 We can make policies that will influence the patterns of development and the way services are used.
Moreover, the system must be set-up in order to exploit the advantages of public cloud with resilience.
Users must include safety practices and carefully evaluate the clauses in these respects.
Elements of SOA
2.1.2 SOA is based on some key principles which are mentioned below
1. Standardized Service Contract - Services adhere to a service description. A service must have some sort
of description which describes what the service is about. This makes it easier for client applications to
understand what the service does.
2. Loose Coupling – Less dependency on each other. This is one of the main characteristics of web services
which just states that there should be as less dependency as possible between the web services and the
client invoking the web service. So if the service functionality changes at any point in time, it should not
break the client application or stop it from working.
3. Service Abstraction - Services hide the logic they encapsulate from the outside world. The service should
not expose how it executes its functionality; it should just tell the client application on what it does and not
on how it does it.
4. Service Reusability - Logic is divided into services with the intent of maximizing reuse. In any
development company re-usability is a big topic because obviously one wouldn't want to spend time and
effort building the same code again and again across multiple applications which require them. Hence,
once the code for a web service is written it should have the ability work with various application types.
5. Service Autonomy - Services should have control over the logic they encapsulate. The service knows
everything on what functionality it offers and hence should also have complete control over the code it
contains.
6. Service Statelessness - Ideally, services should be stateless. This means that services should not withhold
information from one state to the other. This would need to be done from either the client application. An
example can be an order placed on a shopping site. Now you can have a web service which gives you the
price of a particular item. But if the items are added to a shopping cart and the web page navigates to the
page where you do the payment, the responsibility of the price of the item to be transferred to the payment
page should not be done by the web service. Instead, it needs to be done by the web application.
7. Service Discoverability - Services can be discovered (usually in a service registry). We have already seen
this in the concept of the UDDI, which performs a registry which can hold information about the web
service.
8. Service Composability - Services break big problems into little problems. One should never embed all
functionality of an application into one single service but instead, break the service down into modules
each with a separate business functionality.
9. Service Interoperability - Services should use standards that allow diverse subscribers to use the service.
In web services, standards as XML and communication over HTTP is used to ensure it conforms to this
principle.
Service-Oriented Architecture Patterns

 There are three roles in each of the Service-Oriented Architecture building blocks: service
provider; service broker, service registry, service repository; and service requester/consumer.
 The service provider works in conjunction with the service registry, debating the whys and hows of
the services being offered, such as security, availability, what to charge, and more. This role also
determines the service category and if there need to be any trading agreements.
 The service broker makes information regarding the service available to those requesting it. The
scope of the broker is determined by whoever implements it.
 The service requester locates entries in the broker registry and then binds them to the service
provider. They may or may not be able to access multiple services; that depends on the capability of
the service requester.
2.1.3 Implementing Service-Oriented Architecture
 When it comes to implementing service-oriented architecture (SOA), there is a wide range of
technologies that can be used, depending on what your end goal is and what you’re trying to
accomplish.
 Typically, Service-Oriented Architecture is implemented with web services, which makes the
“functional building blocks accessible over standard internet protocols.”
An example of a web service standard is SOAP, which stands for Simple Object Access Protocol. In a
nutshell, SOAP “is a messaging protocol specification for exchanging structured information in the
implementation of web services in computer networks.
Here are some examples of SOA at work
To deliver services outside the firewall to new markets: First Citizens Bank not only provides services to its
own customers, but also to about 20 other institutions, including check imaging, check processing, outsourced
customer service, and "bank in a box" for getting community-sized bank everything they need to be up and
running. Underneath these services is an SOA-enabled mainframe operation.

To provide real-time analysis of business events: Through real-time analysis, OfficeMax is able to order out-
of-stock items from the point of sale, employ predictive monitoring of core business processes such as order
fulfillment, and conduct real-time analysis of business transactions, to quickly measure and track product
affinity, hot sellers, proactive inventory response, price error checks, and cross-channel analysis.
To streamline the business: Whitney National Bank in New Orleans built a winning SOA formula that helped
the bank attain measurable results on a number of fronts, including cost savings, integration, and more
impactful IT operations. Metrics and progress are tracked month to month -- not a "fire-and-forget business
case."

To speed time to market: This may be the only remaining competitive advantage available to large
enterprises, said the CIOs of Wal-Mart, Best Buy and McDonald’s.

To improve federal government operations: The US Government Accountability Office (GAO) issued
guidelines intended to help government agencies achieve enterprise transformation through enterprise
architecture. The guidelines and conclusions offer a strong business case for commercial businesses also
seeking to achieve greater agility and market strength through shared IT services. As GAO explains it, effective
use of an enterprise architecture achieves a wide range of benefits.

To improve state and local government operations: The money isn’t there to advance new initiatives, but
state governments may have other tools at their disposal to drive new innovations — through shared IT service.
Along these lines, a new study released by the National Association of State Chief Information Officers
(NASCIO), TechAmerica and Grant Thornton, says well-managed and focused IT initiatives may help pick up
the slack where spending is being cut back.

To improve healthcare delivery: If there’s any sector of the economy that desperately needs good
information technology, that’s the healthcare sector — subject to a dizzying array of government mandates,
fighting cost overruns at every corner, and trying to keep up with the latest developments in care and protocols.

To support online business offerings: Thomson Reuters, a provider of business intelligence information for
businesses and professionals, maintains a stable of 4,000 services that it makes available to outside customers.
For example, one such service, Thomson ONE Analytics, delivers a broad and deep range of financial content
to Thomson Reuters clientele. Truly an example of SOA supporting the cloud.
To virtualize history: Colonial Williamsburg, Virginia, implementing a virtualized, tiered storage pool to
manage its information and content.
To defend the universe: US Air Force space administrator announced that new space-based situational
awareness systems will be deployed on service oriented architecture-based infrastructure.
The importance of Service-Oriented Architecture
There are a variety of ways that implementing an SOA structure can benefit a business, particularly, those that
are based around web services. Here are some of the foremost:

Creates reusable code

The primary motivator for companies to switch to an SOA is the ability to reuse code for different
applications. By reusing code that already exists within a service, enterprises can significantly reduce the time
that is spent during the development process. Not only does the ability to reuse services decrease time
constraints, but it also lowers costs that are often incurred during the development of applications. Since SOA
allows varying languages to communicate through a central interface, this means that application engineers do
not need to be concerned with the type of environment in which these services will be run. Instead, they only
need to focus on the public interface that is being used.
Creates reusable code
The primary motivator for companies to switch to an SOA is the ability to reuse code for different
applications. By reusing code that already exists within a service, enterprises can significantly reduce the time
that is spent during the development process. Not only does the ability to reuse services decrease time
constraints, but it also lowers costs that are often incurred during the development of applications. Since SOA
allows varying languages to communicate through a central interface, this means that application engineers do
not need to be concerned with the type of environment in which these services will be run. Instead, they only
need to focus on the public interface that is being used.
Promotes interaction
A major advantage in using SOA is the level of interoperability that can be achieved when properly
implemented. With SOA, no longer will communication between platforms be hindered in operation by the
languages on which they are built. Once a standardized communication protocol has been put in place, the
platform systems and the varying languages can remain independent of each other, while still being able to
transmit data between clients and services. Adding to this level of interoperability is the fact that SOA can
negotiate firewalls, thus ensuring that companies can share services that are vital to operations.
Allows for scalability
When developing applications for web services, one issue that is of concern is the ability to increase the scale
of the service to meet the needs of the client. All too often, the dependencies that are required for applications
to communicate with different services inhibit the potential for scalability. However, with SOA this is not the
case. By using an SOA where there is a standard communication protocol in place, enterprises can drastically
reduce the level of interaction that is required between clients and services, and this reduction means that
applications can be scaled without putting added pressure on the application, as would be the case in a tightly-
coupled environment.
Reduced costs
In business, the ability to reduce costs while still maintaining a desired level of output is vital to success, and
this concept holds true with customized service solutions as well. By switching to an SOA-based system,
businesses can limit the level of analysis that is often required when developing customized solutions for
specific applications. This cost reduction is facilitated by the fact that loosely coupled systems are easier to
maintain and do not necessitate the need for costly development and analysis. Furthermore, the increasing
popularity in SOA means reusable business functions are becoming commonplace for web services which
drive costs lower.
2.2 REST AND SYSTEMS OF SYSTEMS
Representational State Transfer (REST) is an architecture principle in which the web services are viewed
as resources and can be uniquely identified by their URLs. The key characteristic of a RESTful Web service is
the explicit use of HTTP methods to denote the invocation of different operations.

Representational state transfer (REST) is a distributed system framework that uses Web protocols and
technologies. The REST architecture involves client and server interactions built around the transfer of
resources. The Web is the largest REST implementation.
REST may be used to capture website data through interpreting extensible markup language (XML) Web
page files with the desired data. In addition, online publishers use REST when providing syndicated content to
users by activating Web page content and XML statements. Users may access the Web page through the
website's URL, read the XML file with a Web browser, and interpret and use data as needed.
Basic REST constraints include:
Client and Server: The client and server are separated from REST operations through a uniform interface,
which improves client code portability.
Stateless: Each client request must contain all required data for request processing without storing client
context on the server.
Cacheable: Responses (such as Web pages) can be cached on a client computer to speed up Web Browsing.
Responses are defined as cacheable or not cacheable to prevent clients from reusing stale or inappropriate data
when responding to further requests.
Layered System: Enables clients to connect to the end server through an intermediate layer for improved
scalability.

Figure 2.4 Representation state transfer architecture


2.2.1 The basic REST design principle uses the HTTP protocol methods for typical CRUD operations:
 POST - Create a resource
 GET - Retrieve a resource
 PUT – Update a resource
 DELETE - Delete a resource
The major advantages of REST-services are:
 They are highly reusable across platforms (Java, .NET, PHP, etc) since they rely on basic HTTP protocol
 They use basic XML instead of the complex SOAP XML and are easily consumable
 REST-based web services are increasingly being preferred for integration with backend enterprise services.
 In comparison to SOAP based web services, the programming model is simpler and the use of native XML
instead of SOAP reduces the serialization and deserialization complexity as well as the need for
additional third-party libraries for the same.
Current Java-based frameworks for building REST-ful services like Apache CXF, RESTlet, JAX-WS API
with REST support, Spring MVC REST support available in Spring 3.0 onwards are complex in terms of
development and XML configurations and usually require a learning curve. Also, due to the dependency of
these frameworks with specific versions of dependent jar files they are very difficult to integrate across
application server environments. In addition, because some (Apache CXF, JAX-WS) try to support both
SOAP and REST services, they tend to become heavy-weight in terms of packaging and also may impact
performance.
Hence a simpler extensible framework is proposed here for exposing the business services as REST-like
services. The framework is very light-weight and uses the standard Front Controller pattern which is very
simple to understand. It also is extensible to integrate with backend services either via API or any other
integration pattern like ESB etc. The data interchange model can be easily configured by using custom XML
serializers,JAXB or any other object-to-XML conversion tools.
2.2.2 Overview of Architecture
In J2EE applications, the Java API or services are exposed as either Stateless Session Bean API (Session
Façade pattern) or as SOAP web services. In case of integration of these services with client applications using
non-Java technology like .NET or PHP etc, it becomes very cumbersome to work with SOAP Web Services
and also involves considerable development effort.
The approach mentioned here is typically intended for service integrations within the organization where
there are many services which can be reused but the inter-operability and development costs using SOAP
create a barrier for quick integrations. Also, in scenarios where a service is not intended to be exposed on the
enterprise ESB or EAI by the internal Governance organization, it becomes difficult to integrate 2 diverse-
technology services in a point-to-point manner.
For example – In a telecom IT environment:
 Sending an SMS to the circle-specific SMSC’s which is exposed as a SOAP web service or an EJB API;
Or
 Creating a Service Request in a CRM application exposed as a Database stored procedure (e.g. Oracle
CRM) exposed over ESB using MQ or JMS bindings; Or
 Creating a Sales Order request for a Distributor from a mobile SMS using the SMSGateway.
 If above services are to be used by a non-Java application, then the integration using SOAP web services
will be cumbersome and involve extended development.
This new approach has been implemented in the form of a framework so that it can be reused in other areas
where a Java Service can be exposed as a REST-like resource. The approach is similar to the Struts framework
approach and consists of the following components as shown in diagram below:

Figure 2.3 REST-Like enablement framework


The architecture consists of a Front Controller which acts as the central point for receiving requests and
providing response to the clients. The Front Controller delegates the request processing to the ctionController
which contains the processing logic of this framework. The ActionController performs validation, maps the
request to the appropriate Action and invokes the action to generate response. Various Helper Services are
provided for request processing, logging and exception handling which can be used by the ActionController as
well as the individual Actions.
Service Client
This is a client application which needs to invoke the service. This component can be either Java-based or any
other client as long as it is able to support the HTTP methods
Common Components
These are the utility services required by the framework like logging, exception handling and any common
functions or constants required for implementation. Apache Commons logging with Log4j implementation is
used in the sample code.
RESTServiceServlet
The framework uses the Front Controller pattern for centralized request processing and uses this Java Servlet
component for processing the input requests. It supports common HTTP methods like GET, PUT, POST and
DELETE.
RESTActionController
This component is the core framework controller which manages the core functionality of loading the services
and framework configuration, validation of requests and mapping the requests with configured REST actions
and executing the actions.
RESTConfiguration
This component is responsible for loading and caching the framework configuration as well as the various
REST services configuration at run-time. This component is used by the RESTActionController to identify the
correct action to be called for a request as well as validate the input request.
RESTMapping
This component stores the REST action mappings specified in the configuration file. The mapping primarily
consists of the URI called by client and the action class which does the processing.
ActionContext
This component encapsulates all the features required for execution of the REST action. It assists developers
in providing request and response handling features so that the developer has to only code the actual business
logic implementation. It hides the protocol specific request and response objects from the Action component
and hence allows independent testing of the same like a POJO. It also provides a handle to the XML Binding
Service so that Java business objects can be easily converted to XML and vice-versa based on the configured
XML Binding API. The RESTActionController configures this component dynamically and provides it to the
Action component.

2.3 WEB SERVICES


 What is Web Service?
 Type of Web Service
 Web Services Advantages
 Web Service Architecture
 Web Service
Characteristics What is Web
Service?
 Web service is a standardized medium to propagate communication between the client and server
applications on the World Wide Web.
 A web service is a software module which is designed to perform a certain set of tasks.
 The web services can be searched for over the network and can also be invoked accordingly.
 When invoked the web service would be able to provide functionality to the client which invokes that
web service.
 The above diagram shows a very simplistic view of how a web service would actually work. The
client would invoke a series of web service calls via requests to a server which would host the actual
web service.
 These requests are made through what is known as remote procedure calls. Remote Procedure
Calls(RPC) are calls made to methods which are hosted by the relevant web service.
 As an example, Amazon provides a web service that provides prices for products sold online via
amazon.com. The front end or presentation layer can be in .Net or Java but either programming
language would have the ability to communicate with the web service.
 The main component of a web service is the data which is transferred between the client and the
server, and that is XML. XML (Extensible markup language) is a counterpart to HTML and easy to
understand the intermediate language that is understood by many programming languages.
 So when applications talk to each other, they actually talk in XML. This provides a common
platform for application developed in various programming languages to talk to each other.

 Web services use something known as SOAP (Simple Object Access Protocol) for sending the XML
data between applications. The data is sent over normal HTTP.
 The data which is sent from the web service to the application is called a SOAP message. The SOAP
message is nothing but an XML document. Since the document is written in XML, the client
application calling the web service can be written in any programming language.
2.3.1 Type of Web Service
There are mainly two types of web services.
 SOAP web services.
 RESTful web services.
In order for a web service to be fully functional, there are certain components that need to be in place.
These components need to be present irrespective of whatever development language is used for
programming the web service.
SOAP (Simple Object Access Protocol)
 SOAP is known as a transport-independent messaging protocol. SOAP is based on transferring XML data
as SOAP Messages. Each message has something which is known as an XML document.
 Only the structure of the XML document follows a specific pattern, but not the content. The best part of
Web services and SOAP is that its all sent via HTTP, which is the standard web protocol.
 Each SOAP document needs to have a root element known as the <Envelope> element. The root element is
the first element in an XML document.
 The "envelope" is in turn divided into 2 parts. The first is the header, and the next is the body.
 The header contains the routing data which is basically the information which tells the XML document to
which client it needs to be sent to.
The body will contain the actual message.
The diagram below shows a simple example of the communication via SOAP.

WSDL (Web services description language)


 The client invoking the web service should know where the web service actually resides.
 Secondly, the client application needs to know what the web service actually does, so that it can invoke
the right web service.
 This is done with the help of the WSDL, known as the Web services description language.
 The WSDL file is again an XML-based file which basically tells the client application what the web
service does. By using the WSDL document, the client application would be able to understand where
the web service is located and how it can be utilized.
Web Service Example
An example of a WSDL file is given below.
<definitions>
<message name="TutorialRequest">
<part name="TutorialID" type="xsd:string"/>
</message>
<message name="TutorialResponse">
<part name="TutorialName" type="xsd:string"/>
</message>
<portType name="Tutorial_PortType">
<operation name="Tutorial">
<input message="tns:TutorialRequest"/>
<output message="tns:TutorialResponse"/>
</operation>
</portType>
<binding name="Tutorial_Binding" type="tns:Tutorial_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Tutorial">
<soap:operation soapAction="Tutorial"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:Tutorialservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:Tutorialservice"
use="encoded"/>
</output>
</operation>
</binding>
</definitions>

The important aspects to note about the above WSDL declaration are as follows;
<message> - The message parameter in the WSDL definition is used to define the different data elements for each
operation performed by the web service. So in the example above, we have 2 messages which can be exchanged
between the web service and the client application, one is the "TutorialRequest", and the other is the
"TutorialResponse" operation. The TutorialRequest contains an element called "TutorialID" which is of the type
string. Similarly, the TutorialResponse operation contains an element called "TutorialName" which is also a type
string.
<portType> - This actually describes the operation which can be performed by the web service, which in our case
is called Tutorial. This operation can take 2 messages; one is an input message, and the other is the output message.
<binding> - This element contains the protocol which is used. So in our case, we are defining it to use http
(http://schemas.xmlsoap.org/soap/http). We also specify other details for the body of the operation, like the
namespace and whether the message should be encoded.
Universal Description, Discovery, and Integration (UDDI)
 UDDI is a standard for describing, publishing, and discovering the web services that are provided by a
particular service provider. It provides a specification which helps in hosting the information on web
services.
 Now we discussed in the previous topic about WSDL and how it contains information on what the Web
service actually does.
 But how can a client application locate a WSDL file to understand the various operations offered by a web
service? So UDDI is the answer to this and provides a repository on which WSDL files can be hosted.
 So the client application will have complete access to the UDDI, which acts as a database containing all the
WSDL files.
 Just as a telephone directory has the name, address and telephone number of a particular person, the same
way the UDDI registry will have the relevant information for the web service.
2.3.2 Web Services Advantages

We already understand why web services came about in the first place, which was to provide a platform which
could allow different applications to talk to each other.

Exposing Business Functionality on the network - A web service is a unit of managed code that provides some
sort of functionality to client applications or end users. This functionality can be invoked over the HTTP protocol
which means that it can also be invoked over the internet. Nowadays all applications are on the internet which
makes the purpose of Web services more useful. That means the web service can be anywhere on the internet and
provide the necessary functionality as required.

Interoperability amongst applications - Web services allow various applications to talk to each other and share
data and services among themselves. All types of applications can talk to each other. So instead of writing specific
code which can only be understood by specific applications, you can now write generic code that can be understood
by all applications

A Standardized Protocol which everybody understands - Web services use standardized industry protocol for
the communication. All the four layers (Service Transport, XML Messaging, Service Description, and Service
Discovery layers) uses well-defined protocols in the web services protocol stack.

Reduction in cost of communication - Web services use SOAP over HTTP protocol, so you can use your existing
low-cost internet for implementing web services.
Web service Architecture
Every framework needs some sort of architecture to make sure the entire framework works as desired. Similarly, in
web services, there is an architecture which consists of three distinct roles as given below
Provider - The provider creates the web service and makes it available to client application who want to use it.
Requestor - A requestor is nothing but the client application that needs to contact a web service. The client
application can be a .Net, Java, or any other language based application which looks for some sort of functionality
via a web service.
Broker - The broker is nothing but the application which provides access to the UDDI. The UDDI, as discussed in
the earlier topic enables the client application to locate the web service.
The diagram below showcases how the Service provider, the Service requestor and Service registry interact
with each other.

Publish - A provider informs the broker (service registry) about the existence of the web service by using the
broker's publish interface to make the service accessible to clients
Find - The requestor consults the broker to locate a published web service
Bind - With the information it gained from the broker(service registry) about the web service, the requestor is able
to bind, or invoke, the web service.
2.3.3. Web service Characteristics
Web services have the following special behavioral characteristics:

They are XML-Based - Web Services uses XML to represent the data at the representation and data transportation
layers. Using XML eliminates any networking, operating system, or platform sort of dependency since XML is the
common language understood by all.

Loosely Coupled – Loosely coupled means that the client and the web service are not bound to each other, which
means that even if the web service changes over time, it should not change the way the client calls the web service.
Adopting a loosely coupled architecture tends to make software systems more manageable and allows simpler
integration between different systems.

Synchronous or Asynchronous functionality- Synchronicity refers to the binding of the client to the execution of
the service. In synchronous operations, the client will actually wait for the web service to complete an operation.
An example of this is probably a scenario wherein a database read and write operation are being performed. If data
is read from one database and subsequently written to another, then the operations have to be done in a sequential
manner. Asynchronous operations allow a client to invoke a service and then execute other functions in parallel.
This is one of the common and probably the most preferred techniques for ensuring that other services are not
stopped when a particular operation is being carried out.

Ability to support Remote Procedure Calls (RPCs) - Web services enable clients to invoke procedures,
functions, and methods on remote objects using an XML-based protocol. Remote procedures expose input and
output parameters that a web service must support.

Supports Document Exchange - One of the key benefits of XML is its generic way of representing not only data
but also complex documents. These documents can be as simple as representing a current address, or they can be as
complex as representing an entire book.
2.4 PUBLISH-SUBSCRIBE MODEL
Pub/Sub brings the flexibility and reliability of enterprise message-oriented middleware to the cloud. At the
same time, Pub/Sub is a scalable, durable event ingestion and delivery system that serves as a foundation for
modern stream analytics pipelines. By providing many-to-many, asynchronous messaging that decouples senders
and receivers, it allows for secure and highly available communication among independently written applications.
Pub/Sub delivers low-latency, durable messaging that helps developers quickly integrate systems hosted on the
Google Cloud Platform and externally.
Publish-subscribe (pub/sub) is a messaging pattern where publishers push messages to subscribers. In
software architecture, pub/sub messaging provides instant event notifications for distributed applications, especially
those that are decoupled into smaller, independent building blocks. In laymen’s terms, pub/sub describes how two
different parts of a messaging pattern connect and communicate with each other.

How Pub/Sub Works

Figure 2.3 Pub/Sub Pattern


These are three central components to understanding pub/sub messaging pattern:
Publisher: Publishes messages to the communication infrastructure
Subscriber: Subscribes to a category of messages
Communication infrastructure (channel, classes): Receives messages from publishers and
maintains subscribers’ subscriptions.
The publisher will categorize published messages into classes where subscribers will then receive the
message. Figure 2.3 offers an illustration of this messaging pattern. Basically, a publisher has one input channel
that splits into multiple output channels, one for each subscriber. Subscribers can express interest in one or more
classes and only receive messages that are of interest.
The thing that makes pub/sub interesting is that the publisher and subscriber are unaware of each other.
The publisher sends messages to subscribers, without knowing if there are any actually there. And the subscriber
receives messages, without explicit knowledge of the publishers out there. If there are no subscribers around to
receive the topic-based information, the message is dropped.
2.4.1 Core concepts
Topic: A named resource to which messages are sent by publishers.
Subscription: A named resource representing the stream of messages from a single, specific topic, to be delivered
to the subscribing application. For more details about subscriptions and message delivery semantics, see the
Subscriber Guide.
Message: The combination of data and (optional) attributes that a publisher sends to a topic and is eventually
delivered to subscribers.
Message attribute: A key-value pair that a publisher can define for a message. For example, key
iana.org/language_tag and value en could be added to messages to mark them as readable by an English-speaking
subscriber.
Publisher-subscriber relationships
A publisher application creates and sends messages to a topic. Subscriber applications create a subscription to a
topic to receive messages from it. Communication can be one-to-many (fan-out), many-to-one (fan-in), and many-
to-many.

Figure 2.4 Pub/Sub relationship diagram


Pub/Sub message flow
The following is an overview of the components in the Pub/Sub system and how messages flow between them:

Figure 2.5 Pub/Sub relationship diagram

 publisher application creates a topic in the Pub/Sub service and sends messages to the topic. A message
contains a payload and optional attributes that describe the payload content.
 The service ensures that published messages are retained on behalf of subscriptions. A published message
is retained for a subscription until it is acknowledged by any subscriber consuming messages from that
subscription.
 Pub/Sub forwards messages from a topic to all of its subscriptions, individually.
 A subscriber receives messages either by Pub/Sub pushing them to the subscriber's chosen endpoint, or by
the subscriber pulling them from the service.
 The subscriber sends an acknowledgement to the Pub/Sub service for each received message.
 The service removes acknowledged messages from the subscription's message queue.
2.4.2 Publisher and subscriber endpoints
Figure 2.6 Pub/Sub relationship diagram
 Pull subscribers can also be any application that can make HTTPS requests to pubsub.googleapis.com.
 Push subscribers must be Web hook endpoints that can accept POST requests over HTTPS.
Common use cases
Balancing workloads in network clusters. For example, a large queue of tasks can be efficiently distributed
among multiple workers, such as Google Compute Engine instances.
Implementing asynchronous workflows. For example, an order processing application can place an order on a
topic, from which it can be processed by one or more workers.
Distributing event notifications. For example, a service that accepts user signups can send notifications whenever
a new user registers, and downstream services can subscribe to receive notifications of the event.
Refreshing distributed caches. For example, an application can publish invalidation events to update the IDs of
objects that have changed.
Logging to multiple systems. For example, a Google Compute Engine instance can write logs to the monitoring
system, to a database for later querying, and so on.
Data streaming from various processes or devices. For example, a residential sensor can stream data to backend
servers hosted in the cloud.
Reliability improvement. For example, a single-zone Compute Engine service can operate in additional zones by
subscribing to a common topic, to recover from failures in a zone or region.
Pub/Sub integrations
Figure 2.6 Pub/Sub Integrations diagram
Content-Based Pub-Sub Models
In the publish–subscribe model, filtering is used to process the selection of messages for reception and processing,
with the two most common being topic-based and content-based.

In a topic-based system, messages are published to named channels (topics). The publisher is the one who creates
these channels. Subscribers subscribe to those topics and will receive messages from them whenever they appear.

In a content-based system, messages are only delivered if they match the constraints and criteria that are defined
by the subscriber.
2.5 BASICS OF VIRTUALIZATION
The term 'Virtualization' can be used in many respect of computer. It is the process of creating a
virtual environment of something which may include hardware platforms, storage devices, OS, network
resources, etc. The cloud's virtualization mainly deals with the server virtualization.
Virtualization is the ability which allows sharing the physical instance of a single application or
resource among multiple organizations or users. This technique is done by assigning a name logically to
all those physical resources & provides a pointer to those physical resources based on demand.

Over an existing operating system & hardware, we generally create a virtual machine which and
above it we run other operating systems or applications. This is called Hardware Virtualization. The
virtual machine provides a separate environment that is logically distinct from its underlying hardware.
Here, the system or the machine is the host & virtual machine is the guest machine.
Figure - The Cloud's Virtualization
There are several approaches or ways to virtualizes cloud servers.
These are:
Grid Approach: where the processing workloads are distributed among different physical servers, and
their results are then collected as one.
OS - Level Virtualization: Here, multiple instances of an application can run in an isolated form on a
single OS
Hypervisor-based Virtualization: which is currently the most widely used technique With hypervisor's
virtualization, there are various sub-approaches to fulfill the goal to run multiple applications & other
loads on a single physical host. A technique is used to allow virtual machines to move from one host to
another without any requirement of shutting down. This technique is termed as "Live Migration". Another
technique is used to actively load balance among multiple hosts to efficiently utilize those resources
available in a virtual machine, and the concept is termed as Distributed Resource Scheduling or Dynamic
Resource Scheduling.
2.5.1 VIRTUALIZATION
Virtualization is the process of creating a virtual environment on an existing server to run your
desired program, without interfering with any of the other services provided by the server or host
platform to other users. The Virtual environment can be a single instance or a combination of many such
as operating systems, Network or Application servers, computing environments, storage devices and
other such environments.
Virtualization in Cloud Computing is making a virtual platform of server operating system and
storage devices. This will help the user by providing multiple machines at the same time it also allows
sharing a single physical instance of resource or an application to multiple users. Cloud Virtualizations
also manage the workload by transforming traditional computing and make it more scalable, economical
and efficient.
TYPES OF VIRTUALIZATION
i. Operating System Virtualization
ii. Hardware Virtualization
iii. Server Virtualization
iv. Storage Virtualization

Virtualization Architecture
Benefits for Companies
 Removal of special hardware and utility requirements
 Effective management of resources
 Increased employee productivity as a result of better accessibility
 Reduced risk of data loss, as data is backed up across multiple storage locations
Benefits for Data Centers
 Maximization of server capabilities, thereby reducing maintenance and operation costs
 Smaller footprint as a result of lower hardware, energy and manpower requirements
Access to the virtual machine and the host machine or server is facilitated by a software known
as Hypervisor. Hypervisor acts as a link between the hardware and the virtual environment and
distributes the hardware resources such as CPU usage, memory allotment between the different
virtual environments.
Hardware Virtualization
Hardware virtualization also known as hardware-assisted virtualization or server virtualization
runs on the concept that an individual independent segment of hardware or a physical server, may
be made up of multiple smaller hardware segments or servers, essentially consolidating multiple
physical servers into virtual servers that run on a single primary physical server. Each small
server can host a virtual machine, but the entire cluster of servers is treated as a single device by
any process requesting the hardware. The hardware resource allotment is done by the hypervisor.
The main advantages include increased processing power as a result of maximized hardware
utilization and application uptime.
Subtypes:
Full Virtualization – Guest software does not require any modifications since the underlying
hardware is fully simulated.
Emulation Virtualization – The virtual machine simulates the hardware and becomes
independent of it. The guest operating system does not require any modifications.
Para virtualization – the hardware is not simulated and the guest software runs their own
isolated domains.
Software Virtualization
Software Virtualization involves the creation of an operation of multiple virtual environments on
the host machine. It creates a computer system complete with hardware that lets the guest
operating system to run. For example, it lets you run Android OS on a host machine natively
using a Microsoft Windows OS, utilizing the same hardware as the host machine does.
Subtypes:
Operating System Virtualization – hosting multiple OS on the native OS
In operating system virtualization in Cloud Computing, the virtual machine software installs in
the operating system of the host rather than directly on the hardware system. The most important
use of operating system virtualization is for testing the application on different platforms or
operating system. Here, the software is present in the hardware, which allows different
applications to run.
Application Virtualization – hosting individual applications in a virtual environment separate
from the native OS.
Service Virtualization – hosting specific processes and services related to a particular
application.
Server Virtualization
In server virtualization in Cloud Computing, the software directly installs on the server system
and use for a single physical server can divide into many servers on the demand basis and
balance the load. It can be also stated that the server virtualization is masking of the server
resources which consists of number and identity. With the help of software, the server
administrator divides one physical server into multiple servers.
Memory Virtualization
Physical memory across different servers is aggregated into a single virtualized memory pool. It
provides the benefit of an enlarged contiguous working memory. You may already be familiar
with this, as some OS such as Microsoft Windows OS allows a portion of your storage disk to
serve as an extension of your RAM.
Subtypes:
Application-level control – Applications access the memory pool directly
Operating system level control – Access to the memory pool is provided through an operating
system
Storage Virtualization
Multiple physical storage devices are grouped together, which then appear as a single storage
device. This provides various advantages such as homogenization of storage across storage
devices of multiple capacity and speeds, reduced downtime, load balancing and better
optimization of performance and speed. Partitioning your hard drive into multiple partitions is an
example of this virtualization.
Subtypes:
Block Virtualization – Multiple storage devices are consolidated into one
File Virtualization – Storage system grants access to files that are stored over multiple hosts
Data Virtualization
It lets you easily manipulate data, as the data is presented as an abstract layer completely
independent of data structure and database systems. Decreases data input and formatting errors.
Network Virtualization
In network virtualization, multiple sub-networks can be created on the same physical network,
which may or may not is authorized to communicate with each other. This enables restriction of
file movement across networks and enhances security, and allows better monitoring and
identification of data usage which lets the network administrator’s scale up the network
appropriately. It also increases reliability as a disruption in one network doesn’t affect other
networks, and the diagnosis is easier.
Hardware Virtualization
Hardware virtualization in Cloud Computing, used in server platform as it is flexible to use
Virtual Machine rather than physical machines. In hardware virtualizations, virtual machine
software installs in the hardware system and then it is known as hardware virtualization. It
consists of a hypervisor which use to control and monitor the process, memory, and other
hardware resources. After the completion of hardware virtualization process, the user can install
the different operating system in it and with this platform different application can use.
Storage Virtualization
In storage virtualization in Cloud Computing, a grouping is done of physical storage which is
from multiple network storage devices this is done so it looks like a single storage device. It can
implement with the help of software applications and storage virtualization is done for the
backup and recovery process. It is a sharing of the physical storage from multiple storage
devices.
2.5.2 Subtypes:
Internal network: Enables a single system to function like a network
External network: Consolidation of multiple networks into a single one, or segregation of a
single network into multiple ones.
Desktop Virtualization
This is perhaps the most common form of virtualization for any regular IT employee. The user’s
desktop is stored on a remote server, allowing the user to access his desktop from any device or
location. Employees can work conveniently from the comfort of their home. Since the data
transfer takes place over secure protocols, any risk of data theft is minimized.
Benefits of Virtualization
Virtualizations in Cloud Computing has numerous benefits, let’s discuss them one by one:

i. Security
During the process of virtualization security is one of the important concerns. The security can be
provided with the help of firewalls, which will help to prevent unauthorized access and will keep
the data confidential. Moreover, with the help of firewall and security, the data can protect from
harmful viruses malware and other cyber threats. Encryption process also takes place with
protocols which will protect the data from other threads. So, the customer can virtualize all the
data store and can create a backup on a server in which the data can store.
ii. Flexible operations
With the help of a virtual network, the work of it professional is becoming more efficient and
agile. The network switch implement today is very easy to use, flexible and saves time. With the
help of virtualization in Cloud Computing, technical problems can solve in physical systems. It
eliminates the problem of recovering the data from crashed or corrupted devices and hence saves
time.
iii. Economical
Virtualization in Cloud Computing, save the cost for a physical system such as hardware and
servers. It stores all the data in the virtual server, which are quite economical. It reduces the
wastage, decreases the electricity bills along with the maintenance cost. Due to this, the business
can run multiple operating system and apps in a particular server.
iv. Eliminates the risk of system failure
While performing some task there are chances that the system might crash down at the wrong
time. This failure can cause damage to the company but the virtualizations help you to perform
the same task in multiple devices at the same time. The data can store in the cloud it can retrieve
anytime and with the help of any device. Moreover, there is two working server side by side
which makes the data accessible every time. Even if a server crashes with the help of the second
server the customer can access the data.
v. Flexible transfer of data
The data can transfer to the virtual server and retrieve anytime. The customers or cloud provider
don’t have to waste time finding out hard drives to find data. With the help of virtualization, it
will very easy to locate the required data and transfer them to the allotted authorities. This
transfer of data has no limit and can transfer to a long distance with the minimum charge
possible. Additional storage can also provide and the cost will be as low as possible.
Which Technology to use?
Virtualization is possible through a wide range of Technologies which are available to use and
are also OpenSource. We prefer using XEN or KVM since they provide the best virtualization
experience and performance.
 XEN
 KVM
 OpenVZ
Conclusion
With the help of Virtualization in Cloud Computing, companies can implement cloud
computing. This article proves that virtualization in Cloud computing is an important aspect in
cloud computing and can maintain and secure the data. virtualization lets you easily outsource
your hardware and eliminate any energy costs associated with its operation. Although it may not
work for everyone, however the efficiency, security and cost advantages are considerable for you
to consider employing it as part of your operations. But whatever type of virtualization you may
need, always look for service providers that provide straightforward tools to manage your
RESOURCES AND MONITOR USAGE
2.6 LEVELS OF VIRTUALIZATION IMPLEMENTATION.
a) Instruction Set Architecture Level.
b) Hardware Abstraction Level.
c) Operating System Level.
d) Library Support Level.
e) User-Application Level.
Virtualization at ISA (instruction set architecture) level
Virtualization is implemented at ISA (Instruction Set Architecture) level by transforming
physical architecture of system’s instruction set into software completely. The host machine is a
physical platform containing various components, such as process, memory, Input/output (I/O)
devices, and buses. The VMM installs the guest systems on this machine. The emulator gets the
instructions from the guest systems to process and execute. The emulator transforms those
instructions into native instruction set, which are run on host machine’s hardware. The
instructions include both the I/O-specific ones and the processor-oriented instructions. For an
emulator to be efficacious, it has to imitate all tasks that a real computer could perform.
Advantages:
It is a simple and strong method of conversion into virtual architecture. On a single
physical structure, this architecture makes simple to implement multiple systems on single
physical structure. The instructions given by the guest system is translated into instructions of the
host system .This architecture makes the host system to adjust to the changes in architecture of the
guest system. The binding between the guest system and the host is not rigid, but making it very
flexible. The infrastructure of this kind could be used for creating virtual machines on platform,
for example: X86 on any platform such as Sparc, X86, Alpha, etc.
Disadvantage: The instructions should be interpreted before being executed. And therefore the
system with ISA level of virtualization shows poor performance.
Virtualization at HAL (hardware abstraction layer) level
The virtualization at the HAL (Hardware Abstraction Layer) is the most common
technique, which is used in computers on x86 platforms that increases the efficiency of virtual
machine to handle various tasks. This architecture becomes economical and relatively for practical
use. In case, if emulator communication is required to the critical processes, the simulator
undertakes the tasks and it performs the appropriate multiplexing. The working of virtualization
technique wants catching the execution of privileged instructions by virtual machine, which
passes these instructions to VMM to be handled properly. This is necessary because of the
possible existence of multiple virtual machines, each having its own OS that could issue separate
privileged instructions. Execution of privileged instructions needed complete attention of CPU. If,
this is not managed properly by VMM, and it will raise an exception, which will result in system
crash. Trapping and forwarding the instructions to VMM, helps in managing the system suitably,
and thereby avoiding different risks. We cannot fully virtualized all platforms, with the help of
this technique. Even in X86 platform, it is detected that some privileged instructions fail without
being trapped, because their execution is not privileged appropriately. Such occurrences need
some workaround in virtualization technique, to pass the control of such execution of fault
instructions to the VMM, which would handle them properly. Code Scanning and dynamic
instruction rewriting are some of examples of the techniques to enable VMM to have control of
execution of fault privileged instructions.
Virtualization at OS (operating system) level
To overcome redundancy and time consumption issues, virtualization at the operating
system level is implemented. This kind of technique includes the sharing of both the OS and
hardware. The physical machine is being separated from logical structure (virtual system) by
separate virtualization layer, which could be compared with VMMs in functions. This layer is
built on the top of the OS, which could enable the user to access to multiple machines, which is
isolated from others and is running independently. The virtualization technique at the OS level,
keeps the environment for running of applications properly. IT keeps the OS, the user-libraries,
application-specific data structures separately. Thus, the application is not able to differentiate
between the virtual environment (VE) and the real. The main idea behind OS level virtualization
implementation is that the virtual environment rests indistinguishable from the real one. The
virtualization layer imitates the operating environment, which is recognized on the physical
machine, in order to provide a Virtual environment for application, thus by making partitions of
each virtual system, whenever needed. An orderly managed partitioning and multiplexing permits
to disseminate complete operating environments, which are separated from physical machine.
Virtualization at library level
Programming the applications in more systems needs a widespread list of Application
Program Interfaces (APIs) to be disseminated by implementing several libraries at user level.
These APIs are used to save users from miniature details involved with programming related to
the OS and facilitate the programmers to write programs more easily. At the user level library
operation, a different virtual environment is provided, in that kind of perception. This virtual
environment is created above the OS layer, which could expose a different class of binary
interfaces together. This type of virtualization is well-defined as an implementation of various set
of ABIs (Application Binary Interfaces). The APIs are being implemented with the help of the
base system and execute the function of ABI/API emulation.
Virtualization at application level
The user level programs and the operating systems are executed on applications, which
behave like real machines. The memory mapped I/O processing technique or I/O mapped
input/output processing is used to deal with hardware .Thus, an application might be taken simply
as a block of instructions, which are being executed on a machine. The Java Virtual Machine
(JVM) carried a new aspect to virtualization and it is known as application level virtualization.
The main concept after this type of virtualization is to produce a virtual machine that works
distinctly at the application level and functions in a way similar as a normal machine. We can run
our applications on those virtual machines as if we are running our applications on physical
machines. This type faces a little threat to the security of the system. However, these machines
should have an operating environment delivered to the applications in the form of a separate
environment or in the form of a hosted OS of their own.
A comparison between implementation levels of virtualization
Various implementation levels of virtualization have their own set of merits and demerits.
For example, ISA level virtualization gives high flexibility for the applications but the
performance is very poor. Likewise, the other levels such as HAL-level, OS-level, Library and
Application Level also have both negatives and positives. The OS-level and the HAL-level
virtualizations are the best on performance, but the implementations are complex and the
applications flexibility is also not very good. The Application level implementation provides
larger application isolation feature, but low flexibility, poor performance and high implementation
complexity makes it less desirable. Library level virtualizations have medium performance,
medium complexity, but poor isolation feature and low flexibility.
Requirements for virtualization design The design of virtual systems becomes indistinct
with OSs, which have functionalities comparable to virtual systems. So we need to have definite
dissimilarities in the design of virtualized systems. The virtualized design requirements are
generally viewed as follows:
Equivalence requirement
A machine which is developed through virtualization should have a logical equivalence with real
machines. The emulator should match the capabilities of physical system in terms of
computational performance. The emulator system should be able to execute all applications and
the programs are designed to execute on real machines with certain exception of timing.
Resource control requirement
A computer is a combination of resources such as memory, processors and I/O devices. These
resources must be controlled and managed effectively by VMM. The VMM must enforce isolation
between virtualized systems. The virtual machines should not face any interference.
Efficiency requirement
The virtual machines must be efficient in performance as the real system. Virtualization is done
with the purpose to get proficient software without physical hardware. Thus, the emulator should
be capable of interpreting all the instructions that might be interpreted safely in a physical system.
2.7 VIRTUALIZATION STRUCTURES
A virtualization architecture is a conceptual model specifying the arrangement and
interrelationships of the particular components involved in delivering a virtual -- rather than
physical -- version of something, such as an operating system (OS), a server, a storage device or
network resources.

Virtualization is commonly hypervisor-based. The hypervisor isolates operating systems and applications
from the underlying computer hardware so the host machine can run multiple virtual machines (VM) as
guests that share the system's physical compute resources, such as processor cycles, memory space,
network bandwidth and so on.

Type 1 hypervisors, sometimes called bare-metal hypervisors, run directly on top of the host system
hardware. Bare-metal hypervisors offer high availability and resource management. Their direct access to
system hardware enables better performance, scalability and stability. Examples of type 1 hypervisors
include Microsoft Hyper-V, Citrix XenServer and VMware ESXi.

A type 2 hypervisor, also known as a hosted hypervisor, is installed on top of the host operating system,
rather than sitting directly on top of the hardware as the type 1 hypervisor does. Each guest OS or VM
runs above the hypervisor. The convenience of a known host OS can ease system configuration and
management tasks. However, the addition of a host OS layer can potentially limit performance and
expose possible OS security flaws. Examples of type 2 hypervisors include VMware Workstation, Virtual
PC and Oracle VM VirtualBox.

The main alternative to hypervisor-based virtualization is containerization. Operating system


virtualization, for example, is a container-based kernel virtualization method. OS virtualization is similar
to partitioning. In this architecture, an operating system is adapted so it functions as multiple, discrete
systems, making it possible to deploy and run distributed applications without launching an entire VM for
each one. Instead, multiple isolated systems, called containers, are run on a single control host and all
access a single kernel.

2.8 VIRTUALIZATION STRUCTURES/TOOLS AND MECHANISMS

In general, there are three typical classes of VM architecture.

virtualization, and host-based virtualization.

The hypervisor supports hardware-level virtualization like CPU, memory, disk and network interfaces.
A modern technology that helps teams simulate dependent services that are out of your control for testing,
service virtualization is a key enabler to any test automation project.
By creating stable and predictable test environments with service virtualization, your test automation will
be reliable and accurate, but there are several different approaches and tools available on the market.
What should you look for in a service virtualization solution to make sure that you’re maximizing your
return on investment?
Lightweight Service Virtualization Tools
Free or open-source tools are great tools to start with because they help you get started in a very ad hoc
way, so you can quickly learn the benefits of service virtualization. Some examples of lightweight tools
include Traffic Parrot, Mockito, or the free version of Parasoft Virtualize. These solutions are usually
sought out by individual development teams to “try out” service virtualization, brought in for a very
specific project or reason.

While these tool are great for understanding what service virtualization is all about and helping individual
users make the case for broader adoption across teams, the downside of these lightweight tools is that it's
often challenging for those users to garner full organizational traction because the tools lack the breadth
of capability and ease-of-use required for less technical users to be successful. Additionally, while these
tools are free in the short term, they become more expensive as you start to look into maintenance and
customization.

Enterprise Service Virtualization Tools


More heavyweight tooling is available through vendor-supported tools, designed to support power users
that want daily access to create comprehensive virtual services.

You can read the most recent comparison of enterprise-scale service virtualization tools from industry
analyst Theresa Lanowitz to look at all the players -- Theresa's summary chart is shown to the left.
These enterprise-grade solutions are designed to align better with deployment and team usage in mind.
When an organization wants to implement service virtualization as a part of its continuous integration and
DevOps pipeline, enterprise solutions integrate tightly through native plug-ins into their build pipelines.
Additionally, these solutions can handle large volumes of traffic while still being performant. On the
downside of these solutions, of course, is cost — enterprise solutions and the customer support that comes
with them are far from free.
How to Choose the Best Service Virtualization Tool for You?
Most organizations won’t self-identify into a specific tooling category such as lightweight or enterprise,
but rather have specific needs that they need to make sure they get from their solution. Whether it's
specific protocol support or a way to efficiently handle lots of application change, the best way to choose
a service virtualization solution that’s right for you is to look at the different features and capabilities that
you may require and ensure that your tooling choice has those capabilities.

As opposed to trying to focus on generic pros and cons of different solutions, I always try and stress to
clients the importance of identifying what you uniquely need for your team and your projects. It's also
important to identify future areas of capabilities that you may not be ready for now, but will just be sitting
there in your service virtualization solution for when your test maturity and user adoption grows. So what
are those key capabilities?

2.8.1 Key Capabilities of Service

Virtualization Ease-Of-Use and Core

Capabilities:
 Ability to use the tool without writing scripts
 Ability to rapidly create virtual services before the real service is available
 Intelligent response correlation
 Data-driven responses
 Ability to re-use services
 A custom extensibility framework
 Support for authentication and security
 Configurable performance environments
 Support for clustering/scaling

Capabilities for optimized workflows:

 Record and playback


 AI-powered asset creation
 Test data management / generation
 Data re-use
 Service templates
 Message routing
 Fail-over to a live system
 Stateful behavior emulation
Automation Capabilities:
 CI integration
 Build system plugins
 Command-line execution
 Open APIs for DevOps integration
 Cloud support (EC2, Azure)
Management and Maintenance Support:
 Governance
 Environment management
 Monitoring
 A process for managing change
 On-premise and browser-based access
Supported Technologies:
 REST API virtualization
 SOAP API virtualization
 Asynchronous API messaging
 MQ/JMS virtualization
 IoT and microservice virtualization
 Database virtualization
 Webpage virtualization
 File transfer virtualization
 Mainframe and fixed-length
 EDI virtualization
 Fix, Swift, etc.
We see best Service Virtualization Tools. Some of the popular Service Virtualization Tools are as
follows:

1. IBM Rational Test Virtualization Server


2. Micro Focus Data Simulation Software
3. Broadcom Service Virtualization
4. Smartbear ServiceVPro
5. Tricentis Tosca Test-Driven Service Virtualization
IBM RATIONAL TEST VIRTUALIZATION SERVER

IBM Rational Test Virtualization Server software enables early and frequent testing in the development
lifecycle. It removes dependencies by virtualizing part or all of an application or database so software
testing teams don’t have to wait for the availability of those resources to begin. Combined with
Integration Tester, you can achieve continuous software testing.
Features:
 Virtualize services, software and applications.

 Update, reuse and share virtualized environments


 Get support for middleware technologies
 Benefit from integration with other tools
 Flexible pricing and deployment
MICRO FOCUS DATA SIMULATION SOFTWARE
Application simulation software to keep you on schedule and focused on service quality—not service
constraints.
Features:
 Easily create simulations of application behavior.
 Model the functional network and performance behavior of your virtual services by using step-by-
step wizards.
 Modify data, network, and performance models easily.
 Manage from anywhere with support for user roles, profiles, and access control lists.
 Virtualize what matters: create simulations incorporating a wide array of message formats,
transport types, and even ERP application protocols to test everything from the latest web service
to a legacy system.
 Easily configure and use virtual services in your daily testing practices. Service Virtualization
features fully integrate into LoadRunner, Performance Center, ALM, and Unified Functional
Testing.
2.8.2 BROADCOM SERVICE VIRTUALIZATION (FORMERLY CA SERVICE
VIRTUALIZATION)
Service Virtualization (formerly CA Service Virtualization) simulates unavailable systems across
the software development lifecycle (SDLC), allowing developers, testers, integration, and performance
teams to work in parallel for faster delivery and higher application quality and reliability. You’ll be able
to accelerate software release cycle times, increase quality and reduce software testing environment
infrastructure costs.
Features:
 Accelerate time-to-market by enabling parallel software development, testing and validation.
 Test earlier in the SDLC where it is less expensive and disruptive to solve application defects.
 Reduce demand for development environments or pay-per-use service
charges. Smartbear ServiceVPro
Smartbear ServiceVPro is a Service API Mocking and Service Virtualization Tool. API virtualization
in ServiceV Pro helps you deliver great APIs on time and under budget, and does so for a fraction of the
cost typically associated with traditional enterprise service virtualization suites. Virtualize REST &
SOAP APIs, TCP, JDBC, and more to accelerate development and testing cycles.
Features:
 Create virtual services from an API definition, record and use an existing service, or start from
scratch to to generate a virtual service.
 Create, configure, and deploy your mock on local machines, or deploy inside a public or private
cloud to share. Analyze traffic & performance of each virtual service from a web UI.
 Generate dynamic mock data instantly
 Simulate Network Performance & Server-Side Behavior
 Real-time Service Recording & Switching
TRICENTIS TOSCA TEST-DRIVEN SERVICE VIRTUALIZATION
Tricentis Test-Driven Service Virtualization simulates the behavior of dependent systems that are difficult
to access or configure so you can continuously test without delays.
Features:
 Reuse Tests as Service Virtualization Scenarios
 More Risk Coverage With Test-Driven Service Virtualization
 Effortless Message Verification and Analysis
 Create and Maintain Virtual Services with Ease
WireMock:
WireMock is a simulator for HTTP-based APIs. Some might consider it a service virtualization tool or
a mock server. It enables you to stay productive when an API you depend on doesn’t exist or isn’t
complete. It supports testing of edge cases and failure modes that the real API won’t reliably produce.
And because it’s fast it can reduce your build time from hours down to minutes.

Features:
 Flexible Deployment: Run WireMock from within your Java application, JUnit test, Servlet
container or as a standalone process.
 Powerful Request Matching: Match request URLs, methods, headers cookies and bodies using a
wide variety of strategies. First class support for JSON and XML.
 Record and Playback: Get up and running quickly by capturing traffic to and from an existing
API.
Conclusion:

 We have included most of the tools we have come across. If we missed any tool, please share in
the comments and we will include in our list of Service Virtualization Tools. You may also want
to check out our ultimate list of API Testing Tools that contains Popular API Testing Tools.
2.9 WHAT IS CPU VIRTUALIZATION

CPU virtualization involves a single CPU acting as if it were multiple separate CPUs. The most
common reason for doing this is to run multiple different operating systems on one machine. CPU
virtualization emphasizes performance and runs directly on the available CPUs whenever possible. The
underlying physical resources are used whenever possible and the virtualization layer runs instructions
only as needed to make virtual machines operate as if they were running directly on a physical machine.
When many virtual machines are running on an ESXi host, those virtual machines might compete for
CPU resources. When CPU contention occurs, the ESXi host time-slices the physical processors across
all virtual machines so each virtual machine runs as if it has its specified number of virtual processors.

To support virtualization, processors such as the x86 employ a special running mode and instructions,
known as hardware-assisted virtualization. In this way, the VMM and guest OS run in different modes
and all sensitive instructions of the guest OS and its applications are trapped in the VMM. To save
processor states, mode switching is completed by hardware. For the x86 architecture, Intel and AMD
have proprietary technologies for hardware-assisted virtualization.

2.9.1 HARDWARE SUPPORT FOR VIRTUALIZATION

Modern operating systems and processors permit multiple processes to run simultaneously. If there is no
protection mechanism in a processor, all instructions from different processes will access the hardware
directly and cause a system crash. Therefore, all processors have at least two modes, user mode and
supervisor mode, to ensure controlled access of critical hardware. Instructions running in supervisor mode
are called privileged instructions. Other instructions are unprivileged instructions. In a virtualized
environment, it is more difficult to make OSes and applications run correctly because there are more
layers in the machine stack. Example 3.4 discusses Intel’s hardware support approach.

At the time of this writing, many hardware virtualization products were available. The VMware
Workstation is a VM software suite for x86 and x86-64 computers. This software suite allows users to set
up multiple x86 and x86-64 virtual computers and to use one or more of these VMs simultaneously with
the host operating system. The VMware Workstation assumes the host-based virtualization. Xen is a
hypervisor for use in IA-32, x86-64, Itanium, and PowerPC 970 hosts. Actually, Xen modifies Linux as
the lowest and most privileged layer, or a hypervisor.

One or more guest OS can run on top of the hypervisor. KVM (Kernel-based Virtual Machine) is a Linux
kernel virtualization infrastructure. KVM can support hardware-assisted virtualization and
paravirtualization by using the Intel VT-x or AMD-v and VirtIO framework, respectively. The VirtIO
framework includes a paravirtual Ethernet card, a disk I/O controller, a balloon device for adjusting guest
memory usage, and a VGA graphics interface using VMware drivers.

Example 3.4 Hardware Support for Virtualization in the Intel x86 Processor

Since software-based virtualization techniques are complicated and incur performance overhead, Intel
provides a hardware-assist technique to make virtualization easy and improve performance. Figure 3.10
provides an overview of Intel’s full virtualization techniques. For processor virtualization, Intel offers the
VT-x or VT-i technique. VT-x adds a privileged mode (VMX Root Mode) and some instructions to
processors. This enhancement traps all sensitive instructions in the VMM automatically. For memory
virtualization, Intel offers the EPT, which translates the virtual address to the machine’s physical
addresses to improve performance. For I/O virtualization, Intel implements VT-d and VT-c to support
this.

Since software-based virtualization techniques are complicated and incur performance overhead, Intel
provides a hardware-assist technique to make virtualization easy and improve performance. Figure 3.10
provides an overview of Intel’s full virtualization techniques. For processor virtualization, Intel offers the
VT-x or VT-i technique. VT-x adds a privileged mode (VMX Root Mode) and some instructions to
processors. This enhancement traps all sensitive instructions in the VMM automatically. For memory
virtualization, Intel offers the EPT, which translates the virtual address to the machine’s physical
addresses to improve performance. For I/O virtualization, Intel implements VT-d and VT-c to support
this.

2.9.2 CPU VIRTUALIZATION


A VM is a duplicate of an existing computer system in which a majority of the VM instructions are
executed on the host processor in native mode. Thus, unprivileged instructions of VMs run directly on the
host machine for higher efficiency. Other critical instructions should be handled carefully for correctness
and stability. The critical instructions are divided into three categories: privileged instructions, control-
sensitive instructions, and behavior-sensitive instructions. Privileged instructions execute in a privileged
mode and will be trapped if executed outside this mode. Control-sensitive instructions attempt to change
the configuration of resources used. Behavior-sensitive instructions have different behaviors depending
on the configuration of resources, including the load and store operations over the virtual memory.

A CPU architecture is virtualizable if it supports the ability to run the VM’s privileged and unprivileged
instructions in the CPU’s user mode while the VMM runs in supervisor mode. When the privileged
instructions including control- and behavior-sensitive instructions of a VM are exe-cuted, they are trapped
in the VMM. In this case, the VMM acts as a unified mediator for hardware access from different VMs to
guarantee the correctness and stability of the whole system. However, not all CPU architectures are
virtualizable. RISC CPU architectures can be naturally virtualized because all control- and behavior-
sensitive instructions are privileged instructions. On the contrary, x86 CPU architectures are not primarily
designed to support virtualization. This is because about 10 sensitive instructions, such as SGDT and
SMSW, are not privileged instructions. When these instruc-tions execute in virtualization, they cannot be
trapped in the VMM.

On a native UNIX-like system, a system call triggers the 80h interrupt and passes control to the OS
kernel. The interrupt handler in the kernel is then invoked to process the system call. On a para-
virtualization system such as Xen, a system call in the guest OS first triggers the 80h interrupt nor-mally.
Almost at the same time, the 82h interrupt in the hypervisor is triggered. Incidentally, control is passed on
to the hypervisor as well. When the hypervisor completes its task for the guest OS system call, it passes
control back to the guest OS kernel. Certainly, the guest OS kernel may also invoke the hypercall while
it’s running. Although paravirtualization of a CPU lets unmodified applications run in the VM, it causes a
Small Performance Penalty.

2.9.3 HARDWARE-ASSISTED CPU VIRTUALIZATION

This technique attempts to simplify virtualization because full or paravirtualization is complicated. Intel
and AMD add an additional mode called privilege mode level (some people call it Ring-1) to x86
processors. Therefore, operating systems can still run at Ring 0 and the hypervisor can run at Ring -1. All
the privileged and sensitive instructions are trapped in the hypervisor automatically. This technique
removes the difficulty of implementing binary translation of full virtualization. It also lets the operating
system run in VMs without modification.
Example: Intel Hardware-Assisted CPU Virtualization

Although x86 processors are not virtualizable primarily, great effort is taken to virtualize them. They are
used widely in comparing RISC processors that the bulk of x86-based legacy systems cannot discard
easily. Virtuali-zation of x86 processors is detailed in the following sections. Intel’s VT-x technology is
an example of hardware-assisted virtualization, as shown in Figure 3.11. Intel calls the privilege level of
x86 processors the VMX Root Mode. In order to control the start and stop of a VM and allocate a
memory page to maintain the CPU state for VMs, a set of additional instructions is added. At the time of
this writing, Xen, VMware, and the Microsoft Virtual PC all implement their hypervisors by using the
VT-x technology.

Generally, hardware-assisted virtualization should have high efficiency. However, since the transition
from the hypervisor to the guest OS incurs high overhead switches between processor modes, it
sometimes cannot outperform binary translation. Hence, virtualization systems such as VMware now use
a hybrid approach, in which a few tasks are offloaded to the hardware but the rest is still done in software.
In addition, para-virtualization and hardware-assisted virtualization can be combined to improve the
performance further.

3.10 MEMORY VIRTUALIZATION

Virtual memory virtualization is similar to the virtual memory support provided by modern operating
systems. In a traditional execution environment, the operating system maintains mappings of virtual
memory to machine memory using page tables, which is a one-stage mapping from virtual memory to
machine memory. All modern x86 CPUs include a memory management unit (MMU) and a translation
lookaside buffer (TLB) to optimize virtual memory performance. However, in a virtual execution
environment, virtual memory virtualization involves sharing the physical system memory in RAM and
dynamically allocating it to the physical memory of the VMs.

That means a two-stage mapping process should be maintained by the guest OS and the VMM,
respectively: virtual memory to physical memory and physical memory to machine memory.
Furthermore, MMU virtualization should be supported, which is transparent to the guest OS. The guest
OS continues to control the mapping of virtual addresses to the physical memory addresses of VMs. But
the guest OS cannot directly access the actual machine memory. The VMM is responsible for mapping
the guest physical memory to the actual machine memory. Figure shows the two-level memory mapping
procedure Since each page table of the guest OSes has a separate page table in the VMM corresponding
to it, the VMM page table is called the shadow page table. Nested page tables add another layer of
indirection to virtual memory. The MMU already handles virtual-to-physical translations as defined by
the OS. Then the physical memory addresses are translated to machine addresses using another set of
page tables defined by the hypervisor. Since modern operating systems maintain a set of page tables for
every process, the shadow page tables will get flooded. Consequently, the perfor-mance overhead and
cost of memory will be very high.

VMware uses shadow page tables to perform virtual-memory-to-machine-memory address translation.


Processors use TLB hardware to map the virtual memory directly to the machine memory to avoid the
two levels of translation on every access. When the guest OS changes the virtual memory to a physical
memory mapping, the VMM updates the shadow page tables to enable a direct lookup. The AMD
Barcelona processor has featured hardware-assisted memory virtualization since 2007. It provides
hardware assistance to the two-stage address translation in a virtual execution environment by using a
technology called nested paging.

Example: Extended Page Table by Intel for Memory Virtualization

Since the efficiency of the software shadow page table technique was too low, Intel developed a
hardware-based EPT technique to improve it, as illustrated in Figure 3.13. In addition, Intel offers a
Virtual Processor ID (VPID) to improve use of the TLB. Therefore, the performance of memory
virtualization is greatly improved. In Figure 3.13, the page tables of the guest OS and EPT are all four-
level.

When a virtual address needs to be translated, the CPU will first look for the L4 page table pointed to by
Guest CR3. Since the address in Guest CR3 is a physical address in the guest OS, the CPU needs to
convert the Guest CR3 GPA to the host physical address (HPA) using EPT. In this procedure, the CPU
will check the EPT TLB to see if the translation is there. If there is no required translation in the EPT
TLB, the CPU will look for it in the EPT. If the CPU cannot find the translation in the EPT, an EPT
violation exception will be raised. When the GPA of the L4 page table is obtained, the CPU will calculate
the GPA of the L3 page table by using the GVA and the content of the L4 page table. If the entry
corresponding to the GVA in the L4

page table is a page fault, the CPU will generate a page fault interrupt and will let the guest OS kernel
handle the interrupt. When the PGA of the L3 page table is obtained, the CPU will look for the EPT to get
the HPA of the L3 page table, as described earlier. To get the HPA corresponding to a GVA, the CPU
needs to look for the EPT five times, and each time, the memory needs to be accessed four times. There-
fore, there are 20 memory accesses in the worst case, which is still very slow. To overcome this short-
coming, Intel increased the size of the EPT TLB to decrease the number of memory accesses.

4. I/O VIRTUALIZATION

I/O virtualization involves managing the routing of I/O requests between virtual devices and the shared
physical hardware. At the time of this writing, there are three ways to implement I/O virtualization:
full device emulation, para-virtualization, and direct I/O. Full device emulation is the first approach for
I/O virtualization. Generally, this approach emulates well-known, real-world devices.

All the functions of a device or bus infrastructure, such as device enumeration, identification, interrupts,
and DMA, are replicated in software. This software is located in the VMM and acts as a virtual device.
The I/O access requests of the guest OS are trapped in the VMM which interacts with the I/O devices.
The full device emulation approach is shown in Figure.

A single hardware device can be shared by multiple VMs that run concurrently. However, software
emulation runs much slower than the hardware it emulates [10,15]. The para-virtualization method of I/O
virtualization is typically used in Xen. It is also known as the split driver model consisting of a frontend
driver and a backend driver. The frontend driver is running in Domain U and the backend dri-ver is
running in Domain 0. They interact with each other via a block of shared memory. The frontend driver
manages the I/O requests of the guest OSes and the backend driver is responsible for managing the real
I/O devices and multiplexing the I/O data of different VMs. Although para-I/O-virtualization achieves
better device performance than full device emulation, it comes with a higher CPU overhead.

Direct I/O virtualization lets the VM access devices directly. It can achieve close-to-native performance
without high CPU costs. However, current direct I/O virtualization implementations focus on networking
for mainframes. There are a lot of challenges for commodity hardware devices. For example, when a
physical device is reclaimed (required by workload migration) for later reassign-ment, it may have been
set to an arbitrary state (e.g., DMA to some arbitrary memory locations) that can function incorrectly or
even crash the whole system. Since software-based I/O virtualization requires a very high overhead of
device emulation, hardware-assisted I/O virtualization is critical. Intel VT-d supports the remapping of
I/O DMA transfers and device-generated interrupts. The architecture of VT-d provides the flexibility to
support multiple usage models that may run unmodified, special-purpose, or “virtualization-aware” guest
OSes.

Another way to help I/O virtualization is via self-virtualized I/O (SV-IO) [47]. The key idea of SV-IO is
to harness the rich resources of a multicore processor. All tasks associated with virtualizing an I/O device
are encapsulated in SV-IO. It provides virtual devices and an associated access API to VMs and a
management API to the VMM. SV-IO defines one virtual interface (VIF) for every kind of virtua-lized
I/O device, such as virtual network interfaces, virtual block devices (disk), virtual camera devices, and
others. The guest OS interacts with the VIFs via VIF device drivers. Each VIF consists of two mes-sage
queues. One is for outgoing messages to the devices and the other is for incoming messages from the
devices. In addition, each VIF has a unique ID for identifying it in SV-IO.

The VMware Workstation runs as an application. It leverages the I/O device support in guest OSes, host
OSes, and VMM to implement I/O virtualization. The application portion (VMApp) uses a driver loaded
into the host operating system (VMDriver) to establish the privileged VMM, which runs directly on the
hardware. A given physical processor is executed in either the host world or the VMM world, with the
VMDriver facilitating the transfer of control between the two worlds. The VMware Workstation employs
full device emulation to implement I/O virtualization. Figure 3.15 shows the functional blocks used in
sending and receiving packets via the emulated virtual NIC.

Example VMware Workstation for I/O Virtualization


The virtual NIC models an AMD Lance Am79C970A controller. The device driver for a Lance controller
in the guest OS initiates packet transmissions by reading and writing a sequence of virtual I/O ports; each
read or write switches back to the VMApp to emulate the Lance port accesses. When the last OUT
instruc-tion of the sequence is encountered, the Lance emulator calls a normal write() to the VMNet
driver. The VMNet driver then passes the packet onto the network via a host NIC and then the VMApp
switches back to the VMM. The switch raises a virtual interrupt to notify the guest device driver that the
packet was sent. Packet receives occur in reverse.

4.2 VIRTUALIZATION IN MULTI-CORE PROCESSORS


Virtualizing a multi-core processor is relatively more complicated than virtualizing a uni-core processor.
Though multicore processors are claimed to have higher performance by integrating multiple processor
cores in a single chip, muti-core virtualiuzation has raised some new challenges to computer architects,
compiler constructors, system designers, and application programmers. There are mainly two difficulties:
Application programs must be parallelized to use all cores fully, and software must explicitly assign tasks
to the cores, which is a very complex problem.

Concerning the first challenge, new programming models, languages, and libraries are needed to make
parallel programming easier. The second challenge has spawned research involving scheduling
algorithms and resource management policies. Yet these efforts cannot balance well among performance,
complexity, and other issues. What is worse, as technology scales, a new challenge called dynamic
heterogeneity is emerging to mix the fat CPU core and thin GPU cores on the same chip, which further
complicates the multi-core or many-core resource management. The dynamic heterogeneity of hardware
infrastructure mainly comes from less reliable transistors and increased complexity in using the
transistors.

4.2.1 Physical versus Virtual Processor Cores

Wells, proposed a multicore virtualization method to allow hardware designers to get an abstraction of
the low-level details of the processor cores. This technique alleviates the burden and inefficiency of
managing hardware resources by software. It is located under the ISA and remains unmodified by the
operating system or VMM (hypervisor). Figure 3.16 illustrates the technique of a software-visible VCPU
moving from one core to another and temporarily suspending execution of a VCPU when there are no
appropriate cores on which it can run.

4.3 VIRTUAL HIERARCHY

The emerging many-core chip multiprocessors (CMPs) provides a new computing landscape. Instead of
supporting time-sharing jobs on one or a few cores, we can use the abundant cores in a space-sharing,
where single-threaded or multithreaded jobs are simultaneously assigned to separate groups of cores for
long time intervals. This idea was originally suggested by Marty and Hill [39]. To optimize for space-
shared workloads, they propose using virtual hierarchies to overlay a coherence and caching hierarchy
onto a physical processor. Unlike a fixed physical hierarchy, a virtual hierarchy can adapt to fit how the
work is space shared for improved performance and performance isolation.
Today’s many-core CMPs use a physical hierarchy of two or more cache levels that statically determine
the cache allocation and mapping. A virtual hierarchy is a cache hierarchy that can adapt to fit the
workload or mix of workloads . The hierarchy’s first level locates data blocks close to the cores needing
them for faster access, establishes a shared-cache domain, and establishes a point of coherence for faster
communication. When a miss leaves a tile, it first attempts to locate the block (or sharers) within the first
level. The first level can also pro-vide isolation between independent workloads. A miss at the L1 cache
can invoke the L2 access.

The idea is illustrated in Figure Space sharing is applied to assign three workloads to three clusters of
virtual cores: namely VM0 and VM3 for database workload, VM1 and VM2 for web server workload,
and VM4–VM7 for middleware workload. The basic assumption is that each workload runs in its own
VM. However, space sharing applies equally within a single operating system. Statically distributing the
directory among tiles can do much better, provided operating sys-tems or hypervisors carefully map
virtual pages to physical frames. Marty and Hill suggested a two-level virtual coherence and caching
hierarchy that harmonizes with the assignment of tiles to the virtual clusters of VMs.

Figure illustrates a logical view of such a virtual cluster hierarchy in two levels. Each VM operates in a
isolated fashion at the first level. This will minimize both miss access time and performance interference
with other workloads or VMs. Moreover, the shared resources of cache capacity, inter-connect links, and
miss handling are mostly isolated between VMs. The second level maintains a globally shared memory.
This facilitates dynamically repartitioning resources without costly cache flushes. Furthermore,
maintaining globally shared memory minimizes changes to existing system software and allows
virtualization features such as content-based page sharing. A virtual hierarchy adapts to space-shared
workloads like multiprogramming and server consolidation. Figure 3.17 shows a case study focused on
consolidated server workloads in a tiled architecture. This many-core mapping scheme can also optimize
for space-shared multiprogrammed workloads in a single-OS environment.
4.6 VIRTUALIZATION SUPPORT AND DISASTER RECOVERY.

Virtualization provides flexibility in disaster recovery. When servers are virtualized, they are
containerized into VMs, independent from the underlying hardware. Therefore, an organization does not
need the same physical servers at the primary site as at its secondary disaster recovery site.

Other benefits of virtual disaster recovery include ease, efficiency and speed. Virtualized platforms
typically provide high availability in the event of a failure. Virtualization helps meet recovery time
objectives (RTOs) and recovery point objectives (RPOs), as replication is done as frequently as needed,
especially for critical systems. DR planning and failover testing is also simpler with virtualized workloads
than with a physical setup, making disaster recovery a more attainable process for organizations that may
not have the funds or resources for physical DR.

In addition, consolidating physical servers with virtualization saves money because the virtualized
workloads require less power, floor space and maintenance. However, replication can get expensive,
depending on how frequently it's done.
Adding VMs is an easy task, so organizations need to watch out for VM sprawl. VMs operating without
the knowledge of DR staff may fall through the cracks when it comes time for recovery. Sprawl is
particularly dangerous at larger companies where communication may not be as strong as at a smaller
organization with fewer employees. All organizations should have strict protocols for deploying virtual
machines.

Virtual disaster recovery planning and testing

Virtual infrastructures can be complex. In a recovery situation, that complexity can be an issue, so it's
important to have a comprehensive DR plan.

A virtual disaster recovery plan has many similarities to a traditional DR plan. An organization should:

 Decide which systems and data are the most critical for recovery, and document them.

 Get management support for the DR plan

 Complete a risk assessment and business impact analysis to outline possible risks and their
potential impacts.

 Document steps needed for recovery.

 Define RTOs and RPOs.

 Test the plan.

As with a traditional DR setup, you should clearly define who is involved in planning and testing, and the
role of each staff member. That extends to an actual recovery event, as staff should be ready for their
tasks during an unplanned incident.

The organization should review and test its virtual disaster recovery plan on a regular basis, especially
after any changes have been made to the production environment. Any physical systems should also be
tested. While it may be complicated to test virtual and physical systems at the same time, it's important
for the sake of business continuity.

Virtual disaster recovery vs. physical disaster recovery

Virtual disaster recovery, though simpler than traditional DR, should retain the same standard goals of
meeting RTOs and RPOs, and ensuring a business can continue to function in the event of an unplanned
incident.
The traditional disaster recovery process of duplicating a data center in another location is often
expensive, complicated and time-consuming. While a physical disaster recovery process typically
involves multiple steps, virtual disaster recovery can be as simple as a click of a button for failover.

Rebuilding systems in the virtual world is not necessary because they already exist in another location,
thanks to replication. However, it's important to monitor backup systems. It's easy to "set it and forget it"
in the virtual world, which is not advised and is not as much of a problem with physical systems.

Like with physical disaster recovery, the virtual disaster recovery plan should be tested. Virtual disaster
recovery, however, provides testing capabilities not available in a physical setup. It is easier to do a DR
test in the virtual world without affecting production systems, as virtualization enables an organization to
bring up servers in an isolated network for testing. In addition, deleting and recreating DR servers is
much simpler than in the physical world.

Virtual disaster recovery is possible with physical servers through physical-to-virtual backup. This
process creates virtual backups of physical systems for recovery purposes.

For the most comprehensive data protection, experts advise having an offline copy of data. While virtual
disaster recovery vendors provide capabilities to protect against cyberattacks such as ransomware,
physical tape storage is the one true offline option that guarantees data is safe during an attack.

Trends and future directions

With ransom ware now a constant threat to business, virtual disaster recovery vendors are including
capabilities specific to recovering from an attack. Through point-in-time copies, an organization can roll
back its data recovery to just before the attack hit.

The convergence of backup and DR is a major trend in data protection. One example is instant
recovery also called recovery in place -- which allows a backup snapshot of a VM to run temporarily on
secondary storage following a disaster. This process significantly reduces RTOs.

Hyper-convergence, which combines storage, compute and virtualization, is another major trend. As a
result, hyper-converged backup and recovery has taken off, with newer vendors such as Cohesity and
Rubrik leading the charge. Their cloud-based hyper-converged backup and recovery systems are
accessible to smaller organizations, thanks to lower cost and complexity.

These newer vendors are pushing the more established players to do more with their storage and recovery
capabilities.
Major vendors

There are several data protection vendors that offer comprehensive virtual backup and disaster recovery.
Some key players include:

 Acronis Disaster Recovery Service protects virtual and physical systems.

 Nakivo Backup & Replication provides data protection for VMware, Microsoft Hyper-V and
AWS Elastic Compute Cloud.

 SolarWinds Backup features recovery to VMware, Microsoft Hyper-V, Microsoft Azure and
Amazon VMs.

 Veeam Software started out only protecting VMs but has since grown into one of the leading data
protection vendors, offering backup and recovery for physical and cloud workloads as well.

 VMware, a pioneer in virtualization, provides DR through such products as Site Recovery


Manager and vSphere Replication.

How Virtualization Benefit Disaster Recovery

Most of us are aware of the importance of backing up data, but there’s a lot more to disaster
recovery than backup alone. It’s important to recognize the fact that disaster recovery and backup are not
interchangeable. Rather, backup is a critical element of disaster recovery. However, when a system
failure occurs, it’s not just your files that you need to recover – you’ll also need to restore a complete
working environment.

Virtualization technology has come a long way in recent years to completely change the way
organizations implement their disaster-recovery strategies. Consider, for a moment, how you would deal
with a system failure in the old days: You’d have to get a new server or repair the existing one before
manually reinstalling all your software, including the operating system and any applications you use for
work. Unfortunately, disaster recovery didn’t stop there. Without virtualization, you’d then need to
manually restore all settings and access credentials to what they were before.

In the old days, a more efficient disaster-recovery strategy would involve redundant servers that
would contain a full system backup that would be ready to go as soon as you needed it. However, that
also meant increased hardware and maintenance costs from having to double up on everything.

How Does Virtualization Simplify Disaster Recovery?

When it comes to backup and disaster recovery, virtualization changes everything by


consolidating the entire server environment, along with all the workstations and other systems into a
single virtual machine. A virtual machine is effectively a single file that contains everything, including
your operating systems, programs, settings, and files. At the same time, you’ll be able to use your virtual
machine the same way you use a local desktop.

Virtualization greatly simplifies disaster recovery, since it does not require rebuilding a physical
server environment. Instead, you can move your virtual machines over to another system and access them
as normal. Factor in cloud computing, and you have the complete flexibility of not having to depend on
in-house hardware at all. Instead, all you’ll need is a device with internet access and a remote desktop
application to get straight back to work as though nothing happened.

What Is the Best Way to Approach Server Virtualization?

Almost any kind of computer system can be virtualized, including workstations, data storage,
networks, and even applications. A virtual machine image defines the hardware and software parameters
of the system, which means you can move it between physical machines that are powerful enough to run
it, including those accessed through the internet.

Matters can get more complicated when you have many servers and other systems to virtualize.
For example, you might have different virtual machines for running your apps and databases, yet they all
depend on one another to function properly. By using a tightly integrated set of systems, you’ll be able to
simplify matters, though it’s usually better to keep your total number of virtual machines to a minimum to
simplify recovery processes.

How Can the Cloud Help?

Although virtualization is carried out on a CPU level by a powerful server system, it’s cheaper
and easier for smaller businesses to move their core operations to the cloud. That way, you don’t need to
worry about maintaining your own hardware and additional redundant server systems for backup and
disaster recovery purposes.

Instead, everything will be hosted in a state-of-the-art remote data center complete with redundant
systems, uninterruptible power supplies, and the physical, technical and administrative security measures
needed to keep your data safe. That way, your team will be able to access everything they need to do their
jobs by connecting to a remote, virtualized desktop from almost any device with an internet connection.
Recover to any hardware

By using a virtualized environment you don’t have to worry about having completely redundant
hardware. Instead you can use almost any x86 platform as a backup solution, this allows you to save
money by repurposing existing hardware and also gives your company more agility when it comes to
hardware failure as almost any virtual server can be restarted on different hardware.

Backup and restore full images

By having your system completely virtualized each of your server’s files are encapsulated in a single
image file. An image is basically a single file that contains all of server’s files, including system files,
programs, and data; all in one location. By having these images it makes managing your systems easy and
backups become as simple as duplicating the image file and restores are simplified to simply mounting
the image on a new server.

Run other workloads on standby hardware

A key benefit to virtualization is reducing the hardware needed by utilizing your existing hardware more
efficiently. This frees up systems that can now be used to run other tasks or be used as a hardware
redundancy. This mixed with features like VMware’s High Availability, which restarts a virtual machine
on a different server when the original hardware fails, or for a more robust disaster recovery plan you can
use Fault Tolerance, which keeps both servers in sync with each other leading to zero downtime if a
server should fail.

Easily copy system data to recovery site

Having an offsite backup is a huge advantage if something were to happen to your specific location,
whether it be a natural disaster, a power outage, or a water pipe bursting, it is nice to have all your
information at an offsite location. Virtualization makes this easy by easily copying each virtual machines
image to the offsite location and with the easy customizable automation process, it doesn’t add any more
strain or man hours to the IT department.

Benefits of cloud-based disaster recovery

Online Tech cloud-based disaster recovery With the growing popularity of the cloud, more and more
companies are turning to it for their production sites. But what about cloud-based disaster recovery? Does
it offer the same kind of benefits? As disaster recovery can be complex, time-consuming and very
expensive, it pays to plan ahead to figure out just what your business needs. Putting your disaster
recovery plan in the cloud can help alleviate some of the fears that come with setting it up.

Here are four big benefits to cloud-based disaster recovery:

Faster recovery

The big difference between cloud-based disaster recovery and traditional recovery practices is the
difference in RPO and RTO. With cloud-based DR, your site has the capability to recover from a warm
site right away, drastically reducing your RPO and RTO times from days, or even weeks, to hours.
Whereas traditional disaster recovery involved booting up from a cold site, cloud recovery is different.
Thanks to virtualization, the entire server, including the operating system, applications, patches and data
are encapsulated into a single software bundle or virtual server. This virtual server can be copied or
backed up to an offsite data center and spun up on a virtual host in a matter of minutes in the event of a
disaster. For organizations that can’t afford to wait after a disaster, a cloud-based solution could mean the
difference between staying in business or closing its doors.

Financial savings

Cloud storage is very cost effective, as you can pay for storing only what you need. Without capital
expenses to worry about, you can use “pay-as-you-go” model systems that help keep your TCO low. You
also don’t have to store a ton of backup tapes that could take days or to access in an emergency. When it’s
already expensive to implement a DR plan, having your recovery site in the cloud can help make it more
affordable.

Scalability

Putting your disaster recovery site in the cloud allows for a lot of flexibility, so increasing or decreasing
your storage capacity as your business demands it is easier than with traditional backup. Rather than
having to commit to a specific amount of storage for a certain time and worry whether you’re meeting or
exceeding those requirements, you can scale your storage as needed.

Security

Despite any myths to the contrary, having a cloud-based disaster recovery plan is quite secure with the
right provider. Cloud service providers can argue they offer just as much, if not more, security features
than traditional infrastructure. But when it comes to disaster recovery for your business, you can’t afford
to take chances. Make sure you shop around and ask the tough questions when it comes to backing up
your production site.

Virtual desktops

In most offices, employees are still dependent on desktop computers. Their workstations grant
them access to everything from customer relationship software to company databases and when these
computers go down, there’s no way to get work done. Virtualized desktops allow users to access their
files and even computing power from across the internet.

Instead of logging on to an operating system stored on a hard drive just a few inches away from
their keyboard, employees can take advantage of server hardware to store their files across a network.
With barebones computers, employees can log in to these virtual desktops either in the office or from
home. Floods, fires and other disasters won’t prevent your team from working because they can continue
remotely.

Virtual applications

Devoting a portion of your server’s hardware and software resources to virtual desktops requires a
fair amount of computing power. If the majority of your employees’ time is spent working with just one
or two pieces of software, you can virtualized just those applications.

If a hurricane destroyed your office and the hardware inside it, virtualized applications can be restored in
minutes. They don’t need to be installed on the machines that use them, and as long as you have backups
these applications can be streamed to employee computers just like a cloud-based application.

Virtual servers

If you use virtual desktops or applications, it makes perfect sense to use virtual servers as well.
With a little help from a managed services provider, your servers can be configured to automatically
create virtual backups. Beyond preventing data loss, these backups also make it possible to restore server
functionality with offsite restorations.

Virtualized servers are incredibly useful when clients need access to a website or database that
you maintain in the office. For example, if you provide background checks on tenants to rental property
owners through your website, an unexpected power outage won’t cause an interruption of service. Your
virtualization solution will boot up a backup server away from the power outage and your customers will
be none the wiser.

You might also like