Skip to content

Modifiability Tactics in SOA

Modifiability means how easily a system can be changed. In a service-oriented architecture (see Service-Oriented Architecture), applications offer services to other applications. Consumers call services. Providers offer them.

If consumers call providers directly, one change can ripple through many callers. An intermediary reduces that risk. It is a piece of infrastructure that sits between the two sides. This follows the general idea in Reduce Coupling.

Mediating infrastructure. An SOA infrastructure can hide differences between consumers and service interfaces. One example is different versions of a standard, such as SOAP 1.1 and SOAP 1.2.

Message bus. A message bus connects applications through a shared set of interfaces. It works like a universal adapter across platforms and languages. Applications can be added or removed without affecting the others. See Messaging.

Publish-subscribe. A sender publishes an event on a publish-subscribe channel. The channel delivers a copy to each receiver. The sender does not need to know its subscribers. See Publish/Subscribe Channel.

Service registry. A registry provides discovery, versioning, and access control. Teams can build one or buy a product. An ESB (enterprise service bus) is one such product, but buying one covers only one piece of the system.

Tolerant consumers. A consumer can also help. A tolerant reader takes only the data it needs from a service. Providers can then evolve the service without breaking existing clients.

A shop publishes an “order placed” event. Billing and shipping both subscribe. Later, the team adds a loyalty-points service as a third subscriber. The shop’s order code does not change, because it never knew who was listening.

Service-oriented systems generally favor interoperability and modifiability over optimal performance and strict security. The mediating infrastructure is part of this trade-off. Intermediaries also become something you must build, buy, and operate. See Quality Attribute Trade-off.

A publisher reaches several subscribers through a channel, without knowing them.

Diagram source
flowchart LR
P[Order service] --> C((Publish-subscribe channel))
C --> B[Billing]
C --> S[Shipping]
C --> L[New subscriber]
  • Applications that exchange messages connect through a shared set of interfaces, so applications can be added or removed without affecting others.
  • Event senders publish to a channel and do not need to know their subscribers.
  • The document states who provides service discovery, versioning and access control, and whether the registry is custom-built or a product.
  • The document records the trade-off of performance and security accepted in exchange for interoperability and modifiability.
  • Consumers read only the data they need from a service, so providers can evolve it.