The concept of virtualization has been rightly adopted and accepted in the software development community. It provides faster development and test mechanisms by creating development and test environments rapidly. The most commonly used technology is VMware, which enables multiple users to run on different operating systems, versions and instances. Most of the software development giants adopt a virtualization approach by first adopting the software virtualization technique and then gradually moving toward hardware virtualization.

Types of Virtualization in Software and Hardware Environments

From an end-user perspective, the resource seems to be a single resource, no matter what type of virtualization technique is used on the back end. The concept of virtualization can be adopted during any phase of software development. Overall, there are several types of virtualization.

Server Virtualization

In this process, server resources are abstracted from end users. This helps to divide a single physical server into multiple virtual environments. These virtual environments are called virtual private servers, or guests. The most commonly used server virtualization techniques are:
  • Hardware Virtualization: This consists of a hypervisor, which creates one or multiple virtual machines by emulating a hardware environment. The hypervisor also keeps track of the guest operating systems.

  • Paravirtualization: In paravirtualization, the hypervisor resides within the hardware, contrary to hardware virtualization where the hypervisor is abstracted from the underlying computer systems.

  • Virtualization Players: Virtual players provide end-to-end hardware virtualization to the guest operating systems. These virtual players have different hardware attached to the host.

  • Operating System Level Virtualization: In this model, we have a host that runs a single operating system kernel and exports the operating system functionality to each of the guest operating systems.

Network virtualization

In network virtualization, hardware resources, software network resources and network functionality are combined into a single software administration entity called a virtual network. In this category, we can configure and create a network on the fly.

Storage Virtualization

In this type of virtualization, the logical and the physical location of information is separated, making the information more readily available for business applications. Storage virtualization has the following implementations:

  • Host-Based Virtualization: In this type of implementation, a software layer resides on top of the physical device layer. This software layer is responsible for processing I/O requests and redirects these requests to the specific physical device.

  • Storage Device Based Virtualization: This enables the combination of multiple physical storage disks in a single array, which can then be divided into different volumes of different sizes based on the requirements. Storage-based virtualization techniques provide many benefits. The most important ones are:

  • Network-Based Virtualization: In this category, a storage computer is connected to a computer network, which provides data access to multiple clients.

Input/Output Virtualization

In input/output virtualization, we have a simplified I/O enterprise environment that abstracts the upper layer protocols from the physical connections. By abstracting the upper layer protocols from physical connections, this category of virtualization provides better flexibility and faster provisioning when compared to traditional NIC and HBA card architectures.

Client Virtualization

In this category of virtualization, a user's entire PC environment executes on a shared server or dedicated blade client in the data center with the graphical display output to a remote access device. This approach has several advantages, such as:

  • Higher data security
  • Easier manageability
  • Decreased end-user downtime
  • Business continuity

This category of virtualization can be further classified into:

Advantages of Virtualization in Software and Hardware Environments

The concept of virtualization comes with an array of advantages. These include:

  • Virtualization allows multiple operating systems and applications to reside on a single computer.
  • Virtualization provides consolidated hardware to achieve higher productivity from fewer servers.
  • Virtualization can reduce IT costs by up to 50%.
  • Virtualization provides a simple IT infrastructure with very low maintenance.
  • Virtualization allows for the deployment of new applications much more quickly than in non-virtual environments.
  • Virtualization makes 80% server use possible.
  • Virtualization helps to reduce the number of hardware resources at a ratio of 10:1 or even better in some cases.
  • Virtualization ensures an environment that is robust, affordable and available all the time.

Virtualization in Software Development

Virtualization enhances the software development process in the following manner:

  • Server Consolidation: Using virtualization we can achieve 10:1 virtual-to-physical server consolidation. In other words, one single computer can run up to 10 server applications, which previously required 10 physical computers with unique operating systems installed. It also enables optimized server utilization where legacy software can maintain old operating systems while the new applications can run on virtual environments, such as VMware.

  • Testing and Development: Using virtualization, we can have rapid deployment by isolating the application in a known and controlled environment. Unknown and unwanted elements, such as mixed libraries caused by numerous installs, are eliminated in this process. Recovery from severe crashes, which requires hours of re-installation, is carried out in moments by simply copying the virtual image.

  • Dynamic Load Balancing: Because workloads vary from one server to another, virtualization allows us to move the virtual machines that are overutilized to the underutilized servers. This is called dynamic load balancing, and it creates efficient utilization of server resources.

  • Disaster Recovery: This is a critical component for any IT infrastructure as a system crash can have a huge economic impact on the organization. Virtualization technology enables us to have a virtual image on a machine to be instantly re-imaged on another server if any of the server nodes crash.

  • Virtual Desktops or VDIs: A multi-location development environment is now a well accepted and widely used process in the IT industry. This reduces costs in the following manner:
    • Travel cost of resources
    • Desktop footprints
    • Hardware expenditure

  • Improved System Reliability and Security: Virtualization of systems helps us to prevent system crashes, which occur because of memory corruption caused by software like device drivers.
We have discussed different aspects of virtualization in software and hardware environments. These features are useful for both software development and hardware optimization. Different software/hardware vendors are also developing multiple virtualization products and tools to facilitate software development in virtual environments. Virtualization is developing new features each and every day, many of which promise to make software development faster, easier and less expensive.