Post date: Feb 11, 2011 4:34:19 AM
There is so much claimed about benefits of SOA (service oriented architecture). Here I will try to summarize all what people claim as advantage of SOA and then I will put my doubts and reservations.
Vendors are selling SOA to sell ESB or any other tool which they claim are necessary to implement SOA and this fact is very important to keep in mind. These same vendors will move to something else when SOA will not return value to the organizations and will start selling something else for same stated benefits which they claim for SOA (actually they claim these benefits from their tools - ESB, Servers, Modeling Tools etc) . I am not declining anything but correct expectations should be set and things should not e over-hyped.
Another thing I will try to establish here is definition of SOA. Various people and organizations (vendors specially) have thrown their definition of SOA. If definition is not clear one will not be able to create what must be created in SOA or through SOA. Now which definition to accept? In my opinion first of all we should consider what it is offering (advantages of SOA). After that we should consider ( and time will prove) whether these tall claims are practically achievable or not? After that we should consider advantages which can be achieved through SOA and then definition of SOA.
Why this? Take an example - If people are claiming SOA is for high ROI and it is not true then why to expect high ROI from it. Similarly is reuse is not so much why to first define SOA as a way to reuse and then try to reuse things through SOA.
Following are not my words but extract of what various vendors claim as benefits of SOA:-
Time to market will be less for new services by developing autonomous services with core business functionality and not wasting effort in writing middle ware functionality required. Expectation or claim is that new services or functionality (or business processes) will be created by composing them with these existing services. leveraging existing is not possible without standardizing what you are creating.
Total cost of ownership will be less. To achieve this eliminate costly, proprietary middleware and replace it with open standards-based Web services technologies. Also consolidate well-defined business functions into services that can be shared by multiple business units
Here are advantages some people claim :-
High ROI from IT
Low maintenance cost
Low integration cost
Now my point is "can you achieve any of these benefits without proper control". I mean governance. Now whatever vendors are selling has nothing to make sure that everything will happen standard and will conform to contract. What ever tool you create they will not make sure compliance. Only disciplined development of systems (which will require manual intervention and highly motivated teams towards it) can do it.
My another point is if it is all about reuse then what is new in this. Reuse was a buzz word for a long time. People were trying to reuse through various ways and means. By creating reusable components, libraries, frameworks etc. Again creating something reusable across the organization will require standardization and confirming to contract. This will require good governance.
Next point I have is they suggest to go for open standards, elimate costly, proprietary middle-ware. Now if I will go for products and tools various vendors are selling to enable SOA where am I eliminating any proprietory middle-ware. It may be based on an open standard but will be specific implementation of a vendor and later on I will have to move to another if I want to get rid if existing vendor. By adding ESB or any other thing in my environment I will buy another liability? Isn't it true?
Now if I am investing on new tools, servers, platforms to enable SOA I am adding more cost and this cost should not be more then cost benefits I am going to get from SOA. Another cost will be to make changes in my environment if I am going to standardize my existing assets or services. I doubt things will automatically integrate my existing assets or services without manual changes and cost. So where will be reduced time to market.
My take from it:- You must create standard services, your work should adhere to contracts for business requirements but this philosophy exists for a long time, giving it a new name SOA and selling products in the name of SOA will not give any of the benefits claimed without disciplined development and creation of reusable services which businesses were unable to do (actually their IT was unable to do it) in earlier. I doubt they will be able to do it with these products too. Key to success is thinking for reuse, planing for reuse, good governance to check whether people adhering to it or not and for all this tools are secondary. Organization which will focus on these areas will get benefits and who so ever will not focus on it and only buy ESB or any other products will not be able to justify cost invested in SOA exercise. SOA should be considered for standardization, for avoiding mismanagement and maintenance issues in turn saving extra cost but if you will sell SOA for high ROI and reuse to justify cost invested in products from vendors, it will be proved wrong. Without good governance, planning, alliance of the organization and motivated team, SOA will become monster who will ask for more and more investment in one or another tool and product and will be unmanageable.
So question remains unanswered. What is the definition of SOA?
SOA is an approach to standardize services created within the organization and it requires good governance to make sure things are happening in standard way.
I am not focusing too much on reuse, huge ROI and also avoiding to consider SOA as a new technology.