Service Virtualization: The Road to Simplification, Page 2
The bigger question for me is the management of that resource. If you are talking about Web services, I would like the option of deploying a service on the fly and still have the older versions of that service running. I like to have a single point of management and provisioning interface to look at what is going on in the enterprise and how my resources are being utilized. DataSynapse's GridServer does exactly that for me. I can mange resources, services, users, and access by those users from a single console. TIBCO's BusinessWorks (BW) does a very similar thing. It can mange my Web services and find out about my resources and access to those resources. BW also does a great job at virtualizing my services, and allows me to deploy Web services seamlessly throughout my enterprise.
Virtualizing a resource can be very useful, but by the same token it might be more than what you need. There are times that it is perfectly fine to be "tied" to the underlying OS or processor architecture. There are times that accessing a database directly is more appealing than having the access managed by a data-grid. The two questions that I mentioned in this section can get you started in figuring out whether virtualization is the way to go or not.
Service Virtualization thru Software
Software virtualization is more common these days than ever before. A Web server can be thought of as a component that virtualizes access to a set of services provided by the back end. Generally speaking, all software virtualization vendors work in the same manner, and differ only in the thing that they are virtualizing.
VMWare, for example, virtualizes the host operating system and the underlying hardware [1: http://www.vmware.com]. You can run your Windows applications inside a Virtual Machine (VM) that is running on a host machine running Linux. Virtualizing the Operating System (OS) is a very powerful and useful thing to do. If you need to provide remote access of local resources within your enterprise to your employees, you can use a product like VMWare to do so as shown in Figure 1.
Figure 1: Providing remote access of local resources within your enterprise to your employees.
In this figure, users gain access through the VPN to a set of VM sessions running on a limited number of boxes located in the Demilitarized Zone (DMZ). Instead of using VPN to gain access to the internal network, each user accesses the internal resources by going thru a VM session. This added layer of security allows you to control users' access and what specifically leaves your network. If a VPN is used to gain access to the network, a user can copy files to his/her personal computer at home, but if a user goes through a VM session to access the network, you can control your VM sessions to disallow illegal copying of confidential documents.
Another great example of service virtualization is the whole idea of Grid and Grid Computing that has risen in the past decade or so. In a product like DataSynpase's GridServer, service virtualization is built-in to the infrastructure. GridServer manager virtualizes the services and where they are ran by controlling a client's access to a service that is part of the Grid. Services are controlled and managed to meet a user's Quality of Service (QoS) requirements such as security or resiliency. Figure 2 better demonstrates the GridServer at work. A user can access the Grid from a remote location (desktop or otherwise) and use the resources available on the Grid. Resource provisioning at runtime is one great example of virtualization provided by the GridServer. Implementation allows your datacenter to be managed from a central location while keeping your resources dispersed across your enterprise, wherever they might be.
Figure 2: Grid manager at work.
The users will not know where a given request is being fulfilled. This allows you to manage utilization and resiliency based on a required QoS for each user.
Each product mentioned focuses on virtualization, but at a different level. One thing to realize is that a number of these technologies can work together harmoniously. VMWare virtualizes at the Operating System level, and GridServer virtualizes the application and the service itself. Creating a farm of available services virtualized by a number of VM sessions will enable you to:
- Meet a higher level of utilization of resources: Adjust the number of VM sessions on the fly to achieve the highest utilization possible
- Meet QoS requirements: Based on the traffic profile and usage, you can adjust the number of service instances running, thus lowering the wait-time to completion
- Reduce datacenter complexity: VM sessions can be copied, duplicated and managed. A single VM image can be used across the datacenter without being affected by the underlying (host machine) infrastructure.
Figure 3 better demonstrates this deployment. Virtualizing a resource allows you to gain control and better manage that resource in the long run. In the short run, you might have to go through the headache of virtualizing that resource, but it is well worth the trouble.
Figure 3: Combining virtualization resources to increase efficiency.
There are lots of things to consider before you undertake a virtualization project. The first thing you need to determine is whether virtualization is the right thing for you, followed quickly by the question of what exactly needs to be virtualized. I gave you a number of ways that you can figure out the answer to both of these questions.
I will be covering the topic of virtualization and how it pertains to technologies such as Grid Computing, SOA, and later down the road, Utility Computing. I will start by covering the basic technologies and methodologies and will get to more detailed and advanced topics as we move forward. Please do not hesitate to contact me if you any questions of comments about the topics covered.
 You will learn how these non-functional requirements make themselves into the SLA, and why the success or failure of your project solely depends on this SLA in a later article.
About the Author
Mr. Sedighi is currently the CTO and founder of SoftModule. SoftModule is a startup company with engineering and development offices in Boston and Tel-Aviv and Sales and Management office in New York. He is also the Chief Architect for SoftModule's Grid Appliance product that has risen from a current need in the market to manage excessive demands of computing power at lower cost.
Before SoftModule, Mr. Sedighi held a Senior Consulting Engineer position at DataSynapse, where he designed and implemented Grid and Distributed Computing fabrics for the Fortune 50. Before DataSynapse, Mr. Sedighi spent a number of years at TIBCO Software where he implemented high-speed messaging solutions for organizations such as the New York Stock Exchange, UBS, Credit Suisse, US Department of Energy, US Department of Defense and many others. Mr Sedighi received his BS in Electrical Engineering and MS in Computer Science, both from Rensselaer Polytechnic Institute.