Wilhelm Röntgen discovered x-rays in 1895 which resulted in a worldwide flurry of excited investigations, speculations and wild claims. The American Institute for Electrical Engineers wrote a couple of years later that “the whole world seems to have been working on it for all this time without having discovered a great deal with respect to it“. At the moment, that sounds a bit like Cloud Computing. We all know about the potential infrastructure flexibility, cost savings, and elastic performance scaling, but the big question remain – how do enterprises with decades of IT infrastructure take advantage of Cloud Computing?
Bernard Golden recently wrote an article about ‘taking an application to the cloud’ versus ‘taking the cloud to the application’ – another way of saying that unless you design your application for the cloud, the application will remain hostage of old style infrastructure constraints. There is little point in elastic infrastructure if the application cannot be ‘stretched’.
The whole Cloud Computing story resembles the Service Oriented Architecture story told a few years back – we had the same promises of business flexibility through services, cost savings through re-use and scaling of our domain constrained applications to true enterprise solutions. We also had the similar concerns with security and governance.
Cloud Computing is based on a set of architectural principles quite different to those of a typical enterprise application. It is one thing to develop a new, small scale application for the cloud – it’s an entirely different thing to attempt moving an existing enterprise application to the cloud. And I suspect the business case for cloud computing quickly evaporates when adding re-engineering costs to improve application ‘elasticility‘.
In the case with SOA, we saw two streams of innovations: One for how to build SOA based solutions, and another for the augmentation of existing enterprise applications to support participation in SOA based solutions. The Software Architect tool bag of Enterprise Application Integration (EAI) design patterns evolved into a set of mature SOA Design Patterns.
Cloud Computing is yet to offer something similar – and especially for building Cloud solutions that leverage existing legacy systems. Microsoft’s Azure Design Patterns is a small start, but the really hard yards for Cloud Computing will be in figuring out how to leverage the cloud without re-engineering your enterprise applications – this is task at hand while Cloud Computing progresses through Gartner‘s Trough of Disillusionment. We’ll need some solid answers before we emerge on the Slope of Enlightenment.