The Problem Statement:
The are 2 schools of thought around which approach is better, SOA (Service Oriented Architecture) and the RESTful (ROA – Resource Oriented Architecture).
I’ll probably get shot down from a dizzy height for starting up this hotly debated topic but nothing ventured, nothing gained right? It also doesn’t matter if the SOA train has already left the station, let’s call this a certain kind of architecture optimisation.
A Brief History:
ROA (REST) has been around for longer than SOA (I can still remember dabbling with this in 2000 and how painful I thought it was then because I didn’t understand it too well) and it’s strengths are quite well documented and many references have been made to Roy Fielding’s PhD dissertion on the subject, SCN’s very own DJ Adams has blogged quite extensively on the subject and lest we forget, Tim Berners-Lee’s Axioms! We also know that the world wide web (WWW) is essentially based on ROA. It has lots of strengths (I think more from a technical perspective), like:
- Better indexing
- Works well with SEO
- Responses are cached for faster retrieval etc.
SOA on the other hand is touted as a natural evolution of ROA (which I beg to differ on – I think it’s more of a side step to ROA). But where SOA does make a lot more sense to me is in a business process context (I’m also cogniscent of the URL’s are cheap viewpoint). It just makes sense to me to have all related operations grouped together in one Service. From an integration & development point of view, it makes life much easier when it comes to maintenance, versioning & general governance. It also makes sense if one is adopting a top down approach, there is a natural progression (with traceability) from BPM (Business Process Management in this case) all the way through to the service implementation. So SOA also has lots of benefits (I think more from a business perspective). Now we’re already talking about SOA 2.0 (Event-driven SOA) and Complex Event Processing. Lot’s of it is still hype & the Causal Vector Engine sounds a lot like Fuzzy Logic to me but I can already see the impact on Business Agility this is bound to have.
Since I love to have my bread buttered on both sides! Why should our school of thought be either ROA or SOA? Why not both? I mean both have phenomenal strengths & are relevant for different tasks so why not harness all the goodness? The tie that binds us would be the adoption of a Reference Architecture that is agnostic (technology, architecture, approach, methodology, etc.) in every sense like Theo Elzinga’s CORA Model (See the 6 part blog series)…