Simply using WebServices does not guarantee a SOA

Service Oriented Architecture (SOA) is a topic much touted by IT vendors around the world. IBM, Hewlett-Packard, Software AG, Oracle, SAP and Microsoft, just to name a few of the names.

“What is SOA?” You ask.

The short answer is that SOA [1] is a business method for creating IT systems that enable enterprises to:
. seize existing assets;
. create new ones;
. facilitate the inevitable changes needed to support the business.

SOA is all about building, using and combining services [2]. It’s an architecture like any other: it involves trade-offs and design decisions in implementation. Sun defined SOA in the late 1990s to describe Jini, which is an environment for dynamic discovery and use of services on a network [3].

A service, unlike the component, is external to the software that requests it (and often remote). When we talk about services we have two implicit functions: service requester and service provider. A service is a feature that is exposed for use by other processes. In other words, a service has an interface that can be used by some service requester. A web service is then a feature that is exposed and accessible using web technologies.

According to W3C [4], a web service is defined as follows:

A Web service is a software system designed to support interoperable machine-to-machine interaction over a network.

As an example, if want to create an application with many features I can:

1. Require multiple services on the web. Let’s assume that I want to create an application that allows you to offer the expense control service for travel to users. There are certain things potential customers might want:
. How much does it cost to get to the location I’m looking for?
. What is the exchange rate?
. What is the cost of food?

Most services that allow you to build the application are available on the web as a form of service. What I have to do, in this case, is to combine them to create the app.

2. Build everything by myself.

Both in point 1 and in point 2 I’m talking about web services. However, in point 1, since there is a whole range of services that I require to build the application, I need to design an architecture that supports such use, namely SOA (which is not necessary in section 2).

Useful links:

[1] Fern Halper et al. (2009). Service Oriented Architecture For Dummies, 2nd Edition.
[2] Kenny Wong (University of Alberta): https://www.coursera.org/learn/service-oriented-architecture/lecture/kEZue/4-1-1-introduction-to-service-oriented-architecture
[3] Qusay H. Mahmoud (Oracle): http://www.oracle.com/technetwork/articles/javase/soa-142870.html
[4] W3C: https://www.w3.org/TR/ws-gloss/

Related Stories