Most Popular Posts

02/04/2013

What is SOA (Service-oriented-architecture)


What is SOA and why is it so popular?
There are several 'technical' definitions trying to explain what SOA really is.
Here is the explanation of SOA from the Wikipedia:
Service-oriented architecture (SOA) is a software design methodology based on structured collections of discrete software modules, known as services, that collectively provide the complete functionality of a large or complex software application.
So what this actually mean? Basically, everything that can be re-used during application usage, can or even should be transformed and treated as a service. Services are small chunks of the business logic for the particular application.
Example 1:
In your company there is a Xero machine and 10 conference rooms. For each meeting, as well as for making copies of the documents using the xero machine you need to have plain sheets of paper. Everything is going smoothly, until there is shortage of paper. There is no point in ordering the paper on your own, because you'd have to know following things:

  1. name of the company that provides the cheapest/ best quality of paper
  2. contact to that company
  3. get the overall cost
  4. get the package
  5. install the paper in the tray/ conference room.


If 5 people would make the same order, there would be a mess. 
That is when services come in as a part of the process. There should be one delegated department that does all these things when needed so you don't have to worry about it (neither the management during the meetings). 
I bet you have such service inside your company too :)
If you look closely enough you could see that most of the things in the companies are treated as a service:
- cleaning service (usually one company for the whole building instead of separate companies)
- catering service (usually one)

In the IT SOA is exactly the same thing. Once there is an application, it can be divided into several modules:


  • data
  • business logic
  • presentation logic


Each of these can be decomposed into smaller modules that can work independently, but together can create whole system.
Example 2:
Your company developed 4 different components:

  1. Credit Card Validation Service
  2. Payment Service
  3. Shopping Cart Service (add/ remove/ update)
  4. Store view/edit Service.
But why is it so 'popular'. Well, it is popular inside medium/ large IT enterprises, where policies and high standard of security has to be maintained. Because such companies are heterogenous across databases, applications, programming languages, and infrastructure SOA is the binding place for most of it. 

I hope it is now more clear what SOA really is and it does not sound so scary now :)

All of these could work separately, without bigger effect. User is able to use Credit Card Validation service to validate his card, and Shopping Cart Service to add some products to the cart. 
But only if we connect all of these modules together we get a fully working e-commerce website.
Because we have used separate services, it is not a problem to add another module like Bitcoins Payment service to allow customers to use Bitcoins.
SOA Services most probably will be using WSDL (Web Services Description Language) files.
WSDL file is nothing more than just an XML-based file that is used to describe the functionality offered by the specific WebService. This is the way most of the SOA services are able to communicate. 


To sum up:


1. SOA stands for Service Oriented Architecture2. Why is it so 'cool'? Because of creating small independent services developers can:

  • reuse the code
  • test small parts of it than the whole application
  • scale the application easily (if the design is correct)
  • bind different services in one/ several places

If you know better explanation of the SOA, please do not hesitate to explain it in the comments :)
Resources:



No comments:

Post a Comment