Let’s talk about a popular technology that is changing the way businesses configure, store, manage, distribute and maintain their software as well as hardware systems. There is an inherent shift from mainframe computing to x86 based systems due to performance enhancements and cost effectiveness. With in-built support for virtualization many companies are adopting the virtual architecture in driving the software needs for their business.
Virtualization is a way of presenting a logical or virtual view of separate environments working independently or together by abstracting applications and components from a system consisting of hardware, software or both. The logical view can be different from the parent system as the virtual systems depend for their existence in terms of form and functionality on core or fundamental components of the parent system. This means any virtual view will piggy-back on the parent application/system to mimic or enhance all or a handful of functions into separate sub-systems customized according to the need and providing benefits like increased performance, scalability, cost effectiveness, maintenance etc.
When we hear the word “Virtualization” we think of VMware or Parallels software that will let you run Windows8/Windows Server 2012/Linux on a Mac OS or on another OS. On enterprise level there are different types of virtualization technologies providing solutions that tackles a specific field of interest or an area and can be customized or activated to work on their own or be integrated to work as part of a system.
Here is a nice little diagram I created to highlight various types of virtualization options that can be implemented to the need.
- Access Virtualization – This type of virtualization allows any device to access and use the application on a common environment without the need to know much about each other. The device will know how to connect to the application system and the application will accept those devices that were setup to connect and utilize the system without any hiccups or issues. An example could be remote devices like a laptop, tablet, think client, POS system, and terminals with different hardware accessing a server that runs an application capable to work with those devices. This helps an organization be independent in deal with changes on the hardware side and preventing to rewrite the entire applications. Say for example a company makes a switch from Android based tablets to iOS based iPad and with access virtualization there is seamless migration and transition in accessing the same applications.
- Application Virtualization – This type of virtualization lets an application to be used on multiple and different systems. These applications would typically use an API or a framework to integrate the application with base systems regardless of their native underlying hardware. There would be some configuration and other customizations while integrating applications on different systems but overall it provides greater flexibility and operating system independence. Different vendor companies developing such software include Microsoft with their Microsoft Application Virtualization or App-V, Citrix with their popular XenApp product and VMware with their ThinApp product. Another type of application virtualization would be similar to porting of legacy applications when older hardware are decommission and not supported.
- Processing Virtualization – This type of virtualization operates at or below the Operating System level. There are different ways processing virtualization can make use of an operating system that is encapsulated to work separately or as part of a system for workload sharing and failover or for linking such systems to distribute data to separate areas. What that means is that one system can be made to appear as if there are many or many systems appear to work as one. There are scenarios where parallel computing is needed for certain set of work while raw GPU is needed to drive some graphics. Processing Virtualization helps dealing with such scenarios by letting Hypervisor or Virtual machine manager handle requests and delegate them to proper virtual system by managing and diverting the resources such process threads, GPU utilization cycles etc where they are needed.
- Network Virtualization – This type of virtualization pertains to dealing with links of system and their availability based on the security setup. Multiple systems can be virtualized to be used by different users based on their access level. For example finance users will have access to the finance virtual system while sales will have access to sales virtual system while both of them being hosted on the same hardware. These systems are set up in network to be made available to their user base.
- Storage Virtualization – This is one of the most common types of virtualization that is being adopted by various companies to manage their growing needs for data storage and access. Cloud based computing has really pushed the storage virtualization into every sector whether its enterprise or general consumer. This type of system where data storage can be dynamically managed by altering their capacity, resources and processing request has helped business with their changing application needs. Cost effectiveness is also a major factor as companies can start with a common server and use it for virtualizing several storage applications to be used across different groups of a company. For example, a server can host virtual database systems like Oracle, SQL Server or Teradata which can be accessed by different applications. The beauty of this setup is that constraints related to capacity, processing power, priority, user management etc. can be eliminated. As need for growing data imparts need to add more storage capacity, newly modules of hard drives can be seamlessly and effortlessly distributed across different virtual database systems or streamlined towards the database that has the greatest need. The same stands for the other way in terms of accessing data through various medium from a common source. On consumer product level, an example would be Dropbox a cloud data storage service where users can start with certain amount of space but can buy more as their needs grow. It beautifully works with any device in accessing the stored data.
- Hardware Assisted Virtualization – This type of virtualization is actually more of a collection of techniques and hardware designed on a much lower level of virtualization. The newer chipsets have Virtualization capability at the hardware level and with related instruction sets featuring directed I/O, Extended Page tables, Rapid Virtualization Indexing, Tagged TLB, security etc. Such system has inherent support for hosting more Virtual machines per server and enables the software to interact more effectively with greater consolidation. Some of the noted capabilities include bypassing the Virtual machine manager or hypervisor in managing the low level instructions for memory management, I/O and hyper threading with compatible processor. Examples of hardware assisted virtualization include AMD-V technology in AMD chipsets and Intel VT in Intel chipsets.