Virtualization 3.0
Stories Columns Opinions Resources
Preflight builds spread wings for smoother projects
Developers are increasingly turning to preflight builds, allowing them to experiment with ...
|
Coverity creates program to enforce code adherence
The Architecture Analyzer uses mapping technology from the company's Software DNA static a...
|
QCon 2008 features domain-driven development
This year's QCon invites speakers like Eric Evans and Dan North to talk about domain-drive...
|
.NET similarities prove golden for Silverlight
Microsoft has focused on making Silverlight 2 symmetric with the .NET platform, and that h...
|
SOA Watch: New economic realities
In the current economic downturn, agile programming and SOA are attractive options that bu...
|
Integration Watch: A new twist on threads
The key to raising the efficiency of multiprocessors is to shrink the overall workload by ...
|
Integration Watch: The Return of NetRexx?
Java scripting languages are seeing a surge in popularity, with NetRexx looking particular...
|
Windows & .NET Watch: Transaction crowd gets a boost
With multicore chips becoming the standard for processors, the need for a flexible, usable...
|
From the Editors: Election should shake up JCP
Rod Johnson has the right ideas for opening up the Java Community Process, and he may be a...
|
Letters to the Editor: Sun gives REST, SOAP choice
A reader takes issue with a headline on our story about Sun working with REST along with S...
|
Guest View: Be smart and lazy
The optimal solution for problems is the simplest one, so always aim to streamline your ap...
|
Zeichick's Take: From EXEC to EXEC 2 to REXX to NetRexx
Andrew Binstock's column last week, "The Return of NetRexx," brought back some fond memori...
|
Advanced Corda CenterView™ Data Visualization for the BusinessObjects™ Intelligence Platform
Corda Technologies presents a white paper on pervasive BI. The BusinessObjects business in...
|
From Mobile to SOA: A Guide for Optimized Application Deployment
Customer need has driven the emergence of multiple computing tiers. Today’s application d...
|
e-Kit: Web Application Security
Is your network secure? What about your web applications.
If IT security is your top p...
|
Practical tips for saving money on code maintenance
If software design is expensive, well, code maintenance is even more so. When you look...
|
By Andrew Binstock
May 15, 2008 —
Virtualization is taking the IT world by storm. The ability to unchain an operating system and application stack from the underlying hardware platform provides such compelling benefits that some sites are shifting entirely to virtualized infrastructure. Others are moving over non-critical systems—frequently as a pilot project in anticipation of virtualizing more-important systems. While the heavy buzz about virtualization began within the past 18 months, developers quietly have been using the technology for years. In fact, software development was the initial killer app for virtualization.
For a long time, development organizations were the primary target of VMware. During those years, the siren song that wooed developers was the ability to build and test software for a different platform without changing desktops. So, if you were coding C in Microsoft Visual Studio, for example, you could open a virtual machine running Linux, build your code with gcc and run it right away to ensure it compiled and ran correctly—without ever leaving your primary PC.
Likewise, you could back-test applications on earlier versions of Windows as well as on MS-DOS. In short, virtualization made it simpler to validate cross-platform code, with the sole proviso being that the operating systems were all x86-based. (This is a limitation that still characterizes virtualization today: Operating systems in VMs must run on the same chip architecture as the host. Technically, any other combination uses an emulator.)
Today, at sites that have embraced virtualization, software development leverages the technology for far more than simple cross-platform validation. Indeed, leading-edge sites are employing virtualization for development and testing.
The virtualization product to which developers flocked, and made famous, was VMware Workstation. During the years since its launch in 1999, VMware Workstation has steadily improved and added easy-to-program features, some of which will be enhanced in the upcoming version 6.5.
The most important of those features is the ability to take snapshots. At any point while running VMware Workstation, you can capture the entire state of the VM and save it in a file for reuse. There are two types: a linked snapshot, which contains the deltas from a known profile, or a full clone, in which the entire VM and its disk are copied. The latter often can consume multiple gigabytes, while the linked snapshot is much smaller. However, to run the linked snapshot later, the base profile must be available at runtime.
The ability to capture a VM at a specific moment means that when a defect appears, either the tester or the developer can snapshot the VM and save it for later diagnosis. Sites that use that approach frequently enter the description into the defect-tracking system with a link to the VM snapshot, so that the developer assigned to the defect can have all the available information. In that way, the number of irreproducible bugs or those that depend on a specific system configuration is greatly reduced.
Sometimes, though, you also need to capture the events leading up to the defect’s appearance. VMware Workstation lets you record all events in the VM to a data file and then replay the file in the VM. An engineer can go back and forth in time repeating the steps as often as necessary. However, the feature works slowly and generates huge data files. The upcoming VMware Workstation 6.5 promises to optimize this capture process.
Sanctioned platform profiles
The cloning feature is valuable for developers not only for capturing defects but also for starting from a known good configuration. Some IT sites follow a policy in which they publish officially approved configurations for all corporate desktops. Then they create a library of VMs that implements those specific profiles—one each for, say, accountants, knowledge workers, lab technicians, salespeople and manufacturing. By having those profile VMs available, developers can test their software on the same configuration on which the end users rely. In that way, features, performance and scalability all can be tested with full confidence that the software will work correctly when deployed.
This profile integrity is important because developers don’t typically work on systems that are like those of other users. Likewise, the machines on which they verify the code (or, depending on the arrangements at the site, the machines on which QA verifies the code) tend to drift from the standard during testing. Tweaks to the configuration ease installation or rapid testing, the registry (on Windows machines) is modified due to previous installations and configuration files are left on the system. All of these actions represent changes that either can mask defects or create false positives. By pulling a clean copy of the deployment environment each time the code is tested, both developers and QA teams can save themselves considerable effort and ensure a smooth deployment.
Multi-VM configurations
In many situations, profiles and snapshots involve more than a single VM. For example, multi-tier applications frequently include a database server, an application server hosting the logic and a client-side system. Ideally, developers and testers would like to group those three VMs so as to deploy, test and manage them as one entity.
Tools from VMware (VMware Lab Manager), Surgient (VQMS) and VMLogix (LabManager) allow sites to define a group of related machines and save them as a single unit, meaning as a single multi-VM configuration. Those vendors also offer an important component that enables these cloned configurations to be run at the same time as the original. This ability might appear like nothing special, but in fact it shows some magic.
When you save a VM, the saved bits include the MAC and IP addresses. Obviously, running a cloned configuration with the same MAC addresses as the original machines that are still running will cause a flurry of network problems. So, when the configuration is saved, a virtual router is bundled with it. The router performs network address translation so that the configuration retains the original IP and MAC addresses internally, while the rest of the network sees them mapped to other addresses. This benefit is important for servers and databases that used hard-wired IP addresses, as well as for licensing software that employs MAC addresses to identify individual machines.
With configurations now fully operational, code testing can proceed on multiple machines, and cloned configurations can be saved for bug analysis just the way individual VMs are saved in VMware Workstation.
Testing and deploying on servers
The ability to properly save multi-VM configurations confers on developers and testers several powerful new capabilities. First, these folks can create profiles of their enterprise runtime environments. Even if those servers are not virtualized, tools such as VMware’s P2V (physical-to-virtual) can create a virtual machine from a physical host. Run P2V when the machine is being maintained (or over a holiday or weekend), and you can start creating accurate profiles of the data center. Taken together, those profiles can test software prior to deployment, with full confidence that the ultimate environment will not contain unanticipated tweaks that make the software balk.
At large enterprises, this option also helps compliance with regulatory requirements, especially Sarbanes-Oxley. At the main stages in pre-deployment—performance evaluation, scalability measurement and user-acceptance testing—archives of the configuration can be saved as documentation of completed testing. Likewise, if a defect appears in the ultimate deployment to production, the archives can serve a diagnostic purpose: Was the bug always there? If so, why wasn’t it discovered during final testing?
Scalability testing
One of the great challenges of testing software without virtualization is identifying how an application would work when asked to scale significantly or to operate in resource-constrained environments. Even though the IT department might ask developers to code to certain user platform profiles, when a given program runs, the machine might have far less memory or bandwidth than the profile specifies. This is especially true with “power users,” who might have multiple large applications operating when the program is run.
One convenient way to test constrained behavior is to use a VM and lower its RAM until the point of failure. On most VMs, adjusting runtime RAM is simple. Figure 1 shows a dialog for reducing available memory on a VM in Microsoft VirtualPC 2007. This dialog also enables as many as four network adapters and permits specification of display resolution—all features that might be of interest when testing performance and capacity.

This hardware adjustability is also useful when evaluating software for purchase: What are the minimum resources required, and what happens to the software if the limits are breached? Does it hang? Will it corrupt data?
If you possibly can use virtualization in your development and test environments, the benefits it confers are truly significant.
Virtualization expert Andrew Binstock is the IntegrationWatch columnist for SD Times.
Related Search Term(s): Virtualization
Share this link: http://www.sdtimes.com/link/32079