All development cycles revolve around the creation of software from a set of client requirements, testing to see if these requirements are met, and deploying the solution in a production environment, so a client can use the developed application.
In a typical non-virtualised development environment, code is developed on desktops and changes are synchronised to a content repository, be it GIT, CVS or Team Server. The risk in using desktops as a development platform is that a desktop can easily become corrupt, be infected by malware/viruses or sustain physical damage in an unmanaged physical environment.
On the other hand, if a development environment is virtualised, it can be controlled to a greater degree, and backed up more easily than an environment facilitated by a general purpose desktop.
Virtualisation offers many other benefits to the development process:
- Software releases – Prior to incremental software releases a snapshot can be taken of the virtual machine. Should the release fail to work as expected, the virtual machine can be rolled back to the last known good state, within minutes.
- Software patching – Let imagine its patch Tuesday and as normal a major vendor has released critical patches. The criticality of these patches dictates that they should be installed urgently. Deploying these patches in a non-virtualised environment you run the risk of deploying the patch and breaking your development environment. In a virtualised environment, cloning the existing environment into a duplicate environment and then deploying the patches and testing is by far a safer way of rolling out patches.
- Bug testing – If a client has an issue with their production environment (that is hosted and virtualised), a clone of the production environment can be taken (thereby creating an exact copy of the environment that has the bug). From this a developer can diagnose the issue without impacting on the client’s production environment.
In part 2 learn more about virtualisation's benefits to software testing and deployment