Much of the software that runs businesses today is designed to run on a specific and static hardware setup. Basic operating parameters are hardcoded into the machines, and applications are written with those parameters in mind. Developers assume, as Martin Banks writes today at The Register, “that the operating system they are writing to is stable, that the amount of memory they have available is static, and that the amount of CPU utilization is static.”
Virtualization overturns those assumptions. Indeed, the whole point of virtualization is to replace static physical machines with dynamic virtual ones. By getting rid of hardcoding, you free your machines to be much more flexible and to operate at much higher levels of capacity utilization – to operate as a single system rather than as a bunch of discrete parts.
If companies are to reap the full benefits of virtualization, developers will need to change the way they write code. Banks’s article is a good one for anyone looking to understand the challenges involved. He interviews Sharad Singhal, of HP Labs, who notes that while companies are rushing to embrace virtualization, “many developers are continuing to write code that is not efficient and does not match the environments the code will have to run in. This poses problems for enterprises that are already moving to virtualized environments”:
Being able to exploit the flexibility of virtualization in terms of workload and capacity management is an obvious case in point. “For example,” Singhal said, “such an environment can detect that an application requires more capacity, but the application itself has not been written in a way that can make use of it. On the other hand, capacity may be taken temporarily from an application because a higher priority task requires it, but then that deprived application promptly crashes rather than being able to continue functioning in a degraded manner. What this means is that the development tools we give them are going to have to change over time.”
For some time to come, there’s going to be a tension between virtualized hardware and old-style applications. “Until developers catch up and recognize that they can take advantage of virtualization capabilities,” says Singhal, “the onus is on those doing the virtualization to present to the applications things that look [like] legacy environments.”
The first thing you have to virtualize, in other words, is the past. Only then can you begin to move into the future.