Each installment of Innovations within reach features new information and discussions on topics related to emerging technologies, from both developer and practitioner standpoints, plus behind-the-scenes looks at leading edge IBM® WebSphere® products.
What’s the first word that comes to mind when you hear the term cloud computing?
Would it be elasticity? Maybe usage-based billing or self-service? None of these would be surprising, as they are certainly all associated with the cloud computing paradigm. But the word most likely to come up a majority of the time would be virtualization.
A quick look in the Merriam-Webster online dictionary provides four different definitions of virtualization’s root word, virtual. The most pertinent entry for our purposes defines virtual as "being on or simulated on a computer or computer network." Often when we talk about virtualization in the world of IT, we are simply referring to some layer of abstraction between a real resource (such as a processor on a server) and the consumer of that resource (such as an application running on the server). To say the least, the definition and generally agreed-upon understanding of the term virtualization leave the door open for its use in many different contexts. In fact, I would say that with the rise of cloud computing, the term virtualization is about as overloaded as the term service. Even better, now just about every provider is offering virtualized services!
To be clear, I have no problem with the use of virtualized or virtualization. I use them quite frequently myself. That said, I also see firsthand how the overloaded meaning of these terms has left many users scratching their heads trying to figure out exactly what it is and what it means to them. More to the point, the users I talk with have two big questions:
- What kinds of virtualization should I adopt?
- What benefits can I expect from those virtualization techniques?
To help answer these questions, I often ask users to list their pain points and explain acceptable resolutions to those pain points. With that information available, it is much easier to identify virtualization approaches that are appropriate for the situation.
Although any company’s pain points probably map to all different facets of IT, I usually talk to teams who are responsible for building, deploying, and managing middleware application environments. In this particular area of IT, it is remarkable to see how common a particular set of pain points is across companies, and even across industries. While the problem manifestation and symptoms almost certainly vary across organizations, the root causes of many problems in middleware application environments usually hold steady. These problems include slow provisioning, inconsistent configuration, variable application availability, non-deterministic application responsiveness, increasing capital and operational costs, and others.
If you deal with application middleware, I would be willing to bet you are familiar with at least one of these pain points. If that is the case, I want to propose two types of virtualization that I have proposed to countless other users: server virtualization and application virtualization.
You mean virtual machines, right?
Let me revise my original question about cloud computing and ask you instead: what’s the first thing that comes to mind when you hear the term virtualization?
From my experience, nearly everyone thinks virtual machine. This is completely understandable as the usage of virtual machines is extremely prevalent. They virtual machines form the foundation of perhaps the most common type of virtualization, which is server virtualization.
Server virtualization is nothing new. After all, it has been around as long as the mainframe, and at this point just about every organization is using it. So, what is server virtualization? At its simplest, it is an abstraction of the server’s physical resources (CPU, memory, storage) from the logical resources presented to consumers. Hypervisors are a common technical enabler of server virtualization. Hypervisors provide a scheduling and mediation layer between guests residing on the server and the server’s physical resources, as shown in Figure 1.
Figure 1. Server virtualization by way of hypervisors
You can find hypervisor capability embedded in the server’s firmware or delivered as software installed on the server. Regardless, the basic outcome of any kind of hypervisor is the same. With the use of hypervisors, you can run multiple guests (virtual machines) on a single piece of hardware. This means you can run multiple instances of a software stack on a single physical machine. The job of the hypervisor is to efficiently dole out access to the server’s physical resources to the multiple guests.
There are many benefits of server virtualization that apply to many different types of environments, including middleware application environments. Primarily, server virtualization enables you to achieve higher resource utilization, thereby helping to reign in the massive server under-utilization common to so many organizations. By running multiple software stack instances on a single machine, you will often get more out of the server than you would as compared to having it host a single software stack. In addition to higher asset utilization, server virtualization can also provide a means to rapid provisioning, lower capital costs, and decreased administrative costs. There is a catch though. To reap these or any other benefits from server virtualization, you must effectively manage its use.
IBM WebSphere CloudBurst™ Appliance enables effective management of server virtualization for your IBM WebSphere Application Server environments. As shown in Figure 2, the appliance focuses on the complete lifecycle of your Web application environment in a virtualized setting.
Figure 2. Effectively managing server virtualization with WebSphere CloudBurst
WebSphere CloudBurst starts by letting you define customized environments that span anywhere from one to multiple virtual machines. It then automates and orchestrates the deployment and configuration of the virtual machines in order to produce a customized WebSphere Application Server environment running on your virtualized servers. Once deployed, you can use the appliance for centralized management and monitoring of your virtualized environment. When you are done with the deployment, you can trigger its deletion from WebSphere CloudBurst and ensure the return of the resources it was using to the larger pool of resources within your organization. This kind of holistic approach to server virtualization is necessary to reap the benefits of the technology without succumbing to the perils of virtual sprawl.
When I talk to users embarking on a private cloud journey, I often point out that server virtualization is really just table stakes. Not to diminish the importance of server virtualization nor the value it provides, but if you are building a private cloud, you will have to go beyond just server virtualization. Specifically, if you are building a private cloud for your middleware application environments, application virtualization will be crucial to your efforts.
At its simplest, application virtualization is the abstraction of the application from its underlying application infrastructure resources, such as application servers and clusters. In turn, this abstraction sets the stage for a more autonomic cloud computing environment. To better understand the benefits of application virtualization, it is helpful to look at a solution that provides the capability. Luckily, I have just such a solution in mind.
IBM WebSphere Virtual Enterprise uses application virtualization to let you build a more dynamic middleware application environment. Most notably, WebSphere Virtual Enterprise lets you define service policies for your applications that indicate run time performance goals. For instance, you might create a service policy for an application that requires a response time of less than two seconds for 95% of requests to the application. WebSphere Virtual Enterprise consumes this service policy and provides autonomic oversight to ensure your applications adhere to these goals.
Figure 3 shows a simplified architecture of a WebSphere Virtual Enterprise environment. Notably, there are two components critical to providing application virtualization capabilities: the on demand router and the dynamic cluster.
Figure 3. Dynamic environments with application virtualization
As requests come into the WebSphere Virtual Enterprise environment, they flow to the on demand router, which is responsible for prioritizing and intelligently routing these requests according to service policies defined by you, the user. The on demand router sends these requests to dynamic clusters, which represent a pool of resource that application servers and application instances can consume. According to service policies and the current state of the system, WebSphere Virtual Enterprise will automatically scale application instances within the dynamic cluster to ensure the fulfillment of the goals expressed in your policies.
In addition to policy-based application scaling, WebSphere Virtual Enterprise provides other autonomic capabilities enabled by the application virtualization capabilities that are core to the product. For instance, you can attach a health policy to your application that directs WebSphere Virtual Enterprise to take automatic corrective action when certain conditions (for example, Java™ heap exhaustion) occur in the runtime. WebSphere Virtual Enterprise can take this corrective action and ensure continuous application availability because of its application virtualization capabilities.
A combination of virtualization approaches
I hope that it is clear now how server virtualization and application virtualization enable a cloud-like approach to your middleware application environments. At this point though, you might be wondering if you these two virtualization approaches are mutually exclusive. The answer is a resounding no! In fact, a combination of both server virtualization and application virtualization provide a number of benefits that you will likely require from your cloud computing environment.
Figure 4. Combining server and application virtualization
As you can see in Figure 4, application and server virtualization deliver distinct benefits with some overlap. In general, though, server virtualization benefits extend to hardware resources while application virtualization benefits extend to application resources. When creating cloud environments for middleware application environments, it is natural to use a combination of both types of virtualization in order to derive benefits for both the hardware resources that make up your cloud and the application resources that reside in your cloud.
In this regard, it is clear that WebSphere CloudBurst Appliance and WebSphere Virtual Enterprise together would be a valuable combination for a cloud computing environment. The Intelligent Management Pack for WebSphere Application Server Hypervisor Edition is an optional add-on for WebSphere Application Server Hypervisor Edition that you can enable in WebSphere CloudBurst. When enabled, you can build and deploy WebSphere Virtual Enterprise patterns from WebSphere CloudBurst into your private cloud. In this way, you can take advantage of the server virtualization benefits of WebSphere CloudBurst and the application virtualization benefits delivered by WebSphere Virtual Enterprise – all from the WebSphere CloudBurst management console.
If you are embarking on the journey to build and operate a cloud computing environment for your middleware application environments, you should closely examine both server and application virtualization techniques. Each delivers tangible benefits, and the combination of the two can be a powerful approach for your cloud. I encourage you to look at WebSphere CloudBurst, WebSphere Virtual Enterprise, and the intersection of the two in the Intelligent Management Pack for WebSphere Application Server Hypervisor Edition. Good luck in the clouds!
- WebSphere CloudBurst Appliance product information
- WebSphere Virtual Enterprise product information
- YouTube: Cloud computing in WebSphere channel
- IBM developerWorks WebSphere