SOA vs WOA

Last week I was presenting introduction to Pragmatic Software Architecture on a JavaTeam (Slovak Java User Group) event. My presentation went well, but I was surprised by a reaction to a different presentation that described basics of Enterprise Service Bus. One guy stated that SOAP is obsolete technology and that REST is much better. He based that especially on performance advantage of REST.

This is not an isolated statement. I've noticed that especially young engineers tend to prefer REST. These RESTafarians somehow assume that it will save the world, solve all the existing problems in computing starting with integration problems. And with a bit o luck it might even lead to a decent go-playing algorithm. I can understand. I was similarly enthusiastic and short-sighted when I was younger. Now as I'm getting older I'm only short-sighted. And quite skeptic. I don't believe in panacea any more.

Neither SOAP-based SOA nor REST-based WOA are perfect. They both have their problems. Comparing them is like discussing whether a stone or a hammer is better tool for driving in a screw. SOA and WOA are designed for different purposes and different environment. Trying to apply the holy principles of REST in typical enterprise will be a disaster that can be matched only by an attempt to push current SOA to the Internet scale.

The key to a good architecture is appropriateness. There is no one-size-fits-all architecture. Different approaches have different properties and limits. Therefore please stop these religious debates, holy wars and blind defending of sacred positions. We need to improve both SOA and WOA, as neither of them is really usable now. We have a lot to learn from both of them.