Virtual Appliance: Is It a Virtual Machine or an Application?
With the growth of virtualization, a new term “virtual appliance” has been coined for a special type of virtual machines that are used like applications. What does it really mean?
First, a virtual appliance is still a virtual machine. When seen in vSphere Client, the virtual appliance does not look much different from other typical virtual machines. Secondly, the functionality of the virtual machine is limited to that of an application. More often than not, the virtual machine is installed with one application. Because of this, the underlying OS is stripped down only to the minimum required to support that application. This type of OS is also called Just Enough OS (JEOS). All the existence of the JEOS is to support the application in the virtual appliance.
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
Now, is it a VM or an application? It could be either, depending how you look at it. For ESX/vCenter, a virtual appliance is a virtual machine. You can manage it just like any other virtual machine. For application users, it’s an application, a special one that is different from a normal application.
Users’ expectations for an application include:
- Lifecycle management. Users can install an application and delete it with full control. It’s of course within the limitation of the system resources like the size of hard disks. They can also start and stop it.
- A user interface that allows interaction. The user interface could be command line interface, graphical user interface, or web interface that can be rendered in a browser.
- Configuration management. The application should be customizable so that it addresses the uniqueness of different user’s requirement.
- Get a particular type of work done. The nature of the work could vary dramatically, from productivity tools to the scalable server applications. Most applications persist data either to file system or database.
- Interoperability with other applications. One very simple one is the clipboard on almost all the OS that allows pass information between different applications easily.
- Patch and upgrade. When there is a hot fix or new version, it should be easy to upgrade the application.
Given what it is today, the virtual appliance normally has limitation on the user interaction. To save space, the appliance does not include a window system, making interactions not that straight forward. Interoperability wise, there is no simple, standardized way. For patch and upgrade, it’s mostly done within the OS, therefore not as easy as normal applications. Still the appliance is good for server type of applications, for example, a MySQL server, Tomcat server, etc.
In general, a virtual appliance is used like an application but managed like a virtual machine. This hurts usability. To make the virtual appliance widely adopted, we need a better way to manage the virtual appliance in a way closer to the traditional way we manage the applications. It means we need an application centric workspace for users that list all of his virtual appliances, let’s called it AppCenter, as well as a standardized way to manage and the virtual appliances.