SOA, or the service-oriented architecture, is a software design style for which services are made available to other components though a network communication protocol. The basic principle of a service-oriented architecture is that is isn’t dependent on suppliers, products and technologies. The service is a discrete functionality unit that can be accessed remotely and can be run and updated independently, such as online credit card statement.

The service has four properties, according to the SOA definition:

  • It logically represents commercial activity with a specific output.
  • It contains itself.
  • It is a black box for users, so they don’t know, what’s going on inside the service.
  • It can contain additional services.

Different services can be used together to ensure the functionality of a large software application. This SOA principle is shared with modular programming. Service-oriented architecture integrates distributed, separately maintained and deployed software components. This is made possible by the use of technologies and standards to facilitate communication between components and cooperation over the network, in particular by using the IP network.

SOA’s specifics

In SOA, services are protocols that describe how they send and parse messages using descriptive metadata. These metadata describe functional and quality characteristics of the service. Service-oriented architecture tries to enable users to combine large volumes of functionalities to create applications that are built purely on existing services, which are subsequently combined as necessary.

The service represents a simple interface for requester which abstracts the complexity and acts like a black box. Other users can also access these independent services without knowing how their internal implementation works.

Defining concepts

SOA works on the principle of free service linking. Services thus divide functions into separate units that developers can access over the network, allowing users to combine and reuse them freely in the production version of applications. These services and their corresponding consumers interact by sending data in a clearly defined shared format, or by coordinating activity between two or more services.

In October 2009, a manifesto defining six key concept, has been published:

  • The commercial value is more important than the technical strategy.
  • Strategic targets are more important than benefits for a specific project.
  • Mutual compatibility is more important than a customized integration.
  • Shared services are more important than specific implementation.
  • Flexibility is more important than optimisation.
  • Gradual improvement is more important than the pursuit of perfection from the very beginning.

SOA can be considered as a continuation of older concepts such as distributed programming or modular programming.

The advantages of using SOA

  • Reusability of services. Applications are built by folding small parts of functionality. This allows services to be reused across applications.
  • Simple maintenance. The service is a separate unit, it can be easily updated or maintained without affecting other services. This makes the maintenance of large complex applications easier.
  • Greater reliability. Since small independent services are easier to test and repair, SOA allows greater reliability.
  • Scalability and availability. Multiple instances of the same service can be run on different servers at the same time. This increases both scalability and availability.
  • Independence from the platform. SOA makes it possible to create a comprehensive product by integrating different products from different suppliers independently of the platform and technology.
  • Increased productivity. Since it is not necessary to develop everything from the very beginning, the development productivity is increasing.

The disadvantages of using SOA

  • Performance. By interacting with other services, a complete validation of each parameter is required. This increases the response time.
  • Comprehensive service management. As services exchange messages to perform their role, the number of messages can rise to millions for a single application. Such a large number of services are difficult to manage.
  • High initial investment. Technology, development and human resources require a high initial investment.