Werner Vogels comments on my argument against reliable messaging. I’m not sure he read it in its entirety though, as he leads off by saying;
I was surprised to read Mark Baker’s statement that he feels there is no need for reliable communication provisions in web-services runtimes.
Which isn’t the case, because I said that HTTP could do with some reliability help. What I’m against is the specific solution of an application-independant reliable messaging layer. There are other ways of achieving the same goals, though at the expense of application protocol neutrality (see below).
I fully understand that some of Werner’s work, and pretty much the whole group communications style of distributed computation, builds upon the reliability-as-a-layer approach. I studied his work, and the work of his group at Cornell under Birman, and even developed code with the Isis toolkit. But GCS doesn’t scale up to the size of system I’m interested in, or that Web services are struggling to be. Perhaps it has a role in the LAN, or in other small group environments though. It’s definitely cool tech.
I’m for “doing reliability” in the application layer, by coordination, with a coordination language in the guise of an application protocol. As I mentioned above, that means disposing of the notion of doing it in a protocol-neutral manner, in so far as application protocols define the application. So basically that means ensuring that when you design an application protocol, it’s able to give you the reliability semantics you need (within the realm of possibility, as we seem to agree on 8-), or can be extended to do so. HTTP is such a protocol for the hypermedia application model. The interesting question is, how general is the hypermedia application model, and is it relevant to your problem? I say, yes, there’s a good chance it is relevant, and it’s certainly relevant for Web services.