Service-Oriented Architecture (SOA) | Microservice Architecture — Ep. 4
SOA is a predecessor to microservices. It is an architectural style that treats services as independent, heterogeneous providers of business capabilities.
“Heterogeneity” here acknowledges that services may:
- belong to different vendors
- run on different platforms
- be written in different languages
- communicate over different protocols
- be developed by different teams
SOA emphasizes:
- well-defined, explicit service interfaces
- stability and genericity of contracts to serve multiple consumers over long periods of time
- service discovery via service registries
- centralized service administration with approval of contracts, schemas, and compatibility guarantees
The focus on central governance and long-lived, broadly reusable contracts is the key distinction between SOA and modern microservices. It is also its key limitation factor: services cannot evolve quickly because of dependence on central governance and strictness of agreed-upon interfaces.