Soa and Life
It’s amazing how principles and styles from software world map directly to day-to-day events. Let it be core OOP concepts such as abstraction, inheritance, polymorphism or design patterns such as singleton, MVC, MVVM, Observer and so on, one can always track the origin of these entities back to different aspects of human society.
For those who don’t know SOA - service oriented architecture. It basically means derivation and integration :). In this post, instead of getting into the details of SOA I would like to highlight how SOA relates to real life. so let’s get to it!
In SOA, typically the solution is divided into different services which are exposed as HTTP endpoints to other services. They can interact with each other as well as with outside world in some cases. Now in real life, consider your solution to be an organization-MyCompany Inc. Like any organization, MyCompany Inc will divide responsibilities among various groups: there will be a sales team, a marketing team, a production team, a finance and a legal team. Pretty standard, eh? - correct.
Now comes the interesting part, even though all these teams are headed by the same management folks or C-class executives so to speak, they often interact with each other and with higher management, so what makes this interaction possible ? emails ? - you can’t possibly go wrong with this answer! but if you consider these transactions from a software point of view, the term would be “A Data Contract”! Two teams can understand each other only if both of them are agreed upon the same data contract! just like SOA!
Next, by splitting the entire organization into small focused teams MyCompany Inc can achieve separation of concerns, each team is focused on doing ONE thing, and ONE thing only. This helps people working on the team to align themselves with the goal of team as a whole, and we do exactly the same for SOA! Each service stands for a purpose, to achieve one small thing the right way.
Now the diversity, it very unlikely that MyCompany Inc will have each team with same background, ethnicity, culture, language or even continent for that matter! Also for functioning of the team, each of them requires a specialized setup. Sales guys can probably live with a slow PC, but production guys can’t. Yet despite all the differences, MyCompany Inc has to function somehow, right ? so how SOA is similar here ?, As each service is an individual component, each service can have its own environment, from underlying language to production server, every piece can be customized.
Just to sum it up, understanding the way SOA relates to life gives you a much more comprehensive approach for analyzing pros and cons of this architectural style.
In SOA, typically the solution is divided into different services which are exposed as HTTP endpoints to other services. They can interact with each other as well as with outside world in some cases. Now in real life, consider your solution to be an organization-MyCompany Inc. Like any organization, MyCompany Inc will divide responsibilities among various groups: there will be a sales team, a marketing team, a production team, a finance and a legal team. Pretty standard, eh? - correct.
Now comes the interesting part, even though all these teams are headed by the same management folks or C-class executives so to speak, they often interact with each other and with higher management, so what makes this interaction possible ? emails ? - you can’t possibly go wrong with this answer! but if you consider these transactions from a software point of view, the term would be “A Data Contract”! Two teams can understand each other only if both of them are agreed upon the same data contract! just like SOA!
Next, by splitting the entire organization into small focused teams MyCompany Inc can achieve separation of concerns, each team is focused on doing ONE thing, and ONE thing only. This helps people working on the team to align themselves with the goal of team as a whole, and we do exactly the same for SOA! Each service stands for a purpose, to achieve one small thing the right way.
Now the diversity, it very unlikely that MyCompany Inc will have each team with same background, ethnicity, culture, language or even continent for that matter! Also for functioning of the team, each of them requires a specialized setup. Sales guys can probably live with a slow PC, but production guys can’t. Yet despite all the differences, MyCompany Inc has to function somehow, right ? so how SOA is similar here ?, As each service is an individual component, each service can have its own environment, from underlying language to production server, every piece can be customized.
Just to sum it up, understanding the way SOA relates to life gives you a much more comprehensive approach for analyzing pros and cons of this architectural style.