|
|
|
OK, we need to understand what a SOA is. That means we need to understand what an ‘architecture’ is and then explore what a ‘service’ is. What is an Architecture?Let’s start by considering a more traditional use of the word Architecture – when it’s used to describe the design of a building.
A nice house, with enough space for you and your family. The balconies are ideal for looking over the surrounding countryside. But this is what you get...
|
|
The architecture must tell us how to link things together | |
|
It must consider both the business itself and the world around it |
Apart from customers, your company probably has suppliers and others who ‘enable’ your business, people such as accountants and consultants.

Taken together, all these organisations make up the world in which your business operates.
You must begin to think of your IT system not in isolation but as a way to allow every company (be they suppliers, customers or enablers) involved in your business to work together.
|
A Service Oriented Architecture (SOA) is a way of including everyone - Customers, Suppliers and Enablers – as partners in your IT system. |
But the role of SOAs isn’t limited to inter-company communication. In fact, it makes sense to introduce an SOA inside your company before you try to communicate outside.
Now, let’s explore Service Oriented Architectures.
They are, fundamentally, architectures designed around services.
Let’s explore what a “service” is…
It’s basically something you do for someone.
Suppose I am a Taxi Driver…
|
You ring me up and ask me to take you somewhere… | |
|
I arrive, pick you up and drive you to your destination… | |
|
I have provided a “Service” |
As the example shows, a “requester” requests a service that the “supplier” suppliers.
| It’s business oriented – I don’t need to tell the Taxi Driver how to drive | |
| It’s asynchronous – I request something and, sometime later, it happens | |
| Normally, you get what you ask for |
There’s an important word in SOA land – “granularity”.
It’s all too easy to treat everything as a service. That’s not a good idea – not least because you’ll find your IT systems grind to a halt.
Let’s pose a question…
Consider a Billing Application…
| Should a Service be to read a row in the Customer table of the database? |
OR
| Should a Service be to submit an Invoice to a customer? |
A service to submit an Invoice to a customer is probably closer to meeting the definition of a “Business Oriented Service” in an SOA than a bit of code to read a row from a database.
Put simply, Services should be Business Oriented.
Always ask yourself:
| Can I imagine myself doing this? |
If it’s doable by a human, it’s probably Business Oriented enough to be a Service.
(I’ve not seen this definition anywhere else so, as far I know, it’s
original)
Remember, we’re talking architecture, not how to code individual applications.
Should SOA affect the way you view the whole world?
Or, just the way you write your next line of code?

Try these statements:
|
SOA is the most important development in software in the last ten years | |
|
SOA is an interesting development that your company should monitor | |
|
SOA is just a messaging application (see SOA Implementation) |