Service-Oriented Architecture 
Service-Oriented Architecture (SOA) is the term for software architecture that is based on the concept of services.
In SOA there are one or more service providers on one side, and one or more service consumers on the other side.
The service providers offer certain functionality as services and publish their interfaces which are designed to be stable.
Service consumers and service providers are only loosely coupled. The interplay of consumer and provider is based on the service interface definition as a kind of contract. The concrete implementation of a service is hidden from the consumer.
The services should be defined in such a way that they can be found and used easily in various applications. Consumers usually make use of several services, which may come from multiple service providers to create new functionality.
Following the principles of SOA when building an application provides several advantages:
Flexibility
Since service interfaces according to SOA are stable, and service implementations are transparent for the consumers, SOA provides the prerequisites for applications in which higher-level functionality realized by the service consumer can be modified without having to change the underlying service functionality.
Productivity
If the services are well defined, it is very efficient to build and advance SOA-based applications once a pool of services is available.
Adaptability
SOA facilitates the integration of different applications, thanks to the use of open and non-proprietary standards. This helps customers to integrate applications from different application vendors into their IT landscape.