SOA for beginners


The term Service Oriented Architecture (SOA) is now used frequently and it is usually associated with providing better agility to the business capabilities.   In most instances, this has not translated into reality.


 


So what is SOA, how can it really help your business and what are the caveats? 


SOA is a concept.  The concept is to provide functionality without having to know the inner details.  The aim is to be able to create software pieces at a good level of isolation so that we can re-use them much like a Lego block to build different systems with different capabilities quicker and cheaper.  The concept is an evolution of the component based design principles that has been around for the last two decades.


Figure 1  (the words in brackets provides sample application, service and component) puts into context where components are used and where a services are exposed.  From Figure 1, it seems logical that the level and type of functionalities provided by a component and a services would be different.


 



Figure 1


 


This should be the case.  An exposed service should reflect a task within a business process.


 


A well designed system that exposes key services can result in business being able to provide new capabilities quicker by allowing these services to be re-used.  However, one of the trickiest thing about designing an SOA capable systems is determining the level of granularity of Service to provide.  What do I mean by granularity?  When SOA is relatively new, a lot of system developers exposed services at a very fine level granularity.  For example, a Login service is provided to log a user into the system, a GetName service is provided to retrieve a user name.  This fine level of granularity proved to be a hindrance, causing developers to spend more time writing code, reducing system performance and not providing enough re-use value.


 


With time comes experience.  Numerous people have learned that aligning a Service to a task within a business process provides the correct level of granularity.  In practice this means the following things needs to happen:



  1. A well thought out and working business process need to be in place or designed.  This means the business process owners need to know well in advance what are the key business priorities and which particular parts of the business process needs to be flexible and made reusable.  In real life, this does not happen very often.

  2. As the services provides more capability, this means more data needs to be passed in.  Having a canonical data format (common data format) is essential in allowing easy re-use between enterprise.  Again this is easier than done.  The good news is that in most industries, there are standard bodies that have started work on providing standard schemas (schema is a method to describe how a data is structured).  A good starting place is OASIS http://www.oasis-open.org to find one relevant to your organisation.

 


The current advances in computer technology and the continuous improvement of network connectivity  means SOA will become more important and prevalent in the future.  Recent events in the world have required governments and agencies within governments to collaborate within and with commercial entities in a short amount of time.  Technology concepts like SOA is key in improving the ability of system to system collaboration to occur easier.  However, as I hope I have briefly highlighted, SOA by itself is not a silver bullet it will require better partnership between business decision makers and technology providers to achieve success.


 

Comments (3)

  1. Lincy Chandy says:

    A good article. But wanted to know how SOA is implemented in real business app? With the information i have i feel SOA are just within the enterprise environment . Right?

  2. dchandra says:

    SOA is not just for the enterprise.  Although in a larger environment like an enterprise there are more opportunities to re-use the capabilities exposed by an SOA.

    In a smaller scale, it may be adequate to componentise your capabilities and re-use them in a library format.

    You need to decide if the extra effort required in designing, deploying and maintaining an SOA will give you greater return in the future.

Skip to main content