The impact of the cloud on software development
I was asked this week, “Why is the cloud relevant to the people who DCG work with daily?”Â My questioner continued,Â “Surely, DCG is in the business of helping it’s clients improve their software development and the cloud is all about solutions to operational challenges.” Of course, my questioner is right to a large degree but, increasingly, it is becoming clear that some different design, coding and testing practices will be desirable.Â All of these could be triggered by a simple non-functional requirement that the software must be “cloud-compatible” or “cloud-ready.” Put simply, most current applications are not optimized for the cloud or protected from some of the consequences of a virtualized implementation.Â The three biggest issues are:
- data access
- transaction processing
- data access AND transaction processing
The challenge comes form the uncertainty about where physical separation will be introduced in a cloud implementation which utilizes virtualization to take advantage of the next available computer resource (server).Â After years of optimizing our applications for performance, physical separation can introduce new, unexpected delays.Â For example, it is possible, maybe even likely, that the processing server will be a significant physical and network distance from the data store.Â Moreover, if a use case requires access to several different data stores these may not be co-located. The impact on transaction processing rates and transaction reversals in the event of failures (never mind the failures you see to day, think about the timeout implications) is fairly obvious. Of course, you will say, these challenges are relatively easy to handle.Â That maybe true but how many of the applications or products we use today were designed, coded and tested with the cloud in mind? Hence, DCG is interested in finding processes for our clients that can be added to their existing process to help make their software cloud ready.