While it is truly astonishing what amount of tooling and complexity the slide conveys in order to provide a business service 'PlaceTrade' it is something else that struck me as being really interesting:
It is obvious that, in order to provide a 'PlaceTrade' service, there needs to be implementation details that should not be conveyed to the user of 'PlaceTrade'. (According to Richards, SOA wonderfully solves that problem by using an ESB that translates the business service into an implementation service call. Can't help it...enterprisey comes to mind...)
REST takes a different approach: in a RESTful system, the implementation details that correspond to the translation of 'PlaceTrade' to 'saveTradeOrder()' manifest themselves in the form of the resource model of a service (the actual resources the service chooses to make available). This is a direct consequence of realizing business functionality through a uniform interface.
Interestingly, in a RESTful system, clients are inherently decoupled from the services' resource models - the contract between client and server is expressed solely through hypermedia specifications, independent of any actual service implementation.
In other words: SOA makes use of ESBs to achieve a decoupling that is already inherent in REST per design.
POST /trades
Content-Type: application/trade-order
<trade-order>
....
</trade-order>
Hi Jan,Actually good SOA is decoupled by design too. It's just that ESB-OA isn't a good example of good SOA. Quite the contrary.Jim
ReplyDeleteJim,does that mean one should not use an ESB with SOA? Or does it mean one should not use an ESB in SOA for the kind of decoupling suggested by Richards?Jan
ReplyDelete