The RESTless Machine…

The simplicity of REST in the integration landscape is a tantalising hook when you look back over the challenges faced with a traditional business process centric approach to Enterprise SOA based on mainstream technology options such as  WS*/SOAP/JMS/MQ/£££/$$$.  The REST approach promotes a brutally simplistic alignment between resources and the web, revolving around the capabilities of the HTTP protocol, much of them undiscovered within the Enterprise. In my book, brutally simplistic is GOOD where elegantly complex makes great presentation material  during pre-sales but actually dead in reality.

 

In all honesty when you get past the hype, REST architectural style is just a huge emphasis on reducing the large scale, unconstrained loss of collective common-sense which generally pervades large scale integration undertakings. The element of REST which is actually technology centric – is no more than a reminder that you should start making better use of the largely free stuff that you’ve ignored as you moved higher up the technology food-chain striving to make the R’s in ROI, as your friendly vendors gladly help you to make the case for the I’s in ROI – but disappear at the sharp end….re-appearing in the next financial period with answers to why you failed last year…….!! I may have developed a somewhat jaded perception of such relationships recently…

 

In simple terms REST introduces, or re-affirms the role of the web (as a reference to the largest, most successful integrated application platform ever, ever, ever…) within any given integration scenario, offering mature concepts of addressing, resources, and verbs over the more complex middleware stacks, most of which sit on this same foundation albeit somewhat obscured (no prizes for guessing why…?). I must soften this stance immediately (lest I be branded a shameless turn-coat), given I do believe there are specific areas of an Enterprise SOA which do suit the use of protocols other than HTTP, and where addressing is not essential given the transient nature of some raw information passing between systems as part of the creation of a more meaningful entity which would then be a candidate resource.  That’s a separate thread entirely…

 

Where a RESTful approach to Enterprise Integration does introduce convention, common-sense and uniformity in the concept-thru design stages of any given solution, it also introduces a pretty big issue by it’s very nature of resource-orientation. Where do the resources live?  When we look at the Enterprise as a machine, with many interdependent pieces all moving in (dare I say it…) harmony, then we begin to hit the  resource dependency ‘beast’ square on the nose.  And it’s got a lot of royal badness in it’s armoury waiting to be unleashed on you should you decide to enter the house of pain…

 

So complexity and dependency drive abstraction. Abstraction HIDES dependency. Bingo! Now we hit the issue of REST, resource orientation, abstraction and dependency.  The manifestation of a simple, uniform interface across a set of abstract resources becomes more challenging when the resources (as a set of components) and the representations of those resources (as the combination of outputs across one or more components) become less ‘atomic’.  Where resource representations rely on a composite implementation there is a loss of control – and the platform exposing a RESTful representation needs to be able to manage both synchronous, asynchronous and selective modes of operation, all within the HTTP protocol. This is possible – but is a less well documented dimension to the vast majority of wordage  relating to REST on the web today.

 

All said REST is not a silver bullet, but it does provide a much needed sanity check when considering the full spectrum of integration challenges within an Enterprise SOA transformation, and there are colours within that spectrum which are best suited to a RESTful approach. Some not…the key is to avoid the technology pendulum swinging too far the other way.

 

REST is my friend…..

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: