0% found this document useful (0 votes)
39 views44 pages

Notes 3

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 44

3.

Chapter 3
Cloud Technologies

Web services: SOAP and REST, SOAP VS REST, Virtualization: Introduction to virtualization, Types of Virtualization, Pros and
cons of virtualization, Virtualization applications in enterprises: Server virtualization, Desktop and Application Virtualization, Storage
and Network Virtualization.

A service is an application that is hosted in the backend ready to serve data to whatever client
requests it. Web services framework is an XML-based distributed object/service/component system. Intended
to support machine-to-machine interactions over the network.
A web service is any piece of software that makes it available over the internet and uses a standardized
XML messaging system. XML is used to encode all communications to a web service. For example, a client
invokes a web service by sending an XML message, and then waits for a corresponding XML response.
Because all communication is in XML, web services are not tied to any one operating system or programming
language--Java can talk with Perl; Windows applications can talk with UNIX applications.
Web Services are self-contained, modular, distributed, dynamic applications that can be described,
published, located, or invoked over the network to create products, processes, and supply chains. These
applications can be local, distributed, or Web-based. Web services are built on top of open standards such as
TCP/IP, HTTP, Java, HTML, and XML.
A web service is a collection of open protocols and standards used for exchanging data between
applications or systems. Software applications written in various programming languages and running on
various platforms can use web services to exchange data over computer networks like the Internet in a manner
similar to inter-process communication on a single computer. This interoperability (e.g., between Java and
Python, or Windows and Linux applications) is due to the use of open standards.

Components of Web Services:


The basic Web services platform is XML + HTTP. All the standard Web Services works using following
components
1. SOAP (Simple Object Access Protocol)
2. UDDI (Universal Description, Discovery and Integration)
3. WSDL (Web Services Description Language)
Here are the benefits of using Web Services
3.2

Exposing the existing function on to network:


A Web service is a unit of managed code that can be remotely invoked using HTTP, that is, it can be activated
using HTTP requests. So, Web Services allows you to expose the functionality of your existing code over the
network. Once it is exposed on the network, other application can use the functionality of your program.
Connecting Different Applications ie Interoperability:
Web Services allows different applications to talk to each other and share data and services among themselves.
Other applications can also use the services of the web services. For example VB or .NET application can talk
to java web services and vice versa. So, Web services is used to make the application platform and technology
independent.
Standardized Protocol:
Web Services uses standardized industry standard protocol for the communication. All the four layers (Service
Transport, XML Messaging, Service Description and Service Discovery layers) uses the well defined protocol
in the Web Services protocol stack. This standardization of protocol stack gives the business many advantages
like wide range of choices, reduction in the cost due to competition and increase in the quality.
Low Cost of communication:
Web Services uses SOAP over HTTP protocol for the communication, so you can use your existing low cost
internet for implementing Web Services. This solution is much less costly compared to proprietary solutions
like EDI/B2B. Beside SOAP over HTTP, Web Services can also be implemented on other reliable transport
mechanisms like FTP etc.

SOAP(Simple Object Access Protocol)


 SOAP is an XML-based protocol for exchanging information between computers.
 SOAP is for communication between applications
 SOAP is a format for sending messages
 SOAP is designed to communicate via Internet
 SOAP is platform & language independent
 SOAP is simple and extensible
 SOAP will be developed as a W3C standard
A SOAP message is an ordinary XML document containing the following elements.
 Envelope: ( Mandatory )
Defines the start and the end of the message.
3.3

 Header:(Optional)
Contains any optional attributes of the message used in processing the message, either at an intermediary point
or at the ultimate end point.
 Body: ( Mandatory )
Contains the XML data comprising the message being sent.
 Fault:(Optional)
An optional Fault element that provides information about errors that occurred while processing the message
A SOAP Message Structure

<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope"
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<SOAP-ENV:Header>
...</SOAP-ENV:Header>
<SOAP-ENV:Body>
... <SOAP-ENV:Fault>
... </SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP_ENV:Envelope>

The SOAP envelope indicates the start and the end of the message so that the receiver knows when an entire
message has been received. The SOAP envelope solves the problem of knowing when you're done receiving a
message and are ready to process it. The SOAP envelope is therefore basic ally a packaging mechanism
SOAP Envelope element can be explained as:
 Every SOAP message has a root Envelope element.
 Envelope element is mandatory part of SOAP Message.
 Every Envelope element must contain exactly one Body element.
 The envelope changes when SOAP versions change.
 The SOAP envelope is specified using the ENV namespace prefix and the Envelope element.
 A v1.1-compliant SOAP processor will generate a fault when receiving a message containing the v1.2
envelope namespace.
 A v1.2- compliant SOAP processor generates a Version Mismatch fault if it receives a message that
does not include the v1.2 envelope namespace.
3.4

SOAP Header element can be explained as:


 Header elements are optional part of SOAP messages.
 Header elements can occur multiple times.
 The header is encoded as the first immediate child element of the SOAP envelope.
The SOAP body is a mandatory element which contains the application-defined XML data being exchanged in
the SOAP message. The body must be contained within the envelope and must follow any headers that might be
defined for the message. The body is defined as a child element of the envelope, and the semantics for the body
are defined in the associated SOAP schema.
The body contains mandatory information intended for the ultimate receiver of the message. For example:

<?xml version="1.0"?>
<SOAP-ENV:Envelope
........<SOAP-ENV:Body>
<m:GetQuotation xmlns:m="http://www.tp.com/Quotation">
<m:Item>Computers</m:Item>
</m:GetQuotation>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The example above requests the quotation of computer sets. Note that the m:GetQuotation and the Item
elements above are application-specific elements. They are not a part of the SOAP standard.
Here is the response of above query:

<?xml version="1.0"?>
<SOAP-ENV:Envelope
........<SOAP-ENV:Body>
<m:GetQuotationResponse xmlns:m="http://www.tp.com/Quotation">
<m:Quotation>This is Qutation</m:Quotation>
</m:GetQuotationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Normally, the application also defines a schema to contain semantics associated with the request and response
elements. The Quotation service might be implemented using an EJB running in an application server; if so, the
SOAP processor would be responsible for mapping the body information as parameters into and out of the EJB
implementation of the GetQuotationResponse service.
3.5

- WSDL
 WSDL is an XML-based language for describing Web services and how to access them.
 WSDL stands for Web Services Description Language
 WSDL is an XML based protocol for information exchange in decentralized and distributed
environments.
 WSDL is the standard format for describing a web service.
 WSDL definition describes how to access a web service and what operations it will perform.
 WSDL is a language for describing how to interface with XML-based services.
 WSDL is an integral part of UDDI, an XML-based worldwide business registry.
 WSDL is the language that UDDI uses.
 WSDL was developed jointly by Microsoft and IBM.
 WSDL is pronounced as 'wiz-dull' and spelled out as 'W-S-D-L'
 Three major elements of WSDL that can be defined separately and they are:
1. Types
2. Operations
3. Binding

The WSDL Document Structure

A WSDL document describes a web service using these major elements:

Element Description

<types> A container for data type definitions used by the web service

<message> A typed definition of the data being communicated

<portType> A set of operations supported by one or more endpoints

<binding> A protocol and data format specification for a particular port type

The main structure of a WSDL document looks like this:

<definitions>
<types>
data type definitions........
</types>

<message>
3.6

definition of the data being communicated....


</message>

<portType>
set of operations......
</portType>

<binding>
protocol and data format specification....
</binding>
</definitions>

A WSDL document can also contain other elements, like extension elements, and a service element that makes
it possible to group together the definitions of several web services in one single WSDL document.

WSDL Ports

The <portType> element is the most important WSDL element. It describes a web service, the operations that
can be performed, and the messages that are involved. The <portType> element can be compared to a function
library (or a module, or a class) in a traditional programming language.

WSDL Messages

The <message> element defines the data elements of an operation. Each message can consist of one or more
parts. The parts can be compared to the parameters of a function call in a traditional programming language.

WSDL Types

The <types> element defines the data types that are used by the web service. For maximum platform neutrality,
WSDL uses XML Schema syntax to define data types.

WSDL Bindings

The <binding> element defines the data format and protocol for each port type.

WSDL Example

This is a simplified fraction of a WSDL document:

<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
3.7

<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>

 In this example the <portType> element defines "glossaryTerms" as the name of a port, and "getTerm"
as the name of an operation.
 The "getTerm" operation has an input message called "getTermRequest" and an output message called
"getTermResponse".
 The <message> elements define the parts of each message and the associated data types.
 Compared to traditional programming, glossaryTerms is a function library, "getTerm" is a function with
"getTermRequest" as the input parameter, and getTermResponse as the return parameter.

Binding to SOAP
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation soapAction="http://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>

 The binding element has two attributes - name and type.


 The name attribute (you can use any name you want) defines the name of the binding, and the type
attribute points to the port for the binding, in this case the "glossaryTerms" port.
 The soap:binding element has two attributes - style and transport.
 The style attribute can be "rpc" or "document". In this case we use document. The transport attribute
defines the SOAP protocol to use. In this case we use HTTP.
 The operation element defines each operation that the portType exposes.
 For each operation the corresponding SOAP action has to be defined. You must also specify how the
input and output are encoded. In this case we use "literal".

- UDDI
 UDDI is an XML-based standard for describing, publishing, and finding Web services.
 UDDI stands for Universal Description, Discovery and Integration.
 UDDI is a specification for a distributed registry of Web services.
 UDDI is platform independent, open framework.
 UDDI can communicate via SOAP, CORBA, Java RMI Protocol.
3.8

 UDDI uses WSDL to describe interfaces to web services.


 UDDI is seen with SOAP and WSDL as one of the three foundation standards of web services.
 UDDI is an open industry initiative enabling businesses to discover each other and define how they
interact over the Internet.
SOAP/WSDL web services evolved from the need to programmatically interconnect web-based applications.
As a result SOAP/WSDL web services are essentially a form of remote procedure calls over HTTP, while also
including support for nested structures (objects) in a manner similar to earlier extensions of RPC, such as
CORBA. The elements of a SOAP/WSDL web service are illustrated in Figure 7.1, using as an example the
service provided by Google for searching the web. A client application can invoke this web service by sending a
SOAP request in XML form, as illustrated at the bottom left of the figure, to the designated service URL. The
specifications of the service, including the service URL and other parameters, are made available by the service
provider (in this case Google) as another XML file, in WSDL1 format, as illustrated in the rest of the figure.

The WSDL file specifies the service endpoint, i.e. the URL that responds to SOAP requests to this web service,
as shown in the bottom right of the figure. Above this are a number of port types, within which are listed the
operations (functions, methods) that are included in this service, along with their input and output parameter
types; for example the operation doGoogleSearch has input and output messages doGoogleSearch and
3.9

doGoogleSearchResponse respectively. The types of these messages are also specified in detail in the WSDL
file, as XML schemas. For example in the case of a doGoogleSearch operation, the input messages are
composed of simple types (i.e. strings, etc.), whereas the output, i.e. search result, is a complex type comprising
of an array of results whose schema is also specified in the WSDL (not shown in the figure). Finally, the WSDL
binding links these abstract set of operations with concrete transport protocols and serialization formats.
SOAP documents, i.e. the XML messages exchanged over HTTP, comprise of a body (as shown in
bottom left of the figure) as well as an optional header that is an extensible container where message layer
information can be encoded for a variety of purposes such as security, quality of service, transactions, etc. A
number of WS-* specifications have been developed to incorporate additional features into SOAP web services
that extend and utilize the header container: For example, WS-Security for user authentication, WS-
Transactions to handle atomic transactions spanning multiple service requests across multiple service providers,
WS-Resource Framework enabling access to resource state behind a web service (even though each web service
is inherently stateless) and WS-Addressing to allow service endpoints to be additionally addressed at the
messaging level so that service requests can be routed on non-HTTP connections (such as message queues)
behind an HTTP service facade, or even for purely internal application integration.
The origin of the rather complex structure used by the SOAP/WSDL approach can be traced
back to the RPC (remote procedure call) standard and its later object oriented variants, such as CORBA. In the
original RPC protocol (also called SUN RPC), the client-server interface would be specified by a <..>.x file,
from which client and server stubs in C would be generated, along with libraries to handle complex data
structures and data serialization across machine boundaries. In CORBA, the .x files became IDL descriptions
using a similar overall structure; Java RMI (remote method invocation) also had a similar structure using a
common Java interface class to link client and server code. SOAP/WSDL takes the same approach for enabling
RPC over HTTP, with WSDL playing the role of .x files, IDLs or interface classes.

RESTFUL SERVICE:
 REST stands for Representational State Transfer
 First introduced in 2000 by Roy Fielding at the University of California.
 REST uses HTTP methods explicitly i.e. the interaction between the client and services will happen
through HTTP protocol.
 Expose directory structure like URI‘s.
 Transfer XML, Java Script Object Notation (JSON) or both.
 Uses XML while creating Java or .Net application and JSON is used while developing Web Application.
 Service should be stateless i.e., once the request is completed the request is erased or deleted.
3.10

 There are plenty of reasons why REST has become more popular than SOAP
 Simpler than SOAP.
 Can Send XML, JSON.
@Stateless
@Path("com.seller.vishal.seller")
public class SellerFacadeREST {
public SellerFacadeREST() {
super(Seller.class);
}
@POST
@Override
@Consumes({"application/xml", "application/json"})
public void create(Seller entity) {
super.create(entity);
}
@PUT
@Path("{id}")
@Consumes({"application/xml", "application/json"})
public void edit(@PathParam("id") Long id, Seller entity) {
super.edit(entity); }
@DELETE
@Path("{id}")
public void remove(@PathParam("id") Long id) {
super.remove(super.find(id));
}
@GET
@Path("{from}/{to}")
@Produces({"application/xml", "application/json"})
public List<Seller> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
return super.findRange(new int[]{from, to});
}
Identifies the URL path that a java class will respond to.
 @path annotation can route to a class or route to a specific method.
 @GET: most used, read-only and public access method.
 @POST: used to insert/add data OR submitting data like Login pages. With HTTPs you can protect the
data.
 @PUT: used mainly for updating data but can be used for inserting/adding data
 @DELETE: used to delete data
 @HEAD: used to return meta-data of the resource
@produces specify the media type that a method will produce and send back to the client. When you
@produces at the class level, its treated as a default. When used with methods, it becomes a require to access
3.11

that method. You can also define more than one for a specific method. It does do some encoding but nothing
extensive.
@consumes :
 Basically tells your application to expect data to be sent in the body of the HTTP message. You will
need to define what type of data sent up. Again this another way to limit what HTTP message can access
specific methods. You can define your own or used the predefine Media Type.
JSON:
 Java Script Object Notation, is a text-based open standard designed for human-readable data
interchange.
 It is derived from the JavaScript scripting language for representing simple data structures and associate
arrays, called objects.
 It uses Key/ Value pairs to represent data

REST web services


Representational State Transfer (REST) was originally introduced as an architectural style for large-scale
systems based on distributed resources, one of whose embodiments is the hypertext driven HTML-based web
itself. The use of REST as a paradigm for service-based interaction between application programs began
gaining popularity at about the same time as, and probably in reaction to, the SOAP/WSDL methodology that
was being actively propagated by many industry players at the time, such as IBM and Microsoft. REST web
services are merely HTTP requests to URIs,2 using exactly the four methods GET, POST, PUT and DELETE
allowed by the HTTP protocol. Each URI identifies a resource, such as a record in a database. As an example,
consider accessing a customer record with the REST service http://x.y.com/customer/11998, which returns the
record in XML format. In case the record contains links (foreign keys) to related records, such as the customer‘s
accounts or address, links to these are embedded in the returned XML, such as http://x.y.com/account/334433.
Alternatively, these links might be directly accessed via a REST service http://x.y.com /customer/ 11998/
accounts. The client application merely accesses the URIs for the resources being managed in this ‗RESTful‘
manner using simple HTTP requests to retrieve data. Further, the same mechanism an allow manipulation of
these resources as well; so a customer record may be retrieved using a GET method, modified by the client
program, and sent back using a PUT or a POST request to be updated on the server. Figure 7.2 illustrates REST
web services with the above example as well as two real-life examples using Yahoo! and Google, both of whom
also provide a REST web service interface to their core search engine. Notice that the URLs of these search
services include parameters (appid and query for Yahoo!, ver and q for Google); strictly speaking these service
definitions deviate from the ‗strong‘ REST paradigm, where resources are defined by pure URIs alone.
3.12

In principle, such purity could have easily been maintained: Note that version is part of the URI in the Yahoo!
service while it is a parameter in the case of Google, which need not have been the case; the input URL would
simply need to have been processed differently. In practice however, the use of parameters in REST services
has now become widespread. Note that while the Yahoo! service returns XML, the Google Service returns
JSON (JavaScript Serialized Object Notation). A JSON string is simply a piece of JavaScript code that defines a
‗map‘3 data structure in that language. The advantage of using JSON is that XML parsing is avoided; instead,
the response string is simply evaluated by client-side JavaScript code (e.g. res=eval(response)). In the case of
our Google service, this would allow the results to be accessed directly from JavaScript, so that
res["responseData"]["results"][0]["url"] returns the first result URL, etc. As far as REST is concerned, this is
perfectly legal since in theory any allowable internet media types, such as HTML, XML, text, pdf or doc, can be
exchanged via a REST service. Finally, we mention in passing that client and server authentication is easily
handled in REST just as with normal HTML web pages by using SSL (i.e. HTTPS).
3.13

SOAP VERSUS REST


REST

 The RESTful Web services are completely stateless. This can be tested by restarting the server and
checking if the interactions are able to survive.
 Restful services provide a good caching infrastructure over HTTP GET method (for most servers). This
can improve the performance, if the data the Web service returns is not altered frequently and not dynamic in
nature.
 The service producer and service consumer need to have a common understanding of the context as well
as the content being passed along as there is no standard set of rules to describe the REST Web services
interface.
 REST is particularly useful for restricted-profile devices such as mobile and PDAs for which the
overhead of additional parameters like headers and other SOAP elements are less.
 REST services are easy to integrate with the existing websites and are exposed with XML so the HTML
pages can consume the same with ease. There is hardly any need to refactor the existing website architecture.
This makes developers more productive and comfortable as they will not have to rewrite everything from
scratch and just need to add on the existing functionality.
 REST-based implementation is simple compared to SOAP.
SOAP

 The Web Services Description Language (WSDL) contains and describes the common set of rules to
define the messages, bindings, operations and location of the Web service. WSDL is a sort of formal contract to
define the interface that the Web service offers.
 SOAP requires less plumbing code than REST services design, (i.e., transactions, security, coordination,
addressing, trust, etc.) Most real-world applications are not simple and support complex operations, which
require conversational state and contextual information to be maintained. With the SOAP approach, developers
need not worry about writing this plumbing code into the application layer themselves.
 SOAP Web services (such as JAX-WS) are useful in handling asynchronous processing and invocation.
 SOAP supports several protocols and technologies, including WSDL, XSDs, SOAP, WS-Addressing
3.14

Explain how web services can be used for implementing cloud solutions

The next generation of distributed computing has arrived. A Web service is a unit of managed code that can be
remotely invoked using HTTP, that is, it can be activated using HTTP requests.
Historically speaking, remote access to binary units required platform-specific and sometimes language-specific
protocols. For example, DCOM clients access remote COM types using tightly coupled RPC calls. CORBA
requires the use of tightly coupled protocol referred to as Internet Inter-ORB Protocol (IIOP), to activate remote
types. Enterprise JavaBeans (EJBs) requires a Remote Method Invocation (RMI) Protocol and by and large a
3.15

specific language (Java). Thus each of these remote invocation architectures needs proprietary protocols, which
typically require a tight connection to the remote source.
One can access Web services using nothing but HTTP. Of all the protocols in existence today, HTTP is the one
specific wire protocol that all platforms tend to agree on. Thus , using Web services, a Web service developer
can use any language he wish and a Web service consumer can use standard HTTP to invoke methods a Web
service provides. The bottom line is that we have true language and platform integration . Simple Object Access
Protocol (SOAP) and XML are also two key pieces of the Web services architecture.
What is a Web Service
Web services constitute a distributed computer architecture made up of many different computers trying to
communicate over the network to form one system. They consist of a set of standards that allow developers to
implement distributed applications - using radically different tools provided by many different vendors - to
create applications that use a combination of software modules called from systems in disparate departments or
from other companies.
A Web service contains some number of classes, interfaces, enumerations and structures that provide
black box functionality to remote clients. Web services typically define business objects that execute a unit of
work (e.g., perform a calculation, read a data source, etc.) for the consumer and wait for the next request. Web
service consumer does not necessarily need to be a browser-based client. Console-baed and Windows Forms-
based clients can consume a Web service. In each case, the client indirectly interacts with the Web service
through an intervening proxy. The proxy looks and feels like the real remote type and exposes the same set of
methods. Under the hood, the proxy code really forwards the request to the Web service using standard HTTP
or optionally SOAP messages.
Web Service Standards
Web services are registered and announced using the following services and protocols. Many of these and other
standards are being worked out by the UDDI project, a group of industry leaders that is spearheading the early
creation and design efforts.
Universal Description, Discovery, and Integration (UDDI) is a protocol for describing available Web
services components. This standard allows businesses to register with an Internet directory that will help them
advertise their services, so companies can find one another and conduct transactions over the Web. This
registration and lookup task is done using XML and HTTP(S)-based mechanisms.
Simple Object Access Protocol (SOAP) is a protocol for initiating conversations with a UDDI Service.
SOAP makes object access simple by allowing applications to invoke object methods or functions, residing on
remote servers. A SOAP application creates a request block in XML, supplying the data needed by the remote
method as well as the location of the remote object itself.
3.16

Web Service Description Language (WSDL), the proposed standard for how a Web service is described,
is an XML-based service IDL (Interface Definitition Language) that defines the service interface and its
implementation characteristics. WSDL is referenced by UDDI entries and describes the SOAP messages that
define a particular Web service.
ebXML (e-business XML) defines core components, business processes, registry and repository,
messaging services, trading partner agreements, and security.

Implementing Web Services


Here comes a brief step-by-step on how a Web service is implemented.

ice provider registers the service in a UDDI registry and/or ebXML registry/repository.

registries.

UDDI and/or ebXML

Web Services Technologies and Tools


There are a number of mechanisms for constructing Web services. Microsoft has come out with a new object-
oriented language C# as the development language for Web services and .NET framework. Microsoft has an
exciting tool called Visual Studio .NET in this regard. The back end database can be Microsoft SQL Server
2000 in Windows 2000 Professional.
Sun Microsystems has its own set of technologies and tools for facilitating Web services development.
Java Servlets, Java Server Pages (JSPs), Enterprise JavaBeans (EJB) architecture and other Java 2 Enterprise
Edition (J2EE) technologies play a very critical role in developing Web services. There are a number of tools
for developing Web services. They are Forte Java IDE, Oracle JDeveloper, and WebGain Studio.
3.17

Sun Microsystems has taken an initiative called Sun ONE (Open Network Environment) and is planning
to push Java forward as a platform for Web services. It is developing Java APIs for XML-based remote
procedure calls and for looking up services in XML registries - two more JAX family APIs: JAX/RPC (Java
API for XML Remote Procedure Calls) and JAXR (Java API for XML Registries). These will wrap up
implementations of Web services standards, such as SOAP and UDDI. IBM also for its part has already
developed a suite of early-access tools for Web services development. They are Web Services Toolkit (WSTK),
WSDL Toolkit, and Web Services Development Environment (WSDE).
Apache Axis is an implementation of the SOAP ("Simple Object Access Protocol") submission to W3C.
From the draft W3C specification: SOAP is a lightweight protocol for exchanging structured information in a
decentralized, distributed environment. It is an XML based protocol that consists of three parts: an envelope that
defines a framework for describing what is in a message and how to process it, a set of encoding rules for
expressing instances of application-defined datatypes, and a convention for representing remote procedure calls
and responses.
Apache Axis is an Open Source SOAP server and client. SOAP is a mechanism for inter-application
communication between systems written in arbitrary languages, across the Internet. SOAP usually exchanges
messages over HTTP: the client POSTs a SOAP request, and receives either an HTTP success code and a
SOAP response or an HTTP error code. Open Source means that you get the source, but that there is no formal
support organization to help you when things go wrong.
Conclusion
For the last few years, XML has enabled heterogeneous computing environments to share information over the
Web. It now offers a simplified means by which to share process as well. From a technical perspective, the
advent of Web services is not a revolution in distributed computing. It is instead a natural evolution of XML
application from structured representation of information to structured representation of inter-application
messaging. Prior to the advent of Web services, enterprise application integration (EAI) was very difficult due
to differences in programming languages and middleware used within organizations. This led to the situation
where interoperability was cumbersome and painful. With the arrival of Web services, any application can be
integrated as long as it is Internet-enabled. It is difficult to avoid the popularity and hype that is surrounding
Web services. Each software vendor has some initiative concerning Web services and there is always great
speculation about the future of the market for them. Whichever way it turns out, Web service architectures
provide a very different way of thinking about software development. From client- server to n-tier systems, to
distributed computing, Web service applications represent the culmination of each of these architectures in
combination with the Internet.
3.18

VIRTUALIZATION

Virtualization, in computing, refers to the act of creating a virtual (rather than actual) version of
something, including but not limited to a virtual computer hardware platform, operating system (OS), storage
device, or computer network resources.

Hardware virtualization
Hardware virtualization or platform virtualization refers to the creation of a virtual machine that acts
like a real computer with an operating system. Software executed on these virtual machines is separated from
the underlying hardware resources. For example, a computer that is running Microsoft Windows may host a
virtual machine that looks like a computer with the Ubuntu Linux operating system; Ubuntu-based software can
be run on the virtual machine.
In hardware virtualization, the host machine is the actual machine on which the virtualization takes
place, and the guest machine is the virtual machine. The words host and guest are used to distinguish the
software that runs on the physical machine from the software that runs on the virtual machine. The software or
firmware that creates a virtual machine on the host hardware is called a hypervisor or Virtual Machine
Manager(VMM).

Different types of hardware virtualization include:


1) Full virtualization: Almost complete simulation of the actual hardware to allow software, which typically
consists of a guest operating system, to run unmodified. (VMWare‘s ESXi)
2) Partial virtualization: Some but not the entire target environment is simulated. Some guest programs,
therefore, may need modifications to run in this virtual environment. (Java JVM)
3) Paravirtualization: A hardware environment is not simulated; however, the guest programs are executed in
their own isolated domains, as if they are running on a separate system. Guest programs need to be specifically
modified to run in this environment. (VMWare‘s Workstation)

FULL VIRTUALIZATION
Full virtualization provides a sufficient emulation of the underlying platform that a guest operating system and
application set can run unmodified and unaware that their platform is being virtualized. While from a purist
perspective, this is ideal, it comes with cost. Providing a full emulation of the platform means that all platform
devices are emulated with enough detail to permit the guest OS to manipulate them at their native level (such as
register-level interfaces). As you can imagine, that cost can be quite high, given that the OS manipulates the
3.19

device as it does typically, and the hypervisor implements emulation at that level while bridging to a physical
device on the server (which may be a different device).

Figure 3: Full Virtualization of the Underlying Platform.


While full virtualization comes with a performance penalty, the technique permits running unmodified
operating system, which is ideal, particularly when source is unavailable such as with proprietary operating
systems. Solutions that implement full virtualization today include VMware's family of hypervisors, Xen and
XenServer from Citrix, VirtualBox from Oracle, QEMU from Fabrice Bellard, and KVM from RedHat (among
others). With full virtualization, noncritical instructions run directly on the hardware while critical instructions
are discovered and replaced with traps into the VMM to be emulated by software. This is because binary
translation can incur a large performance overhead. Noncritical instructions do not control hardware or threaten
the security of the system, but critical instructions do. Therefore, running noncritical instructions on hardware
not only can promote efficiency, but also can ensure system security.
This approach was implemented by VMware and many other software companies. The VMM scans the
instruction stream and identifies the privileged, control- and behavior-sensitive instructions. When these
instructions are identified, they‘re trapped into the VMM, which emulates the behavior of these instructions.
The method used in this emulation is called binary translation. Therefore, full virtualization combines binary
translation and direct execution. The guest OS is completely decoupled from the underlying hardware.
Consequently, the guest OS is unaware that it‘s being virtualized.
The performance of full virtualization may not be ideal because it involves binary translation, which is
rather time-consuming. Full virtualization of I/O-intensive applications is a challenge. Binary translation
employs a code cache to store translated hot instructions to improve performance, but it increases the cost of
memory usage.

Para Virtualization
To realize the full performance benefit of platform virtualization, another technique was created, called
para-virtualization. The fundamental issue with full virtualization is the emulation of devices within the
hypervisor. A solution to this problem is to make the guest operating system aware that it's being virtualized.
3.20

With this knowledge, the guest OS can short circuit its drivers to minimize the overhead of communicating with
physical devices.
In this way, the guest OS drivers and hypervisor drivers integrate with one another to efficiently enable
and share physical device access. Low-level emulation of devices is removed, replaced with cooperating guest
and hypervisor drivers. The downside of para-virtualization is that the guest must be modified to integrate
hypervisor awareness, but this includes a tremendous upside in overall performance.

Figure 4: Para-Virtualization to Improve Performance.


The Xen hypervisor popularized this approach, introducing the term para-virtualization. Today, most
virtualization solutions support para-virtualization as the norm. Using VMware hypervisors, you'll find the
introduction of guest tools (which dynamically modify the guest OS). Using the Microsoft Hyper-V hypervisor,
you'll find the term "enlightened," which is just another term for para-virtualization (the guest is enlightened to
the fact that it's being virtualized). Solutions that implement para-virtualization include RedHat's Xen,
VMware's family of hypervisors, KVM, and others.
Para-virtualization implies an interface between the guest OS drivers and the hypervisor. This is an
obvious area for standardization, but unfortunately one does not exist. Within the Linux world, the Virtio
(Virtualization I/O) project seeks to standardize interface over the spectrum of possible devices, but this is
currently used solely in Linux. Para-virtualization needs to modify the guest OS. A para-virtualized VM
provides special APIs requiring substantial OS modifications in user applications. Performance degradation is a
critical issue of a virtualized system. No one wants to use a VM if it‘s much slower than using a physical
machine. You can insert the virtualization layer at different positions in a machine software stack. However,
para-virtualization attempts to reduce the virtualization overhead, and thus improve performance by modifying
only the guest OS kernel. When guest OSes are para-virtualized, they‘re assisted by an intelligent compiler to
replace the non-virtualizable OS instructions with hypercalls.
The traditional x86 processor offers four instruction execution rings: Rings 0, 1, 2 and 3. The lower the
ring number, the higher the privilege of instruction being executed. The OS is responsible for managing the
hardware and the privileged instructions to execute at Ring 0, while user-level applications run at Ring 3. The
3.21

best example of para-virtualization is kernel-based VM (KVM). When the x86 processor is virtualized, a
virtualization layer is inserted between the hardware and the OS. According to the x86 ring definition, the
virtualization layer should also be installed at Ring 0. Different instructions at Ring 0 might cause some
problems. However, when the guest OS kernel is modified for virtualization, it can no longer directly run on the
hardware. Although para-virtualization reduces overhead, it incurs other problems. First, its compatibility and
portability may be in doubt, because it must support the unmodified OS as well. Second, the cost of maintaining
para-virtualized OSes is high, because they could require deep OS kernel modifications. Finally, the
performance advantage of para-virtualization varies greatly due to workload variations. Compared with full
virtualization, para-virtualization is relatively easy and more practical. The main problem in full virtualization is
its low performance in binary translation. Speeding up binary translation is difficult. Therefore, many
virtualization products employ the para-virtualization architecture.
KVM is a hardware-assisted para-virtualization tool, which improves performance and supports
unmodified guest OSes such as Windows, Linux, Solaris and other Unix variants. This is a Linux para-
virtualization system—part of the Linux version 2.6.20 kernel. The existing Linux kernel carries out memory
management and scheduling activities. KVM does the rest, which makes it simpler than the hypervisor that
controls the entire machine.
Unlike the full virtualization architecture that intercepts and emulates privileged and sensitive
instructions at run time, para-virtualization handles these instructions at compile time. The guest OS kernel is
modified to replace the privileged and sensitive instructions with hypercalls to the hypervisor or VMM. Xen is
one example of such para-virtualization architecture. The privileged instructions are implemented by hypercalls
to the hypervisor. After replacing the instructions with hypercalls, the modified guest OS emulates the behavior
of the original guest OS. On a Unix system, a system call involves an interrupt or service routine. The
hypercalls apply a dedicated service routine in Xen.

What is virtualization technology? How this helps in building cloud solution for an enterprise.
Virtualization is software technology which uses a physical resource such as a server and divides it up into
virtual resources called virtual machines (VM's). Virtualization allows users to consolidate physical resources,
simplify deployment and administration, and reduce power and cooling requirements. While virtualization
technology is most popular in the server world, virtualization technology is also being used in data storage such
as Storage Area Networks, and inside of operating systems such as Windows Server 2008 with Hyper-V.
Virtualization Advantages:
3.22

-V

Any discussion of cloud computing typically begins with virtualization. Virtualization is critical to cloud
computing because it simplifies the delivery of services by providing a platform for optimizing complex IT
resources in a scalable manner, which is what makes cloud computing so cost effective.
Virtualization can be applied very broadly to just about everything you can imagine including memory,
networks, storage, hardware, operating systems, and applications. Virtualization has three characteristics that
make it ideal for cloud computing:

(OSes) in a single physical system.


is protected from crashes and viruses in the
other machines.

What makes virtualization so important for the cloud is that it decouples the software from the
hardware.
Encapsulation: Encapsulation can protect each application so that it doesn‘t interfere with other applications.
Using encapsulation, a virtual machine can be represented (and even stored) as a single file, making it easy to
identify and present to other applications.
To understand how virtualization helps with cloud computing, you must understand its many forms. In
essence, in all cases, a resource actually emulates or imitates another resource. Here are some examples:
Virtual memory: Disks have a lot more space than memory. PCs can use virtual memory to borrow extra
memory from the hard disk. Although virtual disks are slower than real memory, if managed right, the
substitution works surprisingly well.
Software: There is virtualization software available that can emulate an entire computer, which means 1
computer can perform as though it were actually 20 computers. Using this kind of software you might be able to
move from a data center with thousands of servers to one that supports as few as a couple of hundred. To
manage the various aspects of virtualization in cloud computing most companies use hypervisors. Because in
3.23

cloud computing you need to support many different operating environments, the hypervisor becomes an ideal
delivery mechanism by allowing you to show the same application on lots of different systems. Because
hypervisors can load multiple operating systems, they are a very practical way of getting things virtualized
quickly and efficiently.

11. List out the advantages and disadvantages of virtualization techniques used in cloud applications
Types of Virtualization
● Desktop Virtualization
● Server Virtualization
● Virtual Desktop Infrastructure (VDI)
● Application Virtualization
Some common advantages offered by virtualization include:

applications (when larger/faster hardware is used for virtualization than was used for standalone servers)

themselves and their associated monitors and peripherals) and, by extension, the power and cooling costs for
those datacenters.

completely avoiding) downtime on production systems


saster
recovery

change control flexibility and minimizes disruption to production systems


nvironments can simplify support and reduce the likelihood
of "application collisions" or incompatibilities created when several applications are hosted on one system
3.24

COMMON DISADVANTAGES
Some disadvantages associated with virtualization include the following:

workloads less predictable (especially when larger/faster hardware is not deployed for the virtualization
deployment)
traction layers may introduce potential security risks
- making
it easier to lose significant volumes of data
mis-managed the results are more far reaching and resource
bottlenecks escalate at a more rapid pace
-
virtualized system to facilitate diagnosis (especially where specialized hardware drivers are involved).

DESKTOP VIRTUALIZATION
Desktop virtualization is the concept of separating the logical desktop from the physical machine. One form of
desktop virtualization, virtual desktop infrastructure (VDI), can be thought as a more advanced form of
hardware virtualization. Rather than interacting with a host computer directly via a keyboard, mouse, and
monitor, the user interacts with the host computer using another desktop computer or a mobile device by means
of a network connection, such as a LAN, Wireless LAN or even the Internet. In addition, the host computer in
this scenario becomes a server computer capable of hosting multiple virtual machines at the same time for
multiple users.
As organizations continue to virtualize and converge their data center environment, client architectures
also continue to evolve in order to take advantage of the predictability, continuity, and quality of service
delivered by their Converged Infrastructure. For example, companies like HP and IBM provide a hybrid VDI
model with a range of virtualization software and delivery models to improve upon the limitations of distributed
client computing. Selected client environments move workloads from PCs and other devices to data center
servers, creating well-managed virtual clients, with applications and client operating environments hosted on
servers and storage in the data center. For users, this means they can access their desktop from any location,
without being tied to a single client device. Since the resources are centralized, users moving between work
locations can still access the same client environment with their applications and data. For IT administrators,
this means a more centralized, efficient client environment that is easier to maintain and able to more quickly
respond to the changing needs of the user and business.
3.25

Another form, session virtualization, allows multiple users to connect and log into a shared but powerful
computer over the network and use it simultaneously. Each is given a desktop and a personal folder in which
they store their files. With Multisite configuration, session virtualization can be accomplished using a single PC
with multiple monitors keyboards and mice connected.
Thin clients, which are seen in desktop virtualization, are simple and/or cheap computers that are
primarily designed to connect to the network. They may lack significant hard disk storage space, RAM or even
processing power, but many organizations are beginning to look at the cost benefits of eliminating ―thick client‖
desktops that are packed with software (and require software licensing fees) and making more strategic
investments.[8] Desktop virtualization simplifies software versioning and patch management, where the new
image is simply updated on the server, and the desktop gets the updated version when it reboots. It also enables
centralized control over what applications the user is allowed to have access to on the workstation.
Moving virtualized desktops into the cloud creates hosted virtual desktops (HVD), where the desktop
images are centrally managed and maintained by a specialist hosting firm. Benefits include scalability and the
reduction of capital expenditure, which is replaced by a monthly operational cost.
Desktop Virtualization provides users with an operating environment that is separate from their local
physical system. In the most common form of Desktop Virtualization, this is provided on servers in the
company‘s Data Center. The Operating System, Applications & User Data which are normally loaded on to the
user‘s computer, are now hosted and rendered on servers in the company‘s Data Center and the user can access
his desktop environment from anywhere. That‘s the purpose of Desktop Virtualization.
So, Desktop Virtualization solution consists of the Servers, Virtualization Software on the Servers &
Virtual Image on the desktops. Well, not only Desktops – It could be Laptops, Thin-clients and even smart
phones. Generally, you pay for the Virtualization Software as well as license costs for the total (maximum)
number of concurrent virtual desktop sessions expected at any point of time in the organization. Other than this,
you need to pay for Operating System License Costs (For Windows, you may need to purchase Software
Assurance licenses over the bulk licenses already purchased for the OS. For new machines you can purchase
their Virtual Desktop Access License (VDA) which is a subscription based model with yearly charges).

Advantages of Desktop Virtualization:

etc at any time you want.

acceleration (Remember, that the desktop & applications are rendered on a server, and not on the local
computer).
3.26

at the data center collectively for a group of virtual desktops.

User Access Policies can be applied to all users based on their role, location, type of device, etc.
– Antivirus/ Firewall policies
can be applied and monitored from the data center. The applications that can be accessed and run by the users
can be restricted and even tracked.

administration.
-Clients/ Smart Phones and many more devices could be used by the authorized users
(where ever they are) to access the centralized hosted applications.

servers and keeps the individual computer sessions isolated from each other.
s, a virtual desktop client can be downloaded to their computers which allows them to
work when network connectivity is not available & it synchronizes with the server as soon as it connects to a
network.
better performance of the Desktop-Server connections in
both LAN as well as WAN environments.

better, as the applications are now being processed by the heavy-duty server processors, than the desktop
processors.

between multiple such sessions almost instantaneously.


ftware generally has settings to allow administrators to allocate / limit server
resources that can be used per user, so that an individual user doesn‘t over-consume resources.
which could be adopted by
SMB‘s on monthly payment basis (without upfront investment costs).

Disadvantages of Desktop Virtualization:


-ex intensive. One needs to buy the Desktop Virtualization Software/Licenses,
Servers, Centralized Storage infrastructure, Upgrade Network infrastructure to support more bandwidth, etc in
addition to buying computers/ thin-clients for each user.
-user client machines (computers) that are needed in the network.
3.27

is no reduction of costs there.


-clients are sometimes as expensive/ more expensive than individual computers as, with huge
volumes computer prices plummet drastically as they are manufactured and distributed in bulk quantities.

introduce. Otherwise, it has to be upgraded. The WAN links need to have sufficient bandwidth to handle all
those remote DV users, as well.

be as good (when images are streamed from server) as processing and viewing applications right from a
desktop.
-definition video with Desktop Virtualization. But there are some work-
around methods that vendors follow to overcome this limitation (Including having local graphic acceleration
cards, rendering graphical applications on the desktop, etc).

limiting the choices for the customers.


s a limit to the number of Operating Systems that can be supported by Desktop Virtualization products.
3.28

APPLICATION VIRTUALIZATION
Application virtualization is software technology that encapsulates application software from the
underlying operating system on which it is executed. A fully virtualized application is not installed in the
traditional sense, although it is still executed as if it were. The application behaves at runtime like it is directly
interfacing with the original operating system and all the resources managed by it, but can be isolated or
sandboxed to varying degrees.
Full application virtualization requires a virtualization layer. Application virtualization layers replace
part of the runtime environment normally provided by the operating system. The layer intercepts all file and
Registry operations of virtualized applications and transparently redirects them to a virtualized location, often a
single file. The application remains unaware that it accesses a virtual resource instead of a physical one. Since
the application is now working with one file instead of many files and registry entries spread throughout the
system, it becomes easy to run the application on a different computer and previously incompatible applications
can be run side-by-side. Examples of this technology for the Windows platform include AppZero, BoxedApp,
Cameyo, Ceedo, AppliDis, Evalaze, InstallFree, 2X Software, Citrix XenApp, Systancia AppliDis, Novell
ZENworks Application Virtualization, Numecent Application Jukebox, Microsoft Application Virtualization,
Software Virtualization Solution, Spoon (formerly Xenocode), Symantec Workspace Virtualization and
Workspace Streaming, VMware ThinApp, P-apps and Oracle Secure Global Desktop.
Instead of running applications on central virtual machines, application streaming envisages maintaining
only virtual machine images centrally. An endpoint client, such as a desktop, runs a hypervisor that also
downloads the virtual machine image from the server and launches it on the end point client. In this manner the
3.29

processing power of the end point is fully exploited, a VM image can be cached for efficiency and only
incrementally updated when needed, and finally user data, which can be large, need not be centrally maintained
but mounted from the local disk as soon as the virtual machine boots.
Such a solution is implemented, for example, in the XenApp product from Citrix (incorporating
technology from Appstream, which was acquired by Citrix).

Benefits of application virtualization


Allows applications to run in environments that do not suit the native application: e.g. Wine allows some
Microsoft Windows applications to run on Linux. e.g. CDE, a lightweight application virtualization, allows
Linux applications to run in a distribution agnostic way. May protect the operating system and other
applications from poorly written or buggy code and in some cases provide memory protection and IDE style
debugging features, for example as in the IBM OLIVER. Uses fewer resources than a separate virtual machine.
Run applications that are not written correctly, for example applications that try to store user data in a
read-only system-owned location. Run incompatible applications side-by-side, at the same time and with
minimal regression testing against one another. Reduce system integration and administration costs by
maintaining a common software baseline across multiple diverse computers in an organization. Implement the
security principle of least privilege by removing the requirement for end-users to have Administrator privileges
in order to run poorly written applications.
Simplified operating system migrations. Improved security, by isolating applications from the operating
system. Allows applications to be copied to portable media and then imported to client computers without need
of installing them, so called Portable software.

Limitations of application virtualization


Not all software can be virtualized. Some examples include applications that require a device driver and 16-bit
applications that need to run in shared memory space. Some types of software such as anti-virus packages and
3.30

applications that require heavy OS integration, such as Stardock's WindowBlinds or TGTSoft's StyleXP are
difficult to virtualize. Only file and registry-level compatibility issues between legacy applications and newer
operating systems can be addressed by application virtualization. For example, applications that don't manage
the heap correctly will not execute on Windows Vista as they still allocate memory in the same way, regardless
of whether they are virtualized or not. For this reason, specialist application compatibility fixes (shims) may still
be needed, even if the application is virtualized.
Moreover, in software licensing, application virtualization bears great licensing pitfalls mainly because
both the application virtualization software and the virtualized applications must be correctly licensed.

DATA VIRTUALIZATION
Data virtualization is any approach to data management that allows an application to retrieve and
manipulate data without requiring technical details about the data, such as how it is formatted or where it is
physically located.
Unlike the traditional extract, transform, load ("ETL") process, the data remains in place, and real-time
access is given to the source system for the data, thus reducing the risk of data errors and reducing the workload
of moving data around that may never be used.
Unlike Data Federation it does not attempt to impose a single data model on the data (heterogeneous
data). The technology also supports the writing of transaction data updates back to the source systems.[2]
To resolve differences in source and consumer formats and semantics, various abstraction and transformation
techniques are used.
This concept and software is a subset of data integration and is commonly used within business
intelligence, service-oriented architecture data services, cloud computing, enterprise search, and master data
management.
Examples
The Phone House—the trading name for the European operations of UK-based mobile phone retail chain
Carphone Warehouse—implemented Denodo‘s data virtualisation technology between its Spanish subsidiary‘s
transactional systems and the Web-based systems of mobile operators.
Novartis, which implemented a data virtualisation tool from Composite Software to enable its researchers to
quickly combine data from both internal and external sources into a searchable virtual data store.
Linked Data can use a single hyperlink-based Data Source Name (DSN) to provide a connection to a virtual
database layer that is internally connected to a variety of back-end data sources using ODBC, JDBC, OLE DB,
ADO.NET, SOA-style services, and/or REST patterns. Database virtualization may use a single ODBC-based
DSN to provide a connection to a similar virtual database layer.
3.31

Functionality
Data Virtualization software is an enabling technology which provides some or all of the following capabilities:
Abstraction – Abstract the technical aspects of stored data, such as location, storage structure, API, access
language, and storage technology.
Virtualized Data Access – Connect to different data sources and make them accessible from a common logical
data access point.
Transformation – Transform, improve quality, reformat, etc. source data for consumer use.
Data Federation – Combine results sets from across multiple source systems.
Data Delivery – Publish result sets as views and/or data services executed by client application or users when
requested.
Data virtualization software may include functions for development, operation, and/or management.
Benefits
 Reduce risk of data errors
 Reduce systems workload through not moving data around
 Increase speed of access to data on a real-time basis
 Significantly reduce development and support time
 Increase governance and reduce risk through the use of policies
 Reduce data storage required
Drawbacks
 May impact Operational systems response time, particularly if under-scaled to cope with unanticipated
user queries or not tuned early on.
 Does not impose a heterogeneous data model, meaning the user has to interpret the data, unless
combined with Data Federation and business understanding of the data
 Requires a defined Governance approach to avoid budgeting issues with the shared services
 Not suitable for recording the historic snapshots of data - data warehouse is better for this
 Change management "is a huge overhead, as any changes need to be accepted by all applications and
users sharing the same virtualization kit"

NETWORK VIRTUALIZATION
In computing, network virtualization is the process of combining hardware and software network resources and
network functionality into a single, software-based administrative entity, a virtual network. Network
virtualization involves platform virtualization, often combined with resource virtualization. Network
virtualization is categorized as either external virtualization, combining many networks or parts of networks
3.32

into a virtual unit, or internal virtualization, providing network-like functionality to software containers on a
single network server. In software testing, software developers use network virtualization to test software under
development in a simulation of the network environments in which the software is intended to operate. As a
component of application performance engineering, network virtualization enables developers to emulate
connections between applications, services, dependencies, and end users in a test environment without having to
physically test the software on all possible hardware or system software. Of course, the validity of the test
depends on the accuracy of the network virtualization in emulating real hardware and operating systems.
Components
Various equipment and software vendors offer network virtualization by combining any of the following:
 Network hardware, such as switches and network adapters, also known as network interface cards
(NICs)
 Network elements, such as firewalls and load balancers
 Networks, such as virtual LANs (VLANs) and containers such as virtual machines (VMs)
 Network storage devices
 Network machine-to-machine elements, such as telecommunications devices
 Network mobile elements, such as laptop computers, tablet computers, and smart phones
 Network media, such as Ethernet and Fibre Channel

External virtualization
External network virtualization combines or subdivides one or more local area networks (LANs) into virtual
networks to improve a large network's or data center's efficiency. A virtual local area network (VLAN) and
network switch comprise the key components. Using this technology, a system administrator can configure
systems physically attached to the same local network into separate virtual networks. Conversely, an
administrator can combine systems on separate local networks into a VLAN spanning the segments of a large
network.
Internal virtualization
also called Virtual Channel Internal network virtualization configures a single system with software containers,
such as Xen hypervisor control programs, or pseudo-interfaces, such as a VNIC, to emulate a physical network
with software. This can improve a single system's efficiency by isolating applications to separate containers or
pseudo-interfaces.
3.33

Examples
 Citrix and Vyatta have built a virtual network protocol stack combining Vyatta's routing, firewall, and
VPN functions with Citrix's Netscaler load balancer, branch repeater wide area network (WAN) optimization,
and secure sockets layer VPN.
 OpenSolaris network virtualization provides a so-called "network in a box" (see OpenSolaris Network
Virtualization and Resource Control).
 Microsoft Virtual Server uses virtual machines to make a "network in a box" for x86 systems. These
containers can run different operating systems, such as Microsoft Windows or Linux, either associated with or
independent of a specific network interface controller (NIC).

MEMORY VIRTUALIZATION

In computer science, memory virtualization decouples volatile random access memory (RAM) resources from
individual systems in the data center, and then aggregates those resources into a virtualized memory pool
available to any computer in the cluster. The memory pool is accessed by the operating system or applications
running on top of the operating system. The distributed memory pool can then be utilized as a high-speed cache,
a messaging layer, or a large, shared memory resource for a CPU or a GPU application. Memory virtualization
allows networked, and therefore distributed, servers to share a pool of memory to overcome physical memory
limitations, a common bottleneck in software performance. With this capability integrated into the network,
applications can take advantage of a very large amount of memory to improve overall performance, system
utilization, increase memory usage efficiency, and enable new use cases. Software on the memory pool nodes
(servers) allows nodes to connect to the memory pool to contribute memory, and store and retrieve data.
Management software and the technologies of memory over commitment manage shared memory, data
insertion, eviction and provisioning policies, data assignment to contributing nodes, and handles requests from
client nodes. The memory pool may be accessed at the application level or operating system level. At the
application level, the pool is accessed through an API or as a networked file system to create a high-speed
shared memory cache. At the operating system level, a page cache can utilize the pool as a very large memory
resource that is much faster than local or networked storage.
Memory virtualization implementations are distinguished from shared memory systems. Shared memory
systems do not permit abstraction of memory resources, thus requiring implementation with a single operating
system instance (i.e. not within a clustered application environment).
Memory virtualization is also different from storage based on flash memory such as solid-state drives
(SSDs) - SSDs and other similar technologies replace hard-drives (networked or otherwise), while memory
virtualization replaces or complements traditional RAM.
3.34

Benefits
 Improves memory utilization via the sharing of scarce resources
 Increases efficiency and decreases run time for data intensive and I/O bound applications
 Allows applications on multiple servers to share data without replication, decreasing total memory needs
 Lowers latency and provides faster access than other solutions such as SSD, SAN or NAS
Products
RNA networks Memory Virtualization Platform - A low latency memory pool, implemented as a shared
cache and a low latency messaging solution.
ScaleMP - A platform to combine resources from multiple computers for the purpose of creating a single
computing instance.
AppFabric Caching Service is a distributed cache platform for in-memory caches spread across multiple
systems, developed by Microsoft.
IBM Websphere extremeScale is a Java based distributed cache much like Oracle Coherence
Implementations
Application level integration: In this case, applications running on connected computers connect to the
memory pool directly through an API or the file system.

Cluster implementing memory virtualization at the application level. Contributors 1...n contribute memory to
the pool. Applications read and write data to the pool using Java or C APIs, or a file system API.
Operating System Level Integration: In this case, the operating system connects to the memory pool, and
makes pooled memory available to applications.
3.35

Cluster implementing memory virtualization. Contributors 1...n contribute memory to the pool. The operating
system connects to the memory pool through the page cache system. Applications consume pooled memory via
the operating system.
Background
Memory virtualization technology follows from memory management architectures and virtual memory
techniques. In both fields, the path of innovation has moved from tightly coupled relationships between logical
and physical resources to more flexible, abstracted relationships where physical resources are allocated as
needed. Virtual memory systems abstract between physical RAM and virtual addresses, assigning virtual
memory addresses both to physical RAM and to disk-based storage, expanding addressable memory, but at the
cost of speed. NUMA and SMP architectures optimize memory allocation within multi-processor systems.
While these technologies dynamically manage memory within individual computers, memory virtualization
manages the aggregated memory of multiple networked computers as a single memory pool.

SERVER VIRTUALIZATION
Computer has made things simple for the human kind and with the technological developments; it has
become a basic and essential need of every business. It is useful not only in simplifying and managing the
workloads, but also helps out businesses to carry out their offsite work functions, even though, if they are
geographically separated. Under these circumstances, maintaining numerous computers can complicate the
work environment and also can increase the operational expenses.
So, at this stage, server virtualization comes into use, where it is a technique of running multiple
independent virtual operating systems on a single physical server system. The process is carried out in an
intelligent way, where the masking of server resources is kept isolated from the server users. This masking will
include physical servers, processors and operating systems. The division of physical server, into multiple
servers is carried out by the use of virtualization software.
The actual machine where virtualization takes place is called as Host machine. All those guest operating
systems which are virtualized onto the host are assigned with the name of virtual machines. The Virtualization
of server can be done in popular ways: Paravirtual machine model, full virtualization or virtual machine model.

Server Virtualization leads to carbon footprint reduction


Practically, by going with server virtualization technology, one can reduce carbon footprint, generated
by the company. Here is how it is possible:
Server Virtualization generates less heat - It is a known fact that heat generation is proportional to the
number of servers and to tackle the heat, the company needs to deploy more number of cooling solutions. As a
3.36

result Heat generation is causing the installation of more number of cooling solutions and this leads to more
consumption of power than usual. If the servers are consolidated and virtualized, then the amount of carbon
footprint can be reduced significantly.
Lessening of management is observed by sticking to server virtualization - by reducing the number of
servers, usually less staff is required to maintain and manage them. Server virtualization does the same as it
consolidates the server count and reduces it to one. So, as a result less number of staff needs to be employed and
so fewer bodies working equals less energy exertion, this will directly reflect on lessening of carbon footprint.
Less power consumption is seen in virtualization - If a company bounds to reduced number of servers by
virtualization, then the power consumption factor will also get reduced. As a result, less amounts of energy is
consumed to run a business operation and in this way, a green initiative can be carried out.
Generation of Obsolete hardware gets reduced - It is a known fact that, obsolete hardware needs to be
sensibly discarded as it can cause electronic-waste pollution. Sometimes recycling can give a solution for it, but
it doesn‘t offer a permanent option. So, as a result of this obsolete hardware, e-waste pollution will generate
carbon footprint. Server virtualization technology, offers multiple servers on a common hardware platform and
so as a result of it, hardware utility increases and the presence of more hardware tools decreases.

SERVER VIRTUALIZATION BENEFITS


Server virtualization helps in saving money in buying hardware as it partitions a server into multiple
virtual systems and uses the hardware of the host system.
Reduction in downtime and server stability is usually observed in the Virtualization technology and so
this ensures high availability of applications and also offers prompt disaster recovery options for data
continuity.
Since, virtualized servers work isolated from each other, they are gripped with utmost security and so
are used as sandboxes and honeypots. Facts - Sandbox is a created environment, where testing experiments can
be conducted, without affecting the real system. Honeypot - Honeypot is like a trap, which detects or deflects
unauthorized usage of the host system or its virtual guest machines.
Server footprint gets reduced in a virtualized environment as number of servers gets consolidated and
this is also a cost saving factor.

STORAGE VIRTUALIZATION
Storage virtualization is a concept and term used within computer science. Specifically, storage systems
may use virtualization concepts as a tool to enable better functionality and more advanced features within and
across storage systems.
3.37

Broadly speaking, a 'storage system' is also known as a storage array or Disk array or a filer. Storage
systems typically use special hardware and software along with disk drives in order to provide very fast and
reliable storage for computing and data processing. Storage systems are complex, and may be thought of as a
special purpose computer designed to provide storage capacity along with advanced data protection features.
Disk drives are only one element within a storage system, along with hardware and special purpose embedded
software within the system.
Storage systems can provide either block accessed storage, or file accessed storage. Block access is
typically delivered over Fibre Channel, iSCSI, SAS, FICON or other protocols. File access is often provided
using NFS or CIFS protocols. Within the context of a storage system, there are two primary types of
virtualization that can occur:
Block virtualization used in this context refers to the abstraction (separation) of logical storage (partition) from
physical storage so that it may be accessed without regard to physical storage or heterogeneous structure. This
separation allows the administrators of the storage system greater flexibility in how they manage storage for end
users.
File virtualization addresses the NAS challenges by eliminating the dependencies between the data accessed at
the file level and the location where the files are physically stored. This provides opportunities to optimize
storage use and server consolidation and to perform non-disruptive file migrations.
Storage virtualization refers to the abstraction of storage systems from applications and servers. It is a
foundation for the implementation of other technologies, such as thin provisioning, tiring, and data protection,
which are transparent to the server. It is one of the key enablers for storage cloud environments where several
cloud services are typically sharing one common infrastructure. Storage virtualization abstracts storage from
multiple sources into a single storage pool. It helps you to manage the rapid information growth by using your
storage equipment and data center space more effectively. The increase in storage utilization reduces power
costs and keeps the footprint of your storage hardware low.
IBM SAN Volume Controller
The IBM SAN Volume Controller (SVC) provides block-level aggregation and volume management for IBM
and external storage systems in a storage area network (SAN). The SVC manages a number of logical volumes
that are presented by back-end-storage controllers as single storage pool, and it creates virtual disks (VDisks)
from that pool that are presented to servers attached to a SAN. One of the many advantages, from the server
perspective, is that the storage environment is homogeneous.
3.38

Figure 3-1 Storage virtualization with IBM SAN Volume Controller


The SVC is deployed as a pair of nodes that form an I/O group, the I/O groups form a cluster, and there can be
up to four pairs of nodes in a cluster. The SVC cluster sees the storage that is presented to a SAN by the back-
end storage controller as a number of disks called managed disks (MDisks). MDisks can be provided by a SAN
storage system or by the solid state drives that are provided by the SVC nodes.
IBM Storwize V7000 Unified
To be able to serve logical volumes and files, the hardware and software to supply these services are integrated
into one product. Viewed from a client perspective, one part of IBM Storwize® V7000 Unified is a storage
server and the other part is a file server, and therefore is referred to as ―Unified.‖ The Storwize V7000 Unified
uses disk-level virtualization with storage-level virtualization. You can virtualize external storage systems and
you can use the internal disks to provide logical volumes to servers in your SAN. IBM Storwize V7000 Unified
consists of a set of drive and control enclosures. Control enclosures contain disk drives and two nodes referred
as an I/O group, which are attached to the SAN fabric. Expansion enclosures contain drives and are attached to
control enclosures. In addition to providing logical volumes, you can use Storwize V7000 Unified to implement
file level storage virtualization which refers to the provisioning of storage to operating systems and applications
in your Internet Protocol (IP) network in the form of files and directories. Storwize V7000 Unified uses file
access protocols and thus acts as a file server appliance. The file server subsystem of Storwize V7000 Unified
consists oftwo file modules, which perform the functions that are provided by the proven, reliable IBM Scale
Out Network Attached Storage (SONAS) software. They use the VDisks provided by the virtualized subsystem
to create file systems. IBM Storwize V7000 Unified provides a variety of file access protocols such as CIFS,
3.39

NFS, FTP, and HTTPS so you can more easily access your data. Figure 3-2 shows an overview of the main
components included in the file module software stack.

You can also use Storwize V7000 Unified as a traditional block subsystem. Its internal drives are configured
into RAID arrays and virtual disks that are created from those arrays. Storwize V7000 Unified supports hot-
spare drives. In case of a disk failure, the system automatically replaces the failed member with a hot-spare
drive and rebuilds the array to restore its redundancy. Every array has a set of goals that describes the location
and performance of each array. A sequence of drive failures and hot-spare takeovers can leave an array
unbalanced, that is, with members that do not match these goals. IBM Storwize V7000 Unified automatically
rebalances such arrays when appropriate drives are available.
IBM Scale Out Network Attached Storage (SONAS)
SONAS uses mature technology from IBM high performance computing and it is based upon the proven,
reliable IBM General Parallel File System (GPFS™). Rather than having fragmented, isolated islands of
information with underutilized storage resources (Figure 3-3 on page 33), the file-level virtualization and
hardware-level abstraction of SONAS (Figure 3-4 on page 34) allow you to effectively manage storage.

Figure 3-3 Islands of storage lead to poor storage utilization


3.40

From the virtualization perspective, the SONAS appliance consists of interface nodes, an integrated
management node and several storage pods. The interface node provides connectivity to your IP network for
file services to external applications. The interface layer presents one single namespace for accessing your data
through a variety of file access protocols, such as CIFS, NFS, FTP, and HTTPS. This namespace remains
constant, regardless of where the directory and folder are physically located. In this way, sharing files among
servers becomes easier. It also facilitates the implementation of tiered storage at the file level, for best
operational efficiency. The management node provides a management interface as your single entry point for
the configuration.

Figure 3-4 IBM SONAS architectural overview


Each storage pod consists of high-density disk-expansion units, keeping the storage foot print at a low level.
They are connected to storage controllers that provide a set of RAID-protected logical volumes to a storage
node. Each storage pod contains two storage nodes that are connected to both storage controllers. Storage nodes
and interface nodes form a cluster. Files can be accessed through each of the interface nodes, which provide
highly scalable capability for data access. Additional data access performance can be obtained by more
interfaces nodes. SONAS supports your current and future capacity needs. It provides extreme scalability to
accommodate capacity growth up to over 20 petabytes (PB) by adding more storage pods.

VIRTUAL MACHINE TECHNOLOGY


We begin with an overview of virtual machine technology: In general, any means by which many different
users are able simultaneously to interact with a computing system while each perceiving that they have an entire
3.41

‗virtual machine‘ to themselves, is a form of virtualization. In this general sense, a traditional


multiprogramming operating system, such as Linux, is also a form of virtualization, since it allows each user
process to access system resources oblivious of other processes. The abstraction provided to each process is the
set of OS system calls and any hardware instructions accessible to user level processes. Extensions, such as
‗user mode Linux‘ offer a more complete virtual abstraction where each user is not even aware of other user‘s
processes, and can login as an administrator, i.e. ‗root,‘ to their own seemingly private operating system.
‗Virtual private servers‘ are another such abstraction. At a higher level of abstraction is virtual machines based
on high-level languages, such as the Java virtual machine (JVM) which itself runs as an operating system
process but provides a system-independent abstraction of the machine to an application written in the Java
language. Such abstractions, which present an abstraction at the OS system call layer or higher, are called
process virtual machines. Some cloud platforms, such as Google‘s App Engine and Microsoft‘s Azure, also
provide a process virtual machine abstraction in the context of a web-based architecture.
More commonly, however, the virtual machines we usually refer to when discussing virtualization in
enterprises or for infrastructure clouds such as Amazon‘s EC2 are system virtual machines that offer a complete
hardware instruction set as the abstraction provided to users of different virtual machines. In this model many
system virtual machine (VM) instances share the same physical hardware through a virtual machine monitor
(VMM), also commonly referred to as a hypervisor. Each such system VM can run an independent operating
system instance; thus the same physical machine can have many instances of, say Linux and Windows, running
on it simultaneously.
The system VM approach is preferred because it provides complete isolation between VMs as well as
the highest possible flexibility, with each VM seeing a complete machine instruction set, against which any
applications for that architecture are guaranteed to run. It is the virtual machine monitor that enables a physical
machine to be virtualized into different VMs. Where does this software itself run? A host VMM is implemented
as a process running on a host operating system that has been installed on the machine in the normal manner.
Multiple guests‘ operating systems can be installed on different VMs that each run as operating system
processes under the supervision of the VMM. A native VMM, on the other hand, does not require a host
operating system, and runs directly on the physical machine (or more colloquially on ‗bare metal‘). In this
sense, a native VMM can be viewed as a special type of operating system, since it supports multiprogramming
across different VMs, with its ‗system calls‘ being hardware instructions! Figure 8.1 illustrates the difference
between processes virtual machines, hostVMMsand native VMMs. Most commonly used VMMs, such as the
open source Xen hypervisor as well as products from VMware are available in both hosted as well as native
versions; for example the hosted Xen (HXen) project and VMware Workstation products are hosted VMMs,
3.42

Whereas the more popularly used XenServer (or just Xen) and VMware ESX Server products are native
VMMs.

VIRTUAL MACHINES AND ELASTIC COMPUTING


We have seen how virtual machine technology enables decoupling physical hardware from the virtual machines
that run on them. Virtual machines can have different instruction sets from the physical hardware if needed.
Even if the instruction sets are the same (which is needed for efficiency), the size and number of the physical
resources seen by each virtual machine need not be the same as that of the physical machine, and in fact will
usually be different. The VMM partitions the actual physical resources in time, such as with I/O and network
devices, or space, as with storage and memory. In the case of multiple CPUs, compute power can also be
partitioned in time (using traditional time slices), or in space, in which case each CPU is reserved for a subset
of virtual machines.
The term ‗elastic computing‘ has become popular when discussing cloud computing. The Amazon
‗elastic‘ cloud computing platform makes extensive use of virtualization based on the Xen hypervisor.
Reserving and booting a server instance on the Amazon EC cloud provisions and starts a virtual machine on one
of Amazon‘s servers. The configuration of the required virtual machine can be chosen from a set of options (see
Chapter 5). The user of the ‗virtual instance‘ is unaware and oblivious to which physical server the instance has
been booted on, as well as the resource characteristics of the physical machine.
An ‗elastic‘ multi-server environment is one which is completely virtualized, with all hardware
resources running under a set of cooperating virtual machine monitors and in which provisioning of virtual
machines is largely automated and can be dynamically controlled according to demand. In general, any multi-
server environment can be made ‗elastic‘ using virtualization in much the same manner as has been done in
Amazon‘s cloud, and this is what many enterprise virtualization projects attempt to do. The key success factors
in achieving such elasticity is the degree of automation that can be achieved across multiple VMMs working
together to maximize utilization. The scale of such operations is also important, which in the case of Amazon‘s
cloud runs into tens of thousands of servers, if not more. The larger the scale, the greater the potential for
amortizing demand effciently across the available capacity while also giving users an illusion of ‗infinite‘
computing resources. Technology to achieve elastic computing at scale is, today, largely proprietary and in the
hands of the major cloud providers. Some automated provisioning technology is available in the public domain
or commercially off the shelf , and is being used by many enterprises in their internal data center automation
efforts. Apart from many startup companies, VMware‘s VirtualCentre product suite aims to provide this
capability through its ‗VCloud‘ architecture. We shall discuss the features of an elastic data center in more
3.43

detail later in this chapter; first we cover virtual machine migration, which is a pre-requisite for many of these
capabilities.
VIRTUALIZATION TECHNIQUES ARE:
1. FULL VIRTUALIZATION: This technique fully virtualizes the main physical server to support
applications and software to operate in a much similar way on virtualized divisions. This creates an
environment as if it is working on a unique server. Full virtualization technique enables the administrators to
run unchanged and entirely virtualized operating system.
Advantages:

increased efficiency and a well-organized hardware.

enhancing older systems.


-packed with this technique, while reducing the physical space and
augmenting the overall performance of the company.

2. VIRTUAL MACHINES: Virtual machines are popularly known as VMs, imitate certain factual or illusory
hardware requiring the valid resources from the host, which is nothing but the actual machine operating the
VMs. A virtual machines monitor (VMM) is used in certain cases where the CPU directives need extra
privileges and may not be employed in user space.
Advantages:
r running a random guest operating
system without altering the guest OS.

widely used by Microsoft Virtual Server, QEMU, Parallels, VirtualBox and many other VMware products.

3. PARA-VIRTUALIZATION: This methodology clearly runs modified versions of operating systems. Only
the software and programs are carried out in a precise manner to work for their exclusive websites without
executing any kind of hardware simulation. Using this technique, the guest is very well aware of its
environment as the para-virtualized OS is altered to be alert about its virtualization.
Advantages:

privileged instructions.
3.44

the operating cost of a host operating system.

4. OPERATING SYSTEM LEVEL VIRTUALIZATION: Operating system level virtualization is specially


intended to grant the necessary security and separation to run manifold applications and replicas of the same
operating system on the same server. Isolating, segregating and providing a safe environment enables the easy
running and sharing of machines of numerous applications operating on a single server. This technique is used
by Linux-VServer, FreeBSD Jails, OpenVZ, Solaris Zones and Virtuozzo.
Advantages:
ntioned techniques, OS level virtualization is considered to give the
best performance and measurability.

administered from the host system.

Virtualization has become a widespread concept in the today's world of information technology. Decisive and
influential designers can do all the wonders required for optimizing the performance of virtualized systems
while steadily focusing on your business needs.

You might also like