What is Service-Oriented Architecture (SOA)?

Service-Oriented Architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. These services can be remotely accessed, acted upon, and updated independently. 

A service has four properties:

  1. It logically represents a business activity with a specified outcome.
  2. It is self-contained.
  3. It is a black box for consumers, meaning consumers do not have to be aware of the service’s inner workings.
  4. It may consist of underlying services. 

SOA differs from event-driven architecture (EDA) in that it is geared towards client-drive, request-response interactions, allowing the client to dictate which service will process the request. EDAs, on the other hand, create environments where components react to events as they arrive, enabling a subscribe and process model that spans multiple services. 

Either SOA or EDA can be producers and consumers. In order to facilitate independent and asynchronous computing, an event broker, or an intermediary that manages the delivery of events from producers to consumers, is required. Compared to SOA, the essence of an EDA is that the services involved communicate through the capture, propagation, processing, and persistence of events. This pattern of communication through a dataflow is quite different from the SOA approach of requests and responses. Perhaps said simpler: a SOA is typically client-driven, while an EDA is automated and event-driven. 

Create your first event flow in under 5 minutes