Service-oriented architecture (SOA)

With Service-Oriented Architecture (SOA), the program logic (process organization/computing steps of a software) is no longer part of individual software; instead, its linked functional services (such as web services, storage, interfaces) and the specific functionalities of the software itself are made generally available; each of these functions can be used separately in the network. Only processes that are implemented via different programs are considered. Individual and self-contained applications are not part of the SOA concept.

Service-oriented architecture (SOA) is an application architecture in which all functions are available as independent services with well-defined, callable interfaces, so that a selection – called up in a sensible sequence – covers a business process.

Dr. Ulf Rerrer-Brusch (2007)

The service-oriented architecture thus minimizes dependencies of individual elements within a software. The corresponding elements are developed right from the start in such a way that they can be used as independent services. However, each of these services also has certain requirements for its smooth use. If the guidelines listed below are met, the flexibility of the respective service means that the different services can be easily combined with each other and even completely new systems can be developed using a modular system and a few adjustments. The underlying IT architecture therefore functions as an information platform on which the respective process is handled.

Service-oriented architecture in practice

SOA defines how two computing instances/programs interact so that one instance performs a task on behalf of another instance. The service interactions are defined by one or more description languages. Each interaction is basically self-contained, but decoupled from processes. It is therefore independent of other interactions. The modular principle allows easy access and rapid modulation because it basically works like a kind of Lego plug-in system. End-to-end standardization of interfaces, for example in conjunction with XML or JSON (uniform text-based data formats), ensures the necessary interoperability (smooth collaboration of services).

Requirements:

  • Services are self-contained
  • Services can be used independently
  • Services are available in a network
  • Services must have a standardized interface
  • Services are platform-independent (different operating systems, different program languages, different web services – Java/HTML, PHP, etc.)
  • Services must be registered in a directory
  • Services are only linked dynamically during execution

Advantages:

  • Reuse of older services
  • Software upgrades improve several processes at the same time
  • Modifications are centralized
  • Companies save money and time during development

For more information on software architecture, see “The meaning of the term “architecture” in the context of information systems”.