Understanding virtualization
Before we dive into application virtualization with Citrix XenApp, it is important to make sure we have a fundamental understanding of virtualization. This is not meant to be a by-the-book definition, and generally, most definitions in this book will target your common sense and intuition rather than your ability to memorize dry material. If you are an experienced virtualization engineer, feel free to skip this section.
So, what is hardware virtualization? In a broader sense, it is the unlocking of the OS layer from the underlying physical hardware, making it possible to run multiple OSes (also referred as guest OSes) on top of a single hardware entity. Let's take, for example, a rack server. In a traditional IT infrastructure, we would ship the rack to our data center (or server room), install Windows 2012 R2 on it, and enable Internet Information Services (IIS) to run a web server. In this one-on-one relationship, we run a single instance of an OS and a single server role on a physical machine. So, if we require twenty web servers to manage our website, in a traditional environment, we would need to purchase twenty physical servers. Instead, if we decide to virtualize our workloads, we can install a piece of software, known as a hypervisor, onto our rack server that can run multiple guest OSes or VMs. We can now scale up and build many web servers on this single hypervisor, provided that it has sufficient processors and RAM. Since we have installed this software into bare metal and not on top of another OS, this is known as a Type-1 hypervisor. Citrix XenServer and VMware ESX are examples of Type-1 hypervisors. However, our options do not end here. If we decide to install a traditional OS, such as Windows 2012 R2 or Linux RedHat, onto our rack, we can then place a hypervisor on top of the OS and run multiple VMs. This is defined as a Type-2 hypervisor. Sun VirtualBox and VMware Workstation are examples of Type-2 hypervisors.
Most hypervisor platforms have a Graphical User Interface (GUI), which makes administration of guest OSes extremely efficient as you have your entire environment in the palm of your hand. Examples of management consoles are XenCenter (for Citrix XenServer), vSphere (for VMware ESX), and SCVMM (for Microsoft Hyper-V). Hypervisor installation and configuration is beyond the scope of this book. VM configurations, however, will be covered in Chapter 2, Designing a Citrix®
Solution to Fit Your Needs, to the extent that they are relevant to the Citrix XenApp design. The following diagram illustrates the layout of Type-1 and Type-2 hypervisors:
Application virtualization
Now that we have a better understanding of hardware virtualization, we can focus on application virtualization. App virtualization is similar to hardware virtualization in the sense that the upper layer is separated from its underlying components. The former, however, entails the isolation of an application from its original OS and the application itself is presented to the end user as if it were native to their device regardless of the OS in use. For instance, Betty can launch a Windows-based accounting app from her Linux home computer, but this app actually runs on a server in the data center and not locally on her machine. This way, she can use any device she wants in order to fill out her spreadsheets and this application never gets exposed to any potential security threats from her device because it never actually executes on her machine. This is the key concept behind application virtualization that is addressed by the Citrix XenApp solution in an enterprise environment. One of many other use cases is running 32-bit apps on a 64-bit endpoint OS. This comes in very handy for financial services companies and healthcare institutions that rely heavily on legacy applications that are not being updated on a regular basis. However, what if Betty wants the full desktop experience instead of individual application instances? In this case, IT can assign a Windows 2012 R2 desktop to her that multiple other users share at the same time. Technically, this is referred to as desktop virtualization; however, in the context of Citrix and Microsoft, it is accomplished by the same product suite—Citrix XenApp in conjunction with Microsoft Remote Desktop Services (formerly known as Terminal Services).