Michael Kovacs' photos More of Michael Kovacs' photos
Recommend Me Cable Car Software logo

Friday, April 21, 2006

WS-Deathstar and the complexity tradeoff

A very clever commentary by DHH on the entire WS-* work going on for web services, or is it SOA? Whatever your favorite name for these specs there's no doubt that there's a large amount of complexity there and it seems to me that the folks that need the functionality represented by these specs are larger companies with lots of disparate systems that they'd like to have communicate in a common way as well as have a way to manage them all efficiently. Of course for the small/medium business owner this is all too heavyweight and the opposite end of the spectrum, namely REST, is the way that all of those folks are going. To me the biggest reason for the WS-* stuff to exist is the use cases for management of services as well as to support web services that aren't invoked point to point. I'm not an expert on this topic by any means so I may be simplifying things a bit too much but to me those are the salient points for why you'd need to climb on to the WS-deathstar. For most folks a direct point to point connection to the web service in question over an SSL connection is perfectly fine.

I realize more and more that my beliefs about complexity are in line with the philosophy that's taken with ruby on rails. Several months ago before I was even aware of rails I had the opportunity to speak to some folks at Sun and give some feedback regarding the JDK and provide input into their plans for the JDK's future. At that meeting, when asked what types of things I'd like to see in the future I said that I'd like to see things removed or at least stop adding more stuff. I questioned the merits of including web services as part of the base JDK 6.0 offering (I believe the inclusion stems from the belief that there will be many clients out there that need these APIs to invoke web services.) I said that I thought it was best to make many things add-on libraries, or plugins, so that you keep the core simple. Certainly you can mitigate the issue for web service client needs by having the JRE get the plugins that are needed, but I digress.

What made me think of this explicit scenario with Sun was when I read the comment that the rails team was going to pull the web services support out of rails and make it a plugin. I think that's very smart. They are very conscious of adding things that add value but realize the dangers of allowing it to become too bloated. Keeping a simple, functional core and surfacing features as plugins is a great way of making sure things don't spiral out of control. Of course it becomes tricky to manage what gets added to core to support a given plugin as well as ensure that changes made to the core don't break the set of plugins out there but everything comes with a price. Of course none of this is anything new but it just represents a basic philosophical approach to software. Simplicity. Eclipse does the same thing. It's build entirely on a plugin framework.


Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?