From integration pain to contract-based services.

By the end of Week 1 you will be able to:
Enterprises accumulate systems faster than they can connect them. Before defining SOA, we look at the pain it answers — and the forces pushing organisations toward it.
Enterprises grow by adding systems over time:
n systems can need up to n(n−1)/2 connections.

SOA is a response to all five.
A precise definition, the core vocabulary every service shares, and the classic find–bind–invoke interaction that ties providers, consumers and registries together.
“Service-Oriented Architecture is an architectural style in which application functionality is provided and consumed as a set of services — self-contained units of business logic exposed through well-defined, standardized contracts and accessed over a network.
SOA is a design philosophy, not a specific product or technology.
The classic SOA interaction model:


SOA did not appear from nowhere. We contrast it with monolithic, distributed, component-based and object-oriented approaches to see exactly what it adds — and what it costs.
We compare SOA against four reference points:
The contrast clarifies what SOA adds and when it is worth the cost.

Simple to build, test, and deploy initially; fast in-process calls.
Hard to scale parts independently; one change forces full redeploy; technology lock-in; coupling grows over time.
SOA is componentization raised to the enterprise, cross-platform level.
| Aspect | OOP | Component-Based | SOA |
|---|---|---|---|
| Unit | Object/class | Component | Service |
| Coupling | Tight (references) | Medium | Loose (contract) |
| Boundary | In-process | Mostly in-process | Network |
| Reuse scope | Code | Binary/component | Enterprise/cross-org |
| Interop | Language-bound | Platform-bound | Platform-independent |
| Granularity | Fine | Medium | Coarse (business-level) |
Left → right: coupling loosens and reuse scope widens — at the cost of communication overhead.
SOA does not replace OOP or components — it builds on top of them:

The design principles (Thomas Erl) that make a service truly “service-oriented”:

How services are layered, how big they should be, and what makes the difference between SOA that pays off and SOA that becomes an expensive mess.
A common layering of services:


SOA pays off at enterprise scale; it can be over-engineering for small systems.
Decompose the domain into services:
Online-retailer inventory composed by a Checkout process.
Goal: produce a first service decomposition.
Given a business case (online retailer or university enrollment):
Questions?