What is a SOA?
Up

 

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.
Then, we can put both these concepts together and see what an SOA 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.

Let’s pretend that you win the Lottery and you ask a builder to build you a new house…


A large country house with balconies

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...

A round stone castle with a flagpole

“Well, I saved bricks by building it ‘in the round’” the builder says.

Yes, but…

He forget that the best view is where he didn’t put any windows.

He just focussed on one aspect, saving bricks, and didn’t take other things into account.
You need to consider the situation you're facing ‘in the round’. (whoops!)

Now, let's scale up the problem...

A city street scene with big 1970s office buildings

If we consider cities, as opposed to individual buildings, ‘getting all to work together’ becomes a lot more complex.

Let's apply this to IT...

We all develop software and have written wonderful applications that help many businesses work effectively such as for Sales, Billing and Quality Control but none of them should exist in isolation.

We need them to work together so that, say, a sales enquiry can be used as the basis of an invoice without the need to re-enter what’s being ordered.

We need all our applications to work together so we can save money.  (That’s what it’s all about)

So, we need an architecture for our IT systems

You could just consider the business and ensure that all the systems in it work together effectively and efficiently but, as we’ll see, that’s only half the story.

“No man is an island” is a famous saying, “Business IT systems don’t exist in isolation” is one which is becoming better known.

And, when SOAs become common, so the linkage of systems across businesses will become common as well.

The architecture must tell us how to link things together

It must consider both the business itself and the world around it

Your Business and the World

Apart from customers, your company probably has suppliers and others who ‘enable’ your business, people such as accountants and consultants.

Your business' world, with customers, suppliers and enablers

Taken together, all these organisations make up the world in which your business operates.

My key message...

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.

An SOA is...

Now, let’s explore Service Oriented Architectures.

They are, fundamentally, architectures designed around services.

What is a 'Service'?

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”
(How I get paid is an interesting question, we’ll cover that near the end)

As the example shows, a “requester” requests a service that the “supplier” suppliers.

Characteristics of a Service

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

Granularity, Granularity, Granularity...

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?

And the answer is...

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.

Where does SOA fit?

Should SOA affect the way you view the whole world?

Or, just the way you write your next line of code?

A triangle with the world at the top and a single fly at the bottom

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)