To SOA or not to SOA, that is the question.

As I just blogged, there are three kinds of people in this world when it comes to listening to music in cars. Similarly, there are three kinds of people when it comes to Service Oriented Architecture ("SOA") adoption:

  1. Conservative / Anti-
  2. Judicious
  3. Rampant(Don't you just love my even-handed labels??? :) )

Before I begin, I'd like to obviously throw myself out there as a #2. Yes, there are cases where SOA and Web services make a LOT of sense, more so than not. Nay-sayers are fooling themselves if they think this a passing fad. Any idea that has this kind of traction will in fact likely NOT go away. Not quietly, at least.

SOAStill, there are many developers who argue that developing as much as possible in original code as services - or the consumption of them - makes great sense for any application in any organization. I just don't see the point if the services don't connect or enable systems that aren't disparate or disconnected enough to merit it. And with that I'll focus my tirade of reasons to be rational about SOA on the #3's.

You should employ SOA if there:

  • will be multiple consumers (of a message or action)
  • is more than a single possible application of the service
  • are no more efficient methods available, balancing the above two points

And you should *consume* messages if:

  • the services already exist or
  • it makes sense (see above) to create the messaging services

Seriously, it's that simple. If you have two boxes in the same data center - using the same NAS - that need to access the same files... well, dude... path of least resistance. If you're dealing with those two servers plus eighteen other consumers at partner sites, then YES! Write it all now!!! What's that? You want to batch load data into an Oracle database for warehousing? DUDE: DROP INDICES, SQLLDR, RECREATE INDICES. No need for a web service to pick up the records. Maybe I'm missing the point entirely, and please do correct me if I'm missing some basic tenet that would make my position pure bunk, but I think the madness needs to stop.

[It's also worth pointing out that Web services, while cool and all, are just one tool in the belt of .NET 3.x with the advent of Windows Communication Foundation (WCF). Even more interesting is hearing MS guys forget that the architecture is a generic and platform-agnostic thing. You do not need any MS technology to just as easily implement Web services. I know, shocking. And the diagram above - minus the UDDI, of course, because who really uses UDDI?? - was like a revelation for one of these cats when I broke the news a month ago.]

There's a breaking point at which the shift in architecture makes sense. It happens to be a pretty low point, but STILL there are those out there who would have us adapting absolutely everything to SOA. Tomorrow, if possible. I don't know about you, but I'd rather dig my eyes out with a spoon than defend the really common-sense position against that. Good thing my floor is usually out of spoons.

0 comments on To SOA or not to SOA, that is the question.