“The life of the developer has just become a lot harder,” said Sharad Singhal, Distinguished Technologist HP Labs, Palo Alto, “and the reason is that the assumptions they make about their environment are not necessarily true any more.”
He was talking about the way that the rush towards virtualised systems infrastructures is changing the ground rules to which developers have historically worked. They assume, for example, 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 utilisation is static. “They are hard-coded into the machine, or at least developers assume that at the start of a job a configuration file will tell them.”
But in a world where virtualisation is the norm all of this is changing and developers will have to learn how to optimise their applications to meet the needs of a constantly shifting environment. For example, code and performance optimisation processes will become far more difficult in a shifting, intangible environment. At the same time, if applications run out of capacity, developers will now be presented with alternatives to simply shedding workload. Now they will have the ability to reach out to the environment to request more capacity, and get it on demand.
According to Singhal, developers face making a transition into an environment built on a new set of capabilities, which he likened to working with a new operating system. In that context, virtualisation is easy to dismiss as just another technology hot-topic that will fade away in time, leaving little trace. But a growing number of enterprises are seriously heading in that direction, and 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 virtualised environments.
Being able to exploit the flexibility of virtualisation 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.”
HP Labs are paying considerable attention to developing technologies and processes that will be required in the infrastructure management area, but in applications it is the company’s partners that are – or should be - working on it. “I am assuming, for example, that when Microsoft starts offering virtual machines that a lot of the Virtual Studio type environments will start recognising that virtual machines exist,” he said. “Developers working in J2EE environments are starting to recognise that virtual environments exist. So these types of capabilities will become available to developers and they will be available inside C libraries and J2EE libraries.”