Need for a SOA framework?

By rajeevarora

Yesterday an old friend of mine asked if I could suggest a framework for SOA. Isn’t SOA an Application Architecture Evolution and not a technology, so can there be frameworks for it? But having worked with him over multiple years and having deep respect for his technology prowess, I had to give it a second thought. In the end when rubber-meets-the-road and architecture moves from concepts to its actualization, it needs to be guided by frameworks and patterns. So it is very much legit to talk of patterns and frameworks for SOA, a purist will probably kill me for it.

I have always been a big fan of frameworks, Wikipedia defines them as “basic conceptual structure used to solve or address complex issues”. Remaining in this definition, first thing one has to talk about is what is the problem set the framework is supposed to solve. Different situations have different problem sets, so no one framework can meet the requirements of varied situations. SOA is complex and covers complete gambit of an organization and it is defined on following dimensions:

  • Organizational Readiness
  • Approach to SOA
  • People
  • Governance
  • Processes
  • Architecture
  • Technology
  • Tools
  • Infrastructure
  • Operations

I can talk about frameworks and patterns for each of these area but with due respect to my friend I will restrict it to Technology and Tools . From the breadth of questions, I have seen following reoccur more often and are good fit for defining initial requirements for a framework:

  • Will service be always called using XML data format or the clients can use NV, Binary (FastInfoset) data formats?
  • Is there a need to support service chaining, passing of clients session and context may be required between services?
  • Can a client running on the same machine by pass the overheads of a network call and make a local call the service implementation?
  • Should service support both SOAP or REST message protocols?
  • Should service support Synchronous / Asynchronous calls?
  • Should service always validate the incoming data or can it by-pass validation from a set of trusted sources?
  • How the changes in service implementations will be managed through versioning and how the Incompatible versions will be managed?
  • Can the choice of implementation (configuration) separated out from design giving maximum flexibility?
  • Does service require authentication and authorization and is this required for all consumers or can be ignored for trusted consumers?
  • How the error will reported back to consumers as SOAP fault or as part of response?
  • How will service be monitored?
  • Can a execution rate of a service be limited in case of a system overload?
  • How is a service metrics acquired for SLA management?

This are a very wide range of requirements and in my limited knowledge, I have not come across a single tool or technology which covers every one of them. Does this mean that the only choice is custom framework, which anybody who has written one knows is very costly, challenging and at times frustrating process. Given that not all the above requirements apply to all, you may get a tool or framework which meets your requirements, but the odds are not good for such a good fortune. Most of the bigger SOA implementation sites I know of have taken a tool like Axis or Spring and build custom tooling around it. You may want to do that if you are looking for long term investments, but for shorter terms I will recommend using either a free tool like Axis/Spring or a commercial product like Weblogic , Websphere and building scripts around them. Over a period of time move to your own tooling by enhancing it functionality-by-functionality.

Tags: , ,

Leave a Reply