|Image: photostock / FreeDigitalPhotos.net|
That rather straightforward requirement is actually pretty difficult to satisfy because of the variety of operating systems on which the application may be running, the fact that there may be several versions of the application to support, etc.
One step in the right direction is to use virtual machines.
Many organizations use a library of virtual machines to quickly instantiate software versions in different environments. Unfortunately, for non-trivial applications that aren't easily upgraded and that can run on various platforms and whose behavior depends on the values of key configuration options, the number of combinations quickly becomes un-manageable.
The optimal solution resides in combinating virtualization, which is great for storing operating system types & versions, with on-demand instant deployment. Besides providing a near-optimal replication of field conditions, this method also gives you quick answers to questions such as "does the latest version fix the issue?" or "is this issue windows-specific or does it also occur on linux?"
A software deployment and configuration management tool such as KwateeSDCM can instantiate the precise software build used by a customer and deploy it on physical or virtual servers in a matter of minutes. Developers can deploy the customer's configuration with an appropriate debug build and at the end of the process, you can deploy the maintenance release candidate to validate the fix before sending it to the customer.