Service-Oriented Architecture (SOA) is a set of principles and guidelines that inform the planning of enterprise architectures and the design, development, and integration of enterprise software. In an SOA, common business operations are exposed as services that are consumed by other systems and aggregated into new applications. The services may be within the company or provided by business partners. Conversely, the services of the company may be consumed by clients or business partners.
The guiding principle of an SOA is the encapsulation of business functionality as a component along with the exposure of that component as a service that can be accessed by any consumer. While components, services, and most of the underlying technologies are not new, the application to enterprise architecture as embodied in SOA is new. A critical component of SOA is the use of standards-based technologies. By forsaking proprietary protocols, data formats, and programming interfaces, components running on heterogeneous platforms can interact with one another. By maintaining a simple binding and protocol, services can easily be wired together.
A company begins adoption of an SOA by partitioning its business functionality, as manifested in its technical assets, into discrete, reusable components. As the technical infrastructure is split and repackaged into an SOA, a company can realize a number of benefits:
By its nature, an SOA can be adopted by a company in an incremental manner. In doing so, a company can quickly enjoy the benefits shortly after the process begins rather than wait until the adoption is complete.