# Service-Oriented Architecture

> A convention of exposing each business capability as a service governed by a published contract.

Record: `architecture:service-oriented-architecture`
Kind: style
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: contextual
Scope: application, service, integration
Aliases: SOA
Canonical: https://banes-lab.com/ontology#architecture-service-oriented-architecture

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Pipes and Filters](https://banes-lab.com/records/architecture/pipes-and-filters.md) and before [Space-Based Architecture](https://banes-lab.com/records/architecture/space-based-architecture.md).

## Repair

- Refactored by: Expose Capabilities as Contracted Services
- Detected by: unrelated operations sharing one class/module
- Violated by: capabilities bundled in one application object
- Measured by: capability cohesion per module
- Enforced by: [architecture review](https://banes-lab.com/records/architecture/architecture-review.md)

## Requires

- [Service Contract](https://banes-lab.com/records/architecture/service-contract.md)

## Reinforces

- [Autonomy](https://banes-lab.com/records/architecture/autonomy.md)
- [Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)

## Enables

- [Contract-Governed Service Reuse](https://banes-lab.com/records/lexicon/contract-governed-service-reuse.md)

## Conflicts with

- [Shared Monolithic Application](https://banes-lab.com/records/lexicon/shared-monolithic-application.md)

## In tension with

- [Operational Overhead](https://banes-lab.com/records/lexicon/operational-overhead.md)

## Tensions

- [Service-Oriented Architecture / Operational Overhead](https://banes-lab.com/records/tension/operational-overhead-service-oriented-architecture.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Codebase / System Architecture Styles](https://banes-lab.com/records/architecture-category/codebase-system-architecture-styles.md)

## Linked from

- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/lexicon/lexicon-category-codebase-system-architecture-styles.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
