Archive for December 15th, 2006

As we all know, there's an ongoing debate across mailing lists and the blogosphere about REST versus WS-*.

One of the key areas of discussion comes down to the assertion that only the web-technologies (as favoured by REST) can provide internet scale solutions. But does this really stand up?

The web is when all distilled a pile of cross-linked, navigable information with a standard set of operations. The thing is that these standard operations whilst apparently simple aren't simple come implementation time. This is because these simple operations against resources actually map down to a whole series of other operations. For example, let's say my Servlet based web-server receives a POST of some description. Some servlet must go away and perform the relevant associated operations, tweak a database, write a message to a queue etc to get some work done.

Thus, somewhere, at some point, your systems will have to do some hard work and that work must be made to scale. That is to say, you must for example, have scalable, transactional data-storage.

So then, Enterprises don't just need web-scale, they need web-site scale. That is to say, they must scale their internal systems to support the load they are placed under at the web-site.

Thus the question remains - how do we scale our services? And as demonstrated by the likes of Google and Amazon, the answer is not about REST it's about architecting systems that support horizontal scaling. Just check out this recent slide set from Dan Pritchett of eBay which, incidentally uses J2EE etc (it's also worth paying attention to how they scale their databases).

So am I anti REST? No, but I'm not pro either. REST has some admirable traits such as simplicity etc but those properties are generic targets we should all be striving for in our designs. And I think it's safe to say that few of those generic design centres have been a focus for WS-*. But for me, the real problem with the whole WS-* effort is that we haven't got enough distilled experience to:

  1. Determine what standards if any, need creating.
  2. Determine what the real problems and the optimal solutions might be so that we can standardize.

Experience comes first, then standards follow - not for the first time, our industry has tried to do it the other way around.

In summary, when comparing REST and WS-*, I don't think the web-scale argument really stands up as a justification for choosing one way or the other. But from a purist perspective, one can't help but notice that one of them seems to hit a lot more of the “right” design buttons than the other.

Tired of your job? Need to hire developers? Visit DZone Jobs: great people, great opportunities.

Comments Comments Off

Disclaimer: This is a personal blog. The views and opinions expressed here represent my own and not those of the people, institutions or organisations that I may or may not be related with unless stated explicitly.