Monday, 20 February 2017

Service Oriented Architecture

Introduction


When we speak about Oracle SOA Suite, usually we think in this direction, it is a tool developed by Oracle to deal with SOA.

Isn't it ?

And you might end up asking yourself, what is SOA. In this discussion, I am going to describe this in a bit detailed fashion.

In theory, SOA or Service Oriented Architecture is a style of software design where each component of an application is exposed to other components via a service interface.

Let me describe it with a scenario of a food court. Now, here you can see that each of the food counter offers different cuisine but there is a small problem, the receptionist only knows his/her native language. So, when a customer comes to order some food who does not know any other language other than his mother tongue (Telugu in this case), it becomes a big mess.

Now let's try to find some solution for this scenario, let's say in each counter, we deploy one more representative who knows both the cuisine specific language as well as Telugu.

So, we've deployed one more receptionist who can speak both the cuisine specific language and Telugu. But there is some cost associated to the customer. As he is using this translator facility, he is charged for translation. So, the cost of food goes high. Also, this is quite incomplete solution, because, you may end up appointing more translators than other stuffs in the restaurant.

So, this solution is feasible but very much impractical. Now, let's think of a different solution and this should help both of the parties with a very less cost added to the whole system.


So, the receptionist now speaks in English in each of the counters. Now, the customer can order different cuisine of his choice and also, let's think another scenario, if a particular cuisine is not available, the receptionist can suggest the customer a different cuisine by communicating to the other stalls.

So, we are basically, dealing on a standard, known as International Language - English.

If you have understood the problem and how English helps in the depicted scenario, let me explain it with the help of a technical example. Let's think of a school which needs a robust software application which can deal with all the day to day activities like attendance management, classroom allocation, library management system, bulletin publication, online examination system, mark sheet distribution and so on.

So, if you think for a moment, you can understand that, it will have multiple components which basically need to work together.

Now, the Attendance System can be developed using C/C++ where as the Library Management System can be developed in Java, the Bulletin System can be dealt with Python etc. So, based on the complexity and the nature of the component, we will choose different technologies.
But, it is a big problem now, all these system needs to work together. So, how would we solve it ?

SOA helps in this scenario. It tells you to follow whatever technology you want to use for development but expose all the application interfaces via some standards. In other language, expose all your application as Web Services and wire them together as and when needed.
So, this is how Service Oriented Architecture helps communicating between different components maintaining the interoperability and modularity. So, each of the components can concentrate on their particular needs without knowing other service implementation strategies.

A service has four properties according to one of many definitions of SOA:
  1. It logically represents a business activity with a specified outcome.
  2. It is self-contained.
  3. It is a black box for its consumers.
  4. It may consist of other underlying services.

Target Audience

This series is written for experienced developers who want to work with Oracle SOA Suite but has no hands-on experience with SOA Suite. This series can also help system architects understand how different components work together under SOA Suite and what are the different components Oracle SOA Suite provides and they can design their applications accordingly based on their need.

This series will assume that you are familiar with development methodologies and have done at least one project based on any technology like Java, C/C++, Python, .NET etc. Also, fundamental knowledge of XML & WSDL will be very helpful to understand the discussions. If you are not familiar with XML and/or WSDL, you can cover it here.

What to expect

This series will cover all the basic components heavily used in different applications. This series will touch very basic SOA Administration part of SOA Suite which will be required for development. During this course, we'll complete an application (School Management) in which we'll cover all the basic components. So, this series strongly recommends to follow all the hands-on. During this series, I will use Oracle SOA Suite 12c (12.2.1.0.0) which you can download from here.

From the next post onward, we'll directly work with Oracle SOA Suite. So, better to keep it handy.