Service-Oriented Architecture (SOA)

A software architecture style in which business logic is broken down into distinct, reusable services that can be combined to build applications. These services are typically large, coarse-grained, and communicate via an Enterprise Service Bus (ESB).

Definition

Service-Oriented Architecture (SOA) is an architectural approach for building distributed systems. In SOA, applications are built by combining loosely coupled and interoperable services. These services are self-contained and represent a discrete business function. Services communicate with each other through a standardized interface and a common communication protocol, often managed by a central component called an Enterprise Service Bus. The goal of SOA is to increase agility and reduce development costs by promoting the reuse of common services.

Origin & Context

The concepts behind SOA date back to the 1980s, but the term became popular in the early 2000s as a way to manage the complexity of large, monolithic enterprise applications.

Why It Matters

SOA was a major step forward from monolithic architectures. It introduced the key principles of loose coupling and service reuse, which are foundational to modern application development. While SOA has been largely superseded by microservices architecture, the core ideas of SOA are still highly relevant.

Common Misconceptions

Myth: SOA is the same as specific technologies like SOAP or the ESB.
Reality: While these technologies were commonly used to implement SOA, they are not the definition of SOA. SOA is an architectural style, not a set of tools.
Myth: SOA and microservices are the same thing.
Reality: While they share some common principles, microservices are much more fine-grained, are independently deployable, and use lightweight communication protocols, whereas SOA services are typically coarse-grained and rely on a central ESB.

Practical Example

A bank has a monolithic core banking system. To expose some of its functionality to a new mobile banking app, it decides to adopt an SOA approach. It creates a Get Account Balance service and a Transfer Funds service. These services are deployed on an application server and exposed via an ESB. The mobile app can then call these services without having to know the details of the underlying core banking system.

Industry Applications

Any
SOA was widely adopted in the 2000s, particularly in large enterprises in industries like financial services, telecommunications, and retail, as a way to integrate and modernize their legacy application portfolios.

Related Terms

  • Microservices Architecture: Microservices is an evolution of the SOA architectural style.
  • Enterprise Architecture: SOA is a key pattern in the application architecture layer of an enterprise architecture.