Service Oriented Architecture

Service-Oriented Architecture (SOA) is an architectural style that supports service-orientation.

Service-orientation is a design paradigm that creates self contained and reusable services that are composed to form the overall system.

A service is a logical representation of a repeatable business activity (e.g., order processing, check customer credit, etc.) and:

  • Is self-contained and can evolve independently of other services.
  • May be composed of other services.
  • Is a “black box” to consumers of the service.
  • Are not always distributed. Services can exist in the same process.

One of the biggest misconceptions with SOA is that a service is an endpoint communicating to other services using a network protocol. While this is an option, services can also be composed in-process alongside each other and you should only distribute services when the situation calls for it. SOA principles apply equally to in-process and out of process compositions.

Because of these misconceptions, attempts at an SOA approach sometimes result in a system composed of too fine grained of services (Nano Services anti-pattern) and due to excessive network boundaries suffer from increased latency.

SOA Principles include

Startups