Sunday, April 30, 2017

Why does Service Oriented Architecture improve business agility

I get this question quite often. I remember trying to explain it to a Solution Architect and his manager.  I tried to use the concept of reuse.  I said that SOA based APIs were reusable...hmmm their response was that all APIs are reusable already.  Their reasoning is that the APIs can be accessed as often as needed.  That is true, but what they miss is that with SOA and each service that wraps an API is intrinsically reusable.  Their way, you write code each time one application accesses an API from another.  With SOA you write ONE standardized interface/service and then you need not write even one more line of code to access that service.  You can thereafter use that service by simply including its endpoint in a routing map.  That is reusability.

There is an Engineering Principle called "Don't Repeat Yourself" and that is very much part of SOA.  Write something ONCE and do it right and you never have to touch it again.

So how does reusability result in Business Agility?  Here is a couple of scenarios to demonstrate.

Scenario One - Conventional Development of two solutions that each access 8 APIs in existing Legacy systems.

Once the sequence diagram is done we can see the flow and we begin coding a controller to access those APIs in that sequence.  We write 8 pieces of code to access the legacy systems and we finish by writing more code to process that data.

The second solution accesses the same 8 legacy systems but with different arguments.  So we need to develop all the same things with the slight differences, essentially 100% new code, no reuse whatsoever.

Scenario Two - Same Solutions just SOA Based.

The first solution we develop a Domain Canonical Schema for all data elements.  Then we write 8 service adapters using a standardized service contract including that canonical schema.  We write a service controller and a solution processing module.  Much the same effort of the conventional way.

The second solution and all solutions after will simply write a controller (possible to make a reusable controller but I digress) and reuse all 8 legacy services with no code changes, and the processing module.  This could save typically 40-60% in code development and testing of the reusable services.

The savings you get with SOA are clear,  The agility comes from better ROI on IT and the reduced workload allows for faster time to market of solutions creation and even more efficient changes and maintenance.




No comments:

Post a Comment