Engineering for Serendipity

REST is not enough. 

I just read Steve Vinoski's article "Serendipitous Reuse?" in IEEE Internet Computing magazine.  He makes a great case for why REST is the best approach for integration through the concept of serendipitous reuse.  The goal being to engineer the simplest useful interface for services, which allows the greatest possible opportunities for reuse.  By creating opportunities, then reuse can occur.

Saying "REST is sufficient for enterprise integration" is like saying "TCP/IP is sufficient for sending email."  Yep.  TCP/IP is great, but without SMTP, it is only part of the stack.  Just like internet-scale e-mail requires more than just TCP/IP, Enterprise integration requires more than REST.    Sure, it's part of the stack, and a good thing, but REST doesn't provide a sufficient level of harmony to achieve enterprise integration.

Don't get me wrong.  I love REST. Integration based on REST gives you a great way to share some basic operations and minimize coupling on the operation, but coupling exists in data as well.  Decoupling on the operation is step 1, but without similar decoupling in the data, is a partial answer.

Without a uniform interface for the information, integration based on REST will allow the sharing of operations, but not information.  In short: If you stop at REST, the stack is incomplete.

The missing part is a consistent set of information semantics.  A key part of my push for a shared global integration model is precisely this: information identification standards and the semantics around how information can be used. 

Stack

SOA without an information model fails.  I've said that many times. 

REST, without an integration model, is no better.  It is certainly no silver bullet. 

[note: edited: I fixed the reference to the source.  Steve's article was published in Internet Computing Magazine.]

[note: based on feedback, I've clarified some of the text of this post.]