Pages

Tuesday, February 08, 2011

Benefits of Virtualization During the Build Phase

Benefits of Virtualization During the Build Phase
by David Russell, NeoFusion

Virtualization is the process of working with a virtual development environment that includes a self-contained operating system, application server, and database among other components, which can be opened and manipulated within a running operating system.  Commonly known as an image, it represents a snapshot of a complex development environment that can be managed on a developer’s laptop without having to go through the hassle of manually installing and configuring all of the necessary software.  The developer simply opens the image, and can start working in the environment immediately, completely bypassing the actual client environment.

Images can be extremely powerful, as it distances the developer from many of the time wasting interactions that take place when using an environment that is shared by potentially dozens of people.  During the build phase, it is standard to expect this lost time to be absorbed by developers, making tight deadlines even tighter.  The ability to regain any time during the build phase will contribute directly to the quality of the design and build, as well as reduce the additional hours of overtime needed to meet challenging deadlines.  We will cover in the next sections specific advantages that an image can provide.

Removal of System and Network Dependencies
Working in an image that contains a fully functioning environment avoids the need to ever interact with a shared server, network, and network database and all the problems that come with that.  This means no more delays due to the server being bogged down, networks that have slowed to a crawl, or databases that have gone down.  For anyone who has worked on development environments at 3am when the server goes down, this is monumental.

Work Anywhere, Anytime
Virtualization means that productivity is no longer tied to physically being on-site, or being tied to a client’s VPN while working remotely.  VPN access alone can be a serious issue, as many companies are reserved in providing VPN access to contractors.  Even when it is provided, it can be slow or provide limited access due to network issues, significantly impacting the ability to be fully productive while being remote.  Virtualization allows a consultant to work completely independently anywhere, including in a different time-zone, on an airplane, or in an airport while waiting for a delayed flight, giving the chance to claw back more time that was previously unavailable for productive work.

No Blocks from IT to Fix Environment Problems
With a confirmed working environment in the initial image, any environment issues that occur that cannot be quickly resolved through basic troubleshooting can be simply resolved by extracting the latest code base from the problematic environment and importing it back into a fresh copy of the initial image.  The alternatives are time consuming: either spend hours troubleshooting an environment that you may not be an expert in, or create a dependency on IT to make time to troubleshoot the environment.  The second scenario is even more problematic if the developer is remote, and even worse if they are working remotely in a non-optimal time zone.  Being able to revert to a stable image removes the need for this dependency on IT and the time and effort to arrange for their time.

No Blocks from Other Developers Integrating Changes
One of the key benefits of working in an image is that you are the only person working in that environment.  As a result, there is no concern over other developers making changes that would de-stabilize your environment.  Put another way, there is no worry of another developer putting in bad code, then going home for the night, leaving you to spend time to either debug code that you don’t understand, backing out the changes, or trying to track down the person who made the changes in order to figure out how to fix it.  In the same vein, some of the most frustrating issues to troubleshoot are when another developer modifies database data that you aren’t even aware of.  This loss of countless hours can be avoided as no other developers can modify your image while you are in it, allowing you to completely focus on hard development.

Work Incrementally Without Breaking Others
Knowing that others will not be making changes to your environment, and that you will not be messing up anyone else by committing changes, allows you to develop code in a more incremental approach.  This allows the developer to work and test at their optimal speed, without the worry that the changes made will de-stabilize the environment and prevent others from working.  Being able to check in code incrementally allows testing at a more granular level, without the need to make all of the changes at once before checking them in.

Integrate with Real Data Instead of Simulating Data
An effective image should not only contain a fully functioning database, but also include a subset of customer data has been imported into this database allowing integration with real data.  The alternative would be to either work with the on-site environment and all of the related dependencies and issues (as discussed earlier), or to build standalone and to simulate data while testing components.  Data simulation or “dummying up” data, does not remove the need for testing with real data, but adds an unnecessary additional step.  Testing directly with real data removes the need to perform any data simulation, while performing the important task of data integration early in the build process.

Listed above are a few of the many advantages of working in a virtualized environment.  Not only does it provide an effective means to work remotely, but saves precious time during the build phase by eliminating key environment issues and the associated time needed to resolve them.