# Virtual appliance

A virtual appliance is a pre-configured virtual machine image, ready to run on a hypervisor; virtual appliances are a subset of the broader class of software appliances. Installation of a software appliance on a virtual machine and packaging that into an image creates a virtual appliance. Like software appliances, virtual appliances are intended to eliminate the installation, configuration and maintenance costs associated with running complex stacks of software.
A virtual appliance is not a complete virtual machine platform, but rather a software image containing a software stack designed to run on a virtual machine platform which may be a Type 1 or Type 2 hypervisor.

## File formats

Virtual appliances are provided to the user or customer as files, via either electronic downloads or physical distribution. The file format most commonly used is the Open Virtualization Format (OVF). It may also be distributed as Open Virtual Appliance (OVA), the .ova file format is interchangeable with .ovf. The Distributed Management Task Force (DMTF) publishes the OVF specification documentation. Most virtualization platforms, including those from VMware, Microsoft, Oracle, and Citrix, can install virtual appliances from an OVF file.

## Grid computing

Virtualization solves a key problem in the grid computing arena – namely, the reality that any sufficiently large grid will inevitably consist of a wide variety of heterogeneous hardware and operating system configurations. Adding virtual appliances into the picture allows for extremely rapid provisioning of grid nodes and importantly, cleanly decouples the grid operator from the grid consumer by encapsulating all knowledge of the application within the virtual appliance.

## Infrastructure as a service

Virtual appliances are critical resources in infrastructure as a service cloud computing. The file format of the virtual appliance is the concern of the cloud provider and usually not relevant to the cloud user even though the cloud user may be the owner of the virtual appliance. However, challenges may arise with the transfer of virtual appliance ownership or transfer of virtual appliances between cloud data centers. In this case, virtual appliance copy or export/import features can be used to overcome this problem.

## Software as a service

With the rise of virtualization as a platform for hosted services provision, virtual appliances have come to provide a direct route for traditional on-premises applications to be rapidly redeployed in a software as a service (SaaS) mode – without requiring major application re-architecture for multi-tenancy. By decoupling the hardware and operating system infrastructure provider from the application stack provider, virtual appliances allow economies of scale on the one side to be leveraged by the economy of simplicity on the other. Traditional approaches to SaaS, such as that touted by Salesforce.com, leverage shared infrastructure by forcing massive change and increased complexity on the software stack.
A concrete example of the virtual appliances approach to delivering SaaS is the Amazon Elastic Compute Cloud (EC2)—a grid of Xen hypervisor nodes coupled with the availability of pre-packaged virtual appliances in the Amazon Machine Image format. Amazon EC2 reduces the cost-barrier to the point where it becomes feasible to have each customer of the hosted service provisioned with their own virtual appliance instance(s) rather than forcing them to share common instances. Prior to EC2, single-tenant hosted models were too expensive, leading to the failure of many early ASP offerings.
Furthermore, in contrast to the multi-tenancy approaches to SaaS, a virtual appliance can also be deployed on-premises for customers that need local network access to the running application, or have security requirements that a third-party hosting model does not meet. The underlying virtualization technology also allows for rapid movement of virtual appliances instances between physical execution environments. Traditional approaches to SaaS fix the application in place on the hosted infrastructure.