coffee, black   no sugar


20060418 Tuesday April 18, 2006
SOA is dead
The end of SOA (did it ever really have a start?) is now offical. Tim Bray is saying aloud what a lot of people have been thinking from the start: it can safely be ignored.

Because (and this is my interpretation): it is not going to work in a scale that it will matter to the world. There is a pattern here and it still awaits some snappy name. Maybe someone like Tim can one day put a good label on it that will stick.

When I learned about web services in 2000 (xmlrpc) it at least had that rpc in its name. But someone must have decided that the name was not innovative enough. Anyway. The point is that UNIX RPC was SOA, CORBA was SOA, DCOM was SOA. I could see nothing new in it. And all SOAs sank like stones to the bottom of ocean when it tried to swim the open seas. Why?

The usual argument goes about simplicity and complexity and being complicated. Web/HTTP is simple, SOA is complicated - so Web wins and SOA dies. Hmm. Could be right, but it does not really tell the story.

SOA, to me, is brittle. You have to work hard, really hard to bring redundancy and graceful degradation to something like SOA. And no one has ever achieved it outside the lab. In a typical SOA application every services failure can potentially bring down the system. And, worse yet, it becomes increasingly difficult in a larger system to predict how the failure of a single service will affect the application as a whole. And if you cannot anticipate the consequences any longer, you are unable to take design measures against them when you build the system.

Besides the difficulties for an individual to keep a mental model of the whole system, you have more and more people designing, extending, administrating and using it. And each one can potentially screw up the whole (or a big part of it). Which means you have an ever increasing probablity that the system will not work. Large numbers kill it.

So, the key property of the web's success is that it degrades gracefully (well, most of the time). And it does that because the building blocks inherently have this property. You do not have to work for it. And that's why it's there.

But what exactly makes a system exhibit that property? And how could one design a system given an acceptable level of brittleness. I don't know but it sure would be fun to find out...

Comments:

Comments are closed for this entry.