Virtualization refers to the technology that clarifies a software abstraction layer (hypervisor or virtual machine monitor) between the operating system and the hardware running on top of this layer.
Virtualization at the application layer and some of the tools and products found at this level of virtualization. At this level, the application is customized as a virtual monitor, the user can use and run this application locally without completely installing this application on his or her local computer
1. MAKERERE UNIVERSITY
SCHOOL OF COMPUTING AND
INFORMATICS TECHNOLOGY
DEPARTMENT OF COMPUTER SCIENCE
MCS 7101: Cloud Technologies and Architectures
Assignment I
Name StudentNo RegNo
ATWIINE Simon Alex 1900725235 2019/HD05/25235U
NAMBAALE Raymond Bakule 1900725253 2019/HD05/25253U
RAJAB Ssemwogerere 190072991 2019/HD03/29911U
WAMWOYO Faruk 1900725248 2019/HD05/25248U
2. 1 Virtualization
1.1 What Is Virtualization?
Virtualization is the act of isolating or unbinding one computing resource
from others.[9] Or-it can be defined as-a computer architecture technology
by which multiple virtual machines (VMs) are multiplexed in the same
hardware unit.
Virtualization has a long history in the software industry and the term
has been used in a variety of ways. The earliest type of virtual machine
dates back to IBM in the 1960s which aimed to maximize use of expensive
mainframe systems through multitasking.[5] However, during the course
of years, the hardware got cheaper and simultaneously multiprocessing
operating systems emerged.[3]
The goal of virtualization is usually one of the following: higher lev-
els of performance, scalability, reliability/availability, agility, or to create a
unified security and management domain.[9]
1.2 Virtual Machine
In the cloud context, a “virtual machine” is a software implementation of
a machine with a complete independent operating system, which executes
programs like a physical machine.[5]
The virtual machine may have a number of virtual components includ-
ing: processors, memory, hard disk, and network. All these virtual com-
ponents are offered as “slices” from the host machine.
1.3 Characteristics of Virtualized Environments
In a virtualized environment there are three major components: guest,
host, and virtualization layer.[2] The guest represents the system compo-
nent that interacts with the virtualization layer rather than with the host,
as would normally happen. The host represents the original environment
where the guest is supposed to be managed. The virtualization layer is
responsible for recreating the same or a different environment where the
guest will operate.
3. 2 Application Virtualization
2.1 Description
Application virtualization is a software technology that encapsulates ap-
plication software from the underlying operating system on which it is
executed.[8]
Virtualization at the application level virtualizes an application as a
VM. On a traditional operating system (OS), an application often runs as
a process. Therefore, application-level virtualization is also known as
process-level virtualization.
In application-level virtualization, applications are not installed in the
expected runtime environment,[7] but are run as though they were. When
the application is loaded, the host OS provides it with a run-time environ-
ment, but virtualization layer replaces a part of this run-time environment
and gives a virtual environment to the virtualized application.
Figure 1: Illustration of an application running in a native environment
and virtualized environment
2.2 What Does Application Virtualization Do?
There are two different forms of application virtualization, client-side and
server-side.
4. The client-side form of application virtualization creates a protected en-
vironment that makes it possible for applications to be isolated from one
another and from the base operating system. This means that applications
that could not successfully reside on the same client system could be used
together.[4]
For instance an application designed for an earlier version of the oper-
ating system may continue to function on a newer version of that operating
system, even though it would be incompatible without being placed in a
virtual environment.[4]
Placing server-side applications in a virtual environment offers many of
the same benefits as client-side application virtualization. Server-side ap-
plication virtualization offers a few other valuable functions as well. Mul-
tiple instances of an application can be automatically started on other ma-
chines when the workload is no longer meeting service-level guidelines.[4]
2.3 Application Virtualization Deployment Methods
The most popular approach is to deploy high level language (HLL) VMs. In
this scenario, the virtualization layer sits as an application program on top
of the operating system, and the layer exports an abstraction of a VM that
can run programs written and compiled to a particular abstract machine
definition.[6] Any program written in the HLL and compiled for this VM
will be able to run on it. The Microsoft .NET CLR and Java Virtual Machine
(JVM) are two good examples of this class of VM.[6]
Other forms of application-level virtualization are known as applica-
tion isolation, application sandboxing, or application streaming.
Application sandboxing/isolation involves wrapping the application in
a layer that is isolated from the host OS and other applications. The result
is an application that is much easier to distribute and remove from user
workstations.[6]
Application streaming on the other hand, is a form of on-demand soft-
ware distribution. Only essential portions of an application’s code need to
be installed on the local system, and while the end user performs actions in
the application, the necessary code and files are delivered over the network
as and when they are required.[11]
5. 2.4 Benefits of Application Virtualization
The power of application virtualization is the separation of the application
from the endpoint OS. This alleviates all the shortcomings that come with
the traditional approach of installing, tracking, and supporting an appli-
cation on individual machines, and provides a number of benefits.
1. Application installation simplified: Installing an application on hun-
dreds or thousands of computers is prone to error. Application vir-
tualization simplifies software deployment.[1]
2. Application retirement simplified: Getting rid of an application in
your whole network is much easier as well. Since virtual applications
just have to be deleted, uninstalling them is usually not required.
3. No more application conflicts: Sometimes installing an application
corrupts another application. Application virtualization helps reduce
the risks of application conflicts.
4. No registry and system bloat: The more applications you install on
a computer, the more bloated its registry and system folder will get.
This makes the computer slower and increases the risk of failures.
Application virtualization lets the registry and the system folder un-
touched.
5. Multiple run-time environments: You can deploy the run-time envi-
ronment together with the application. This enables you to run differ-
ent versions of a run-time environment on a computer. For example,
you can run different Java versions simultaneously without messing
around with environment variables.
6. Multiple versions of the same application: For instance, end users
can run Microsoft Word 2003 and Microsoft Word 2007 at the same
time.[10]
7. Application updates: You can update the virtualized application at
a central location on your servers. This means you have to update an
application only once and not on all of your clients’ machines.
8. Rollback: If an application no longer works properly on a user’s ma-
chine because he or she changed too many settings or installed in-
compatible add-ons, you can just reset the app to its original state.
6. 2.5 Limitations of Application Virtualization
The attention points, or challenges, of implementing application virtual-
ization are:
• Not all applications can be virtualized. Some examples include ap-
plications that require a device driver.
• Integration between applications and the operating system can be
challenging.
• Performance penalty of application virtualization solution.
• Different way of application packaging which can have impact on
packaging tools and knowledge of packagers.
• Vendors that won’t support apps that have been virtualized, sequenced,
repackaged.
• Troubleshooting is different to deployed applications and can be chal-
lenging.
2.6 Players in the Application Virtualization World
Although there are many players in the application virtualization market,
a short summary of the most important suppliers follows:
Citrix offers virtualization technology in a number of different cate-
gories. The company’s XenApp is considered an application virtualization,
too. XenApp is a client-side application virtualization product.
Microsoft acquired Softricity in July 2006 and enhanced its product, re-
naming it SoftGrid. It is now called Microsoft Application Virtualization
or App-V. App-V provides both client- and server-side application virtual-
ization functions.
VMware acquired ThinApp from Thinstall in January 2008. ThinApp
is a client-side application virtualization function.
AppZero makes it possible for organizations to encapsulate applica-
tions into a virtual application environment (VAA). VAAs can be easily de-
livered to one or more servers.
7. References
[1] Pernar Domagoj (October 2009). Application Virtualization Down-
load repository, and how to make applications portable. [Virtualiza-
tion.com. Retrieved 11-September-2019].
[2] Buyya, Rajkumar and Vecchiola, Christian and Selvi, S Thamarai.
Mastering cloud computing: foundations and applications programming.
Newnes, 2013.
[3] Cafaro, Massimo and Aloisio, Giovanni. Grids, clouds, and virtual-
ization. In Grids, Clouds and Virtualization, page 27. Springer, 2011.
[4] Kusnetzky Dan. Virtualization: A Manager’s Guide. O’Reilly Media,
Inc., 2011.
[5] Richard Hill, Laurie Hirsch, Peter Lake, and Siavash Moshiri. Guide
to cloud computing: principles and practice. Springer Science & Business
Media, 2012.
[6] Hwang, Kai and Dongarra, Jack and Fox, Geoffrey C. Distributed and
cloud computing: from parallel processing to the internet of things. Morgan
Kaufmann, 2013.
[7] Microsoft. Microsoft Application Virtualization Technical Overview.
[8] Singh Balwinder Sodhi. Topics in Virtualization and Cloud Comput-
ing. 2017.
[9] Ruben Spruijt. Application virtualization smackdown. 2013.
[10] Credit Suisse. Desktop Virtualization Comes of Age.
[11] Wikipedia contributors. Application streaming, 2019. [Online; ac-
cessed 11-September-2019].