Blogger: Anne Thomas Manes
Follow me on Twitter: @atmanes
David Linthicum wrote yesterday in ebizq that cloud computing proponents seem to be avoiding the S-Word. Although most people recognize that cloud computing needs to leverage SOA, no one wants to talk about it. As Dave says, "The trouble with architecture is that it's almost as popular as the kid in the classroom that reminds the teacher to assign homework."
I guess it's time for me to be unpopular.
Dave's assessment is spot on: Using cloud computing without a sound architectural context is dangerous. Organizations that blithely run off and deploy applications in the cloud without considering SOA principles will find themselves in worse shape than before.
SOA is not a popular topic these days. (Remember? SOA is Dead. Moldering, rotting corpses are never particularly popular.) But just because it's dead, that doesn't mean we don't need it. And SOA is particularly important to cloud computing.
If you want an application to exhibit cloudy characteristics, the traditional n-tier application architecture that we're all so comfortable with is just not going to cut it. If the application isn't designed to scale, it won't scale any better just because you've deployed it in the cloud. It all comes down to architecture:
- How should you factor the application?
- How do you use resources more efficiently?
- How do you ensure a shared-nothing architecture?
- How do you support multi-tenancy?
- How do you enable dynamic lifecycle management?
- How do you support consumption-based pricing?
- How do you enable your cloudy application to interoperate with your terrestrial applications?
SOA's core design principles (separation of concerns, loose coupling, and encapsulation) are fundamental to cloudy design. We also need to develop new patterns to support cloudy characteristics. And this is a primary focus of our research in 2010.
If you're interested in learning more about application architecture and cloud computing, come join your peers at Catalyst this year. We're meeting in Prague on 19-22 April, and in San Diego on July 26-30.



Interesting that Separation of concerns, Loose coupling and encapsulation are being described as SOA princples. They are principles of any well thought out architecture - SOA or not.
Loose coupling seems to me to be the loser in many of the implementations that I see. Especially what I will call temporal coupling. After all much of what we worry about with coupling is "change that happens to one component affects another." A change in schedule (B wants to process its batch jobs at 5 instead of 6) means a change for A( must now ensure that the information that B needs is available at 5 - what are the implications?)
SOA is no help here. There are useful patterns but just using this broad statement about SOA doesn't hack it for me.
So maybe SOA really is dead, but the old truths of well designed systems live on
Posted by: Seabird20 | March 21, 2010 at 08:22 AM
Thanks for the comment, Chris. In many ways, SOA is really nothing more than a rehash of the same old good design principles we learned 30 years ago. But what's different about SOA is the intent behind the principles and the granularity at which they are applied. I think SOA focuses a lot more on loose coupling than previous architectural styles, too. Given that SOA is still in the doghouse, though, I'm not going to quibble about whether they are SOA principles or just plain good application architecture principles. So perhaps I should have said the "A-Word" rather than the "S-Word" in my title. People don't like "architecture" regardless of what you call it.
Posted by: Anne Thomas Manes | March 21, 2010 at 09:21 AM
I agree w/ you and David but wanted to point out that David isn't right to say this wasn't discussed at Cloud Connect. I said just this in the second part of Wednesday morning's keynote. Slides and notes from the talk are at
http://stage.vambenepe.com/archives/1355
I didn't get a lot of time (had to pack it all in 10 minutes), but doesn't the "SOA" label on the bucket in the last slide say it all? ;-)
BTW, several people approached me after this talk who have the exact same concern and point of view, so there's hope.
http://twitter.com/vambenepe
Posted by: William Vambenepe | March 22, 2010 at 10:40 AM
Hi Anne, Completely agree that cloud computing needs an architecture. But if you want an architecture or set of design principles for the cloud, WOA (Web-Oriented Architecture) is a substyle of SOA that is specifically oriented to cloud computing (given that "cloud architectures" are primarily web-based).
It goes beyond (or at least more specifically applies) the venerable principles of separation of concerns, loose coupling, and encapsulation to include the design principles of REST and the Architecture of the WWW Volume 1, etc. See http://en.wikipedia.org/wiki/Web_Oriented_Architecture
Posted by: Ironick | March 26, 2010 at 03:07 AM