What Is a Service-Oriented Architecture

A service-oriented architecture (SOA) is an approach to creating software applications that aim to promote reusability and business agility and to ensure that non-functional requirements (e.g. security, scalability, and performance) are met.

Each component in an SOA performs one of three different roles: service providers create web services and provide relevant information to the service registry (or broker) so they can be subsequently discovered and re-used. The service requester locates the service it needs via the broker and binds with the service provider to invoke the functionality it requires.

How Did SOA Come About?

SOA emerged at the start of this century as a response to a prevailing IT environment where software development was unwieldy and slow – and was all-too-frequently delivered late and over-budget as a result. Not only that, but the resulting applications were highly interrelated and therefore hard to modify or upgrade: updates might have unintended (and negative) consequences for another part of the application and so implementing change involved a huge amount of testing and was glacially slow.

Instead of approaching application development as the creation of a single monolithic entity, SOA sought to break apart these monoliths into smaller, more manageable chunks – or services. In this context, services are not fully-fledged applications but components that can be combined in different ways to make those applications. The SOA provides a set of design principles that provide structure for the creation of these components and their aggregation into fully-featured applications.

What Is a Service?

There are many different definitions of a service but that from the Open Group is as good as any. According to them, a service:

  1. Represents a discrete business activity with a specified outcome.
  2. Is largely self-contained.
  3. Is a ‘black box’ for those that use it, meaning that there is no requirement to understand the service's inner workings.
  4. May include (or even consist entirely) of other services.

These services are generally loosely coupled and so largely independent of the other services in the application – meaning they can be modified easily without the ‘knock-on’ effects described above. The same service can also be reused if the same functionality is required by a different part of the application.

What Are the Benefits of a Service-Oriented Architecture?

The net effect of all of this is that SOA addresses many of the frustrations outlined earlier in this article. It drastically reduces the cost and complexity associated with enterprise software development. It also massively increases the speed with which new applications can be created and deployed – and existing ones upgraded. To the business, an SOA simply means that the IT department is far more responsive to their needs and the organization is significantly more agile as a result.