You've been there before. You have been asked to implement a new system (say, electronic publishing or EDC) and you know you can't do it without validating the whole thing.
So, you will need to create three separate environments: Development, Test and Production and make sure that the master validation plan (MVP) gives proper attention to each.
You put together the budget and make sure that hardware and software are ordered to support all three environments. You then finalize the project plan, being very careful to assure that all of the disparate activities required to design, develop, test, validate and roll out the system are done in the most efficient way possible. Not an easy undertaking!
So, is there are better or easier way?
Yes. It's called Virtualization.
Virtualization is a complex field. For the purposes of this article, let's take the easy route and refer to a Wikipedia definition:
"In computing, virtualization is a broad term that refers to the abstraction of computer resources. One useful definition, from independent IT analyst firm Enterprise Management Associates, is 'a technique for hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple logical resources; or it can include making multiple physical resources (such as storage devices or servers) appear as a single logical resource.' "
If you are still confused, let me give the example that could make validation a lot easier and also much less expensive. Instead of buying a server for development, another one for testing/training and yet another for production, just buy one server that can accommodate all three. How? By creating a "virtual" environment for each of these uses.
Here is a nice illustration of this concept from the TechEncyclopedia:
So, just make believe that each virtual machine shown above represents the development, test and production environments.
If set up properly, each user community will have the feeling that they are working on their very own server. More importantly, each environment will be logically separate and not allow "leakage" of data or interactions between the environments.
As you can imagine, there are many advantages in using virtualization during development and also during production. Some of these are:
- Lower hardware and software costs
- Lower environment maintenance costs and effort
- Simplified project planning and execution
- Simplified project logistics and reduction of dependencies
- More accurate and repeatable stress testing results
Of course, there are also some issues to consider:
- Getting the IT organization to commit to supporting virtualization
- Getting the QA organization to accept virtual machines in a setting requiring validation
- Dealing with a potential performance hit
- Properly handling software licensing issues in a virtualized environment
On the provider front, there are many vendors to consider including big players like IBM, HP, Microsoft, Sun Microsystems and VMware. It is also good to consider some newer and smaller players like SWSoft, Virtual Iron Software, Surgient and Trigence.
Surgient, for example, offers solutions that further accelerate the software testing cycle and facilitate staff training as well.
For further information on virtualization, see this recent article in Information Week.
Think about the virtualization alternative when planning your next large application implementation.