SOA has been a buzz word for me from a long time and finally I found why it was buzzing and for a good reason.
Service Oriented Architecture, where everything is about “service”. E.g. daily we use electricity, water, communication, transportation etc as “service”. We hardly know the how services work, how it is conveyed to us. But we know how to use it; the 1st essence of SOA.
Experts (in knowledge, products, applications etc) are valuable assets all around the world, How about integration of experts to form “best of breed” outcome or to use the existing; the 2nd essence of SOA. Remember, “Write once, run anywhere” (WORA), a slogan created by Sun Microsystems. SOA is “Write Once Reuse Anywhere”.
Reusability and Abstraction are famous features of any OOP and SOA deals with it in smooth manner as we discussed above.
With abstraction and reusability; different flavours in basic features works as toppings.
With SOA, Management and developers communicate in a same language which helps in service implementation overall.
Specific services are implemented as component where all basic features are implemented in a manner that it provides core functionality. In music, if you know the basics of instrument then it helps to co-ordinate with other musician even though you don’t know them. Similarly, standard methodology helps in creating components which communicates with each other without knowing about each other.
Innovation is an inevitable part of IT. Business requests changes as per time, to meet business requirements; different kind of architectures evolves over the time. Architecture provides kind of a framework where we fill the component in and we are done!! It sounds easy but Implementation is not that easy but it opens up the scope for extensibility.
In nutshell Business service is wrapping up of requirements/functionality with the use of abstraction. In simple words, components which hide details and represents essential features and Architecture is where components communicate with each other and forms a complete business process.
E.g. ATM machine, customer gives input to the machine; various checks takes place like authentication, sufficient balance verification, currency verification and finally money is dispatched.
Here Customer verification, Balance verification & Currency verification are components (services) and interaction between them forms a complete business process. We have used OOAP concepts like reusability and abstraction in the discussion.
Now introducing cohesion & coupling. Cohesion, a measure of how strongly-related is the functionality expressed by the source code of a software module. Modules with high cohesion tend to be preferable because high cohesion is associated with several desirable traits of software including robustness, reliability, and reusability. Coupling, the degree to which each program module relies on each one of the other modules. Low coupling often correlates with high cohesion, and vice versa. Services should be highly cohesive and low coupled to serve the main purpose of SOA.
MVC, Sepration of Concern, SOA, AOP
E.g. MVC architecture, separation of concerns!!! Domain logic must be isolated from the input and presentation. Here we are going in detail bit further; As per SOA, the domain logic may be divided into different services which performs interrelated task. Separation of concern is the process of separating a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. SOA works in exactly similar manner.
Another related term is AOP. In computing, aspect-oriented programming (AOP) is a programming paradigm which isolates secondary or supporting functions from the main program’s business logic.
With SOA, you can use almost all your existing business applications. You may need to change them to fix them in SOA with different flavours.
The important thing to note is, OOP concepts are the driving force in SOA. Hence SOA is nothing new planet; it’s just that IT folks found better way to do things using existing principles. Methodology has changed.
And finally changes are inevitable and happen for good and SOA is no exception. It’s here to stay and with Cloud computing buzzing around, SOA will stand tall for sure.