Pages

Subscribe:

Wednesday, May 25, 2011

Types of Virtualization

Operating System Virtualization -
 The use of OS-level virtualization or partitioning (such as LPARs, VPARs, NPARs,Dynamic System Domains, and so on) in cloud architectures can help solve some of the core security, privacy, and regulatory issues that could otherwise hinder the adoption of cloud computing.For example, OS virtualization such as that provided by Solaris. Containers makes it possible to maintain a one-application-per-server deployment model while simultaneously sharing hardware resources. Solaris Containers isolate software applications and services using software-defined boundaries and allow many private execution environments to be created within a single instance of the Solaris OS. Each environment has its own identity, separate from the underlying hardware, so it behaves as if it’s running on its own system, making consolidation simple, safe, and secure. This makes it possible to reduce the administrative overhead and complexity of managing multiple operating systems and improve utilization at the same time.

Platform Virtualization -
 Platform virtualization allows arbitrary operating systems and resulting application environments to run on a given system. There are two basic models for this system virtualization: full virtualization, or a complete simulation of underlying hardware, and paravirtualization, which offers a “mostly similar” model of the underlying hardware. These are implemented as Type 1 hypervisors, which run directly on hardware, and Type 2 hypervisors, which run on top of a traditional operating system. Each of the top virtualization vendors offers variations of both models. It’s important to realize that there are design and performance trade-offs for any model of system virtualization.Generally, the more abstract the OS is made  from the underlying hardware, the less hardware-specific features can be accessed. Increased OS abstraction can also increase the potential for performance reduction and limitations.

Network Virtualization -
 Load-balancing techniques have been a hot topic in cloud computing because, as the physical and virtual systems within the cloud scale up, so does the complexity of managing the workload that’s performed to deliver the service. Load balancers group multiple servers and services behind virtual IP addresses. They provide resource-based scheduling of service requests and automatic failover when a node fails. While hardware balancers may outperform software-based balancers, their flexibility is always limited. Engineers end up either writing software that interacts with hardware via a suboptimal user interface or using a large number of computers to solve the problem. A significant challenge in cloud computing networking is not just the provisioning of individual virtual network interfaces to a given virtual environment, but also the increasing need of cloud infrastructures to offer a more complicated virtual private datacenter, which provisions a set of different system roles and the logical interconnections between those roles.

Application Virtualization- 
There is also a software angle to “containers” within the cloud. The Web container technology implemented in the cloud greatly impacts developer productivity and flexibility.The Web container is the part of the application server that manages servlets, JavaServerTM Page (JSP) files, and other Web-tier components. But not all Web container technologies are created equal. Apache Tomcat, for example, is a popular open-source Web container technology, but it has limitations for developers who want to go beyond Web-tier applications. If an application needs to use persistence, clustering, failover, messaging, or Enterprise Java Beans (EJBTM), these capabilities have to be added to Tomcat one by one, whereas the GlassFish™ Project provides an integrated collection of Java EE containers that delivers all of these capabilities. Today, most cloud computing offerings concentrate on platform virtualization, and the developer chooses the OS and development platform. But increasingly public clouds and certainly private clouds will offer higher-level development environment programming abstractions. Over time, we might expect the level of abstraction that the developer interfaces with to move gradually upward as more functionality percolates down into the platform.