TSSJS DAY 1: Resource Oriented Architecture (ROA)

Sitting in on the ROA talk from Jeremy Deanne at TSSJS. He goes on to say ROA goes beyond WOA and extends the capability of REST.

Resources return a resource representation that is identified by a relative URI provided by a provider.  Using the HTTP PUT, GET, POST and DELETE to perform create, retrieve, update, and delete (CRUD), ROA then can take this same context and use JMS as the transport protocol.  Here we use the property of JMS (relativeURI, Action and JMSReplyTo properties) to provide information to JMS Queue.  Both approaches can consume representations of the resource.  This is the essence of ROA.

Service security authorization can be a privilege relative to a URI.  Set a privilege as such.

Integration through the ESB allows for “governance” in your ROA and audit communication between the endpoint.

Apply EAI patterns to your ROA.  Netkernel is a resource-oriented computing (ROC) platform that Jeremy used to demo.  Netkernel is one choice but you can use Spring and Spring Integration patterns to implement your ROA.

Just a bunch of web services (JBOWS) is not enough!  Results in a spaghetti SOA.  ESB  provides for service provisioning and decouples consumers from service providers and helps you realize ROA.  This allows them to evolve independently over time.  Key patterns are: Service Gateway (proxy to other services/servers), Pipes and Filters (chain of actions on messages that come through), Content Based Routing (spawn off a representation to a bunch of consumers (XML, JSON, transforms, etc.) and Process Manager (Orchestrating long-running transactions such as a workflow to add an employee to an org.).  Some people argue the latter doesn’t necessary belong in and ESB but rather above the ESB.  Hmmm…something to think about.

Key concepts of a ESB: specify a location agnostic of transport protocol, routing defines message path from SP to consumer and transformations which provides consumer-based transformations.  Main benefits integration functionality (pushes integration to the edge of the network as a URI which translates into better service mgt and scalability), complexity reduction (reduces integration complexity for lower TCO) and independent evolution of consumers and service providers by properly decoupling them.

To see a demo on this check-out: http://www.jeremydeane.net/Home/Speaking_Engagements.html.