Web Services: what is "success" and how do we get there?
Patrick Logan wonders what I'm referring to when I use the
word success
in this paragraph from What WS-* Got Wrong:
From the beginning, WS-* has been approached incorrectly. The approach that we're advocating is to first embrace and understand existing web architecture and then to gradually enhance (constrain) it to meet the needs of new requirements. We advocate this not because we think it's a better way to be successful, we think it's the only way to be successful.
That's some claim! Is "success" even defined in this case? -Patrick
Success
is the widespread adoption of some form of interoperable
communications between coordinated and uncoordinated machine agents over
large network bodies.
What I was trying to say here is that my beef with WS-* has less to do with architectural and technical issues and more to do with pragmatism and practicality. I'm fully aware that these technologies could be adopted and would work more or less as specified. My problem is that WS-* won't be adopted in any significant way because it does not exhibit the traits necessary for a technology to be adopted on a large scale.
If someone personally coordinated 200 people in various organizations, I'm sure they could implement solutions on top of WS-* given a long enough time-frame. If 200 people are working separately, and are left to their own devices, in a more organic, web-like environment, WS-* has much less chance of being used successfully.
I see REST vs WS-* as a simple case of worse is better (except in many ways I think REST is the more technically correct so bonus points there). It does exhibit the traits required for technology to be widely adopted and what's more, it already has been widely adopted.
What WS-* got wrong
Mark Baker brings up an important aspect of the WS-* vs. REST situation that I've been hoping to speak about myself:
Yes, absolutey, we'll need the capabilities that the WS-* stack provides (for the most part). But do we need the WS-* stack itself to provide those capabilities? I'm certainly all for trying to reuse existing specs where that makes sense. The issue though, is that with most of them, they explicitly or implicitly require disregarding a key constraints of REST, disrespecting Web architecture, or both. WSDL's probably the poster child for this, as its raison d'etre is primarily to encourage rejection of REST's uniform interface.
Right. The problem with WS-* isn't that its trying to solve the wrong problems or that nothing valuable has been produced. The problem is the general disregard for existing web architecture. WS-* tried to take a revolutionary approach to something that required only incremental improvement. HTTP and URIs were treated as legacy technology that would provide a quick and dirty mechanism for bootstrapping this special next generation of web technology.
The REST advocates' criticism of WS-* generally comes off as an attack on technology or architecture but what really pisses the REST people off is the WS-* approach. From the beginning, WS-* has been approached incorrectly. The approach that we're advocating is to first embrace and understand existing web architecture and then to gradually enhance (constrain) it to meet the needs of new requirements. We advocate this not because we think it's a better way to be successful, we think it's the only way to be successful.
An example of the approach we're advocating is Bill de hÓra's recent proposal for reliable messaging over HTTP, (HTTPLR). The difference between the HTTPLR approach and the WS-ReliableMessaging approach is that Bill's proposal builds on simple proven web architecture without requiring additional apparatus.
Anyway, what we need to learn from this is that most successful technologies aren't successful on accident. HTTP and URIs were generally understood only at a very technical / bits-on-the-wire level -- the RFCs existed but Roy Fielding's architectural description came much later and I think it hurt us. We didn't understand how HTTP and URIs formed an overall architecture and how vital that architecture was to the success of the web. If the larger technical community had had an architectural understanding of the web, we might not be in such a mess.
What many of us are now wondering (and have been wondering for some time) is how much longer WS-* is going to continue down a path of incompatibility with web architecture and whether the work that's in progress or that has been completed by WS-* can be reconciled to work under the constraints of web architecture. The feeling I get is that a lot of the REST advocates feel so spited from years of being ignored that they would rather sit back and watch the WS-Building burn to the ground and build from scratch, which is unfortunate for everyone really.
Roots of the REST/SOAP Debate
Jonathon Schwartz on WS-Mess
I think Jonathon Schwartz (President/COO, Sun Microsystems) just joined the loyal WS opposition:
5. Web services may collapse under its own weight.
No one at the conference said this. Those are my words. I'm beginning to feel that all the disparate web service specs and fragmented standards activities are way out of control. Want proof? Ask one of your IT folks to define web services. Ask two others. They won't match. We asked folks around the room - it was pretty grim. It's either got to be simplified, or radically rethought.
As you know, I also believe simplicity and volume always win - and that today's web services initiatives are in danger of vastly overcomplicating a very simple (really simple) solution.
What's been apparent to those in the trenches for the past year or two is finally starting to find its way up the chain of command.
Show Me the Code
WS-Sandwich
So there's buzz around some new quasi-Open Source
MQSeries1 clone named AMQ. Supposedly, this
thing is going to be used for Web Services
and Service Oriented
Architectures (SOA) in the financial industry initially but then grow
horizontally. The idea being that message queuing provides a lot of the
functionality not directly handed to you by HTTP, like reliable delivery,
publish/subscribe, multiple subscribers, etc.
The article was kind of weird though because some of it doesn't make any sense:
Not only has AMQ drawn the participation of several banks, but also companies such as Red Hat Inc., Novell Inc. and Sun Microsystems Inc. are considering building AMQ into the kernels of Red Hat Enterprise Linux, SuSE Linux and Solaris, respectively, Davies said.
Wtf? No one is building message queuing functionality into the kernel, bro. That's user-land stuff.
Although Davies said he is an avowed Java aficionado and a supporter of the Java Message Service API, he said JMS "fails on the non-Java side as a transport mechanism."
That's like saying JDBC sucks at indexing my tables
. JMS is a
standard Java interface that various message queuing implementations
implement so that coders don't have to write to vendor specific
APIs. There's no transport mechanism
involved. If AMQ is truly a
MQSeries clone, it will have a JMS implementation wrapped around it within a
month. Maybe the original intent was to say that no existing F/OSS MQ
implementations have open wire formats? Or something?
I think what this article may have actually been trying to say (although we may never know because it is so full of hallow buzzwords) is something like the following:
We, the financial industry, hate proprietary shit.
We are tired of waiting around for you WS and SOA folks to actually produce something we can use.
We just want a non-proprietary MQSeries that we can use over the internet.
There are no open protocols for message queuing and, like we said, we need message queuing. Don't even start with that abstracting non-functional concerns crap. We need message queuing, period.
We have developed an
open
protocol for message queuing. We've done this, somewhat mysteriously, behind closed doors.We've implemented this open protocol in C and C++ and we're going to make these implementations available under some kind of open license.
We're going to call this
Web Services
andSOA
because that's what my boss' boss said he wanted and since none of you people can tell me what any of this stuff is, I don't think you can say it's not what we've built.
It seems reasonable to believe that all we're looking at here is an internet
friendly protocol and app for chucking messages around in a secure manner
which, to be honest, is probably all that's needed. Except it seems to be having an
identity crises because it's talking about Web Services
and we all
know by now that Web = HTTP/URIs and AMQ will likely use neither.
REST is already eating one half of the WS-Sandwich on the web with WS-* retreating to Enterprise Level
tasks. I don't think it's impossible to
imagine a not-to-distant future where ad-hoc message formats pop up and
start flying over this AMQ thing to eventually eat the other half of the
WS-Sandwich.
WS-Crust anyone?
Footnotes
1. I don't care that they rebranded it WebSphere MQ
. It's
MQSeries... Shut-up.
Yahoo! Launches REST-based Web Services
Yahoo! launched a Web Services interface today. I'm gushing with joy over their decision to follow proven web architecture and select a simple REST model over a more complex WS-* model. Let's take a look at an item pulled from their FAQ:
Q: Does Yahoo! plan to support SOAP?
Not at this time. We may provide SOAP interfaces in the future, if there is significant demand. We believe REST has a lower barrier to entry, is easier to use than SOAP, and is entirely sufficient for these services.
Get used to that answer. You won't ever hear it from the evil tool vendors but you can be damn sure you'll be hearing it from the smart service providers that really are looking to court developers.
Also, it was extremely cool to serendipitously stumble across mine own How I explained REST to my wife article after passing from Yahoo!'s Constructing REST Requests page to Wikipedia's REST page.
SOAP is Comatose But Not Officially Dead!
The Tool Vendor's Dilemma
Bill de hÓra describes the integrator's dilemma (also
known as, WS-* vs. REST
).
If dirt simple equates to good growth and better profits, then the missed opportunity arises when simple and simplistic are conflated. When the WS contingent are looking at the REST and syndication crowd and saying more or less, 'here's a nickel kid', they may want to stop and take a second look at what the kid is doing with that nickel.
I thought that was great. I suggest reading the whole piece. Bill's super smart.
The WS-* vs. REST thing is starting to heat up again due largely to James Governer's SOAP is boring, wake up Big Vendors or get niched piece last week. This led to the discussion at the beginning of Bill's post on whether Microsoft is ignoring developer demand for REST tools. I have a sinister theory on this (but not MS in particular) that I've been hanging on to for a while so let's just have at it. Bill has provided the voice of reason and I don't have anything to add so I'll just follow up with some good old fashioned religious rambling.
These are blogs, right? The last time I read the blogger's handbook, we were encouraged to make unsubstantiated claims about the intentions of others (especially big companies and industry cartels) without any real evidence, so here we go...
SOAP is boring, wake up Big Vendors or get niched
How I explained REST to my wife...
Some days the Powerbook gets more attention than the wife and so she
snoops over my shoulder and starts asking a bunch of questions about
whatever is on the screen. She doesn't really care, this is just the
cue to shift my attention over to her. I usually do just that and say
something like, Oh, this is some interesting stuff but nothing you
would care about.
But on this day I decided that I would play along a bit and see how far I could take her into my world before she ran away screaming in terror.
The Restful Web
Adam Bosworth, Sloppy KISSes, and WS-Mess
About two months ago, I linked to a tiny little paragraph Adam Bosworth wrote at the end of a completely unrelated weblog entry, where he mentions that he had been trying to justify all of the WS-Complexity when simple XML over HTTP works so well. People have been proposing that simple XML over HTTP hits the 80/20 for awhile and it's beginning to catch on but today might have been a watershed event for the Loyal WS-Opposition. Adam evidently thought about this stuff really hard over the past two months and has just published the transcript of a brilliant talk he gave at ISCOC04 where he emphasizes simplicity and organicness over complexity and cathedral building in the Web Services space. Herewith some notes and speculation on What It All Might Mean.
Showing Off