The main purpose of IT organizations today is to deliver applications that support business objectives to the end-users in an Enterprise. These applications are delivered in many different ways. There is a lot of talk in the IT world about these application delivery methods and technologies. I find that there is also a lot of misconception when it comes to all the terms. Different technology concepts that address different parts of the total solution are often misinterpreted. In this article I lay out a simplified view of IT application delivery, and I define the different concepts and their interaction points with each other. The point of defining this lexicon is to establish a common baseline for the terminology, and thereby simplify the discussions around application delivery. It is assumed that the reader is already somewhat familiar with the technologies involved, so there are no detailed descriptions of each technology. Products are mentioned mainly as examples to connect back to real environments. The mention of specific vendors is for the sake of examples and does not intend to imply a rating or a preference of any sort.
The Anatomy of an Application
An application can be a standalone entity that typically interacts only with the local OS and device (e.g., word
processing application), or client-server based with the client part being an installed program or a standard program, such as a web browser.
For the client-server based applications there are two separate parts – the client side application (also referred to as the front-end) and the server side back-end.
Application Front-end Delivery Methods
There are a number of ways in which the user can be given access to the user interface of the application, regardless of whether it is a standalone application (like a word processor) or the front-end to a client-server application. The issues of providing this access to the user are the same in both cases – for example, version control, compatibility issues (with the local OS, patch levels, other applications etc.), access control.
The first method is local installation on the desktop OS instance that the user is using. The front-end of the application runs on the local device and in case of a client/server application the back-end is accessed from a server. This server can be hosted in the local office, company’s datacenter, a provider datacenter or in the cloud.
Next we have server based computing – remote delivery of the client part running on a server (e.g., MS Terminal Services, Citrix XenApp). In this case the front-end part of the application is installed and runs on the server side and only the remote access client is running on the end-point. Note that the end-point in this case can also be a virtual desktop, so that we effectively have virtualization nesting.
Thirdly, there is application virtualization – running an encapsulated instance of the application through streaming, packaging/bubbling (e.g., ThinApp, Citrix Provisioning server). In this case the application is encapsulated into an independent executable that is delivered to the end-point either from the central network or from local storage. There is no installation process. Note that the-end point in this case can also be a virtual desktop, so that we effectively have virtualization nesting.
Finally, we have desktop virtualization – full desktop access to a dedicated instance of desktop OS running in a virtual machine (e.g., Citrix XenDesktop, VMware View). Note that in this case the applications still need to be delivered to the virtual machine that the user is accessing through any of the other three delivery mechanisms.
The important thing to emphasize is that not only are these methods of application delivery not exclusive of each other, but that they each address certain requirements and have their own pros and cons. Most enterprise environments would ideally consist of a mix of these technologies with each application being delivered in a way (or even ways) that make the most effective use of resources while providing the functionality required by the business activity.
Application Back-end Delivery Methods
There are several choices for delivery of the server portion of the client-server based applications. For the purpose of this article, this choice will be limited to discussing the location of the service, without getting into the application architecture. Traditionally, the applications are delivered from servers in a datacenter, either a customer owned datacenter or a service provider datacenter. The access can be over the local network, remotely through a VPN or other secured means, or remotely over an unsecured Internet connection (generally not recommended, although in some cases acceptable). With the cloud computing models gaining popularity this opens up another possible way of delivering server based applications. Note that if the front-end is server hosted then it also becomes possible to host the front-end of the applications in a cloud based environment. This would be the case with all but the local installation models for the application front end, described in the previous section.
In delivering the applications to the business users, all the components of application delivery must be considered and a unified Application Delivery Framework developed that supports multiple mechanisms of application delivery. This framework must ensure that all applications can be delivered in the way that is most appropriate for the user and the application in question. The Application Delivery Framework should also incorporate a decision tree that contains the major decision criteria for mapping application use cases to application delivery methods available in the environment.
(written by Milos Brkic for OnX Enterprise Solutions, 2011)