A service-oriented architecture (SOA) is a system that brings together web services to provide a single system, offering users a single interface to multiple interoperable tools. It is not simply a program or a server but a way of finding, fitting together and presenting to users web services and tools. It is an entire system of data standards, interfaces and practices.
Service-oriented architectures have a number of common features that are generally present:
Multiple services are orchestrated at runtime, when users request them.
Services are not coupled together in a rigid, pre-determined way.
Services are discoverable when users want to employ them.
Services are indexed in an accessible registry.
Services have standardized interfaces, so that they can interoperate and exchange data.
Services are reusable in different environments.
Services are distributed, running on different servers, connected by the Internet or other networking scheme.
Users have access to all services supported by the architecture through a single documented programming interface, and a single, widely supported front end like a web browser.