Service-oriented architecture (SOA) is an architectural model that supports the communication between service collections. SOA defines how core business functions, represented by computer programs, will interact to enable one business function to perform a unit of work on behalf of another business function. This interaction is loosely coupled (relaxed dependency between two applications) so that each business function is independent of any other business function.
The underlying structure usually involves the technology of web services utilizing Simple Object Access Protocol (SOAP). This is the most likely connection technology of service-oriented architecture. However, due to the protocol independence of SOA, non-web services utilization of SOA can also be implemented.
One of the many benefits of an SOA implementation is programming code reuse. When the business function requires new features or functionality, the developer can implement them into existing components rather than creating a new application from scratch. This allows companies to get much more value out of their technology dollars.
Another benefit is as changes in the business occur, a company can react more rapidly to those changes by utilizing existing components and relying less on new development.
Everyday use of SOA that you have probably utilized is when you make an online purchase, such as a book from Amazon. You look at the catalog listings and choose a book or several books. You specify your order through one service, which communicates with an inventory service to determine if the book(s) you’ve requested is available. Your order and shipping details are then directed to another service that calculates the cost of your order, applies shipping charges, and informs you of the estimated delivery date. A tracking number is also given that, through another service, will allow you to keep track of your order’s status. The entire process is managed by communications between the web services and the framework that SOA provides.