SOA and Cloud
Before we talk about Cloud, I want to quickly review where SOA came from. Most of us who started our IT careers in the 80s and 90s will clearly remember the pre-web Enterprise environment. Of course, so will everyone else - because that legacy is still with us. The typical systems were monolithic, complex applications that were completely self-reliant. Any interfacing with other systems was done through batch dumps. Applications grew and grew and grew into monsters because the only option was to enlarge the application - inter-application connectivity was too complex and unreliable to envisage.
The web changed all that, didn't it? Well actually, no. Many web applications are actually inherently monolithic too. Of course there are plenty of web applications that do communicate well with other systems, but they are still in the minority.
How about Cloud systems? Unfortunately, as I look around at the harbingers of Cloud Computing, many of the applications I see are fundamentally built with very little concern for Enterprise Architecture. The focus has been on elasticity. Elasticity is a great feature, but for many applications it is overkill. However, connectivity, partitioning, separation of concerns, and loose coupling are all key to making applications live and grow. As I have blogged about before, the key to effective applications is to ensure that they are not static but can change and improve and re-focus as the business demands.
My strong belief is that Cloud based systems must be built on SOA and modern Enterprise Architecture principals if they are to be effective. In many ways the issue is this: today's cloud applications are often well-defined, clean, insular applications. That is because the typical messy, interconnected enterprise app simply cannot be built in the cloud today. The data isn't available and so companies looking to create cloud applications tend naturally to avoid those. But over time, as these cloud applications grow and more appear, the interconnectedness with each other and with internal data and applications will grow and we will end up with the twisted balls of spaghetti that we've spent the last 10 years unpicking in the Enterprise.
My advice? Don't do it! Start with a simple but clearly defined SOA/Enterprise Architecture for your Cloud applications and in three years time you can look smugly at your competitors as they struggle to do things you find easy.
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)