A service-oriented architecture (SOA) is an application platform that enables organizations to share and reuse loosely coupled services to accomplish business goals.The platform relies on standardized communication protocols to enable loosely coupled services to accomplish business goals.
The benefits include:
Monitoring and managing a complex SOA environment, however, can be more difficult than managing a traditional client-server environment.
In a traditional client-server environment, there is direct communication between clients and a limited number of servers. When problems occur, finding the cause of the failure is typically straightforward because only a few systems are involved in any individual business transaction. You can isolate the source of the problem by investigating the specific systems directly involved in the transaction.
Identifying the source of a problem becomes more difficult when web application servers act as a central point for distributing access to applications across multiple client-server systems. Performance degradation, errors, or operation failures can be caused by virtually any component or computer that participates in the web server connected infrastructure.
A service-oriented architecture introduces an additional layer of complexity for monitoring application performance and availability. With SOA, loosely coupled services rely on standardized communication to integrate and extend applications that run on different platforms. Because the services separate the business logic from the underlying operating system or platform, organizations can be more agile and respond quickly to changes in market or product dynamics. Individual services can be designed to handle specific parts of complex or multistep business processes, creating chains of dependencies across a heterogeneous environment.
Using a service-oriented architecture enables organizations to develop and deploy applications faster and in a more cost-effective way because services can be reused, modified, or replaced as independent components. This efficient, modular approach to application architecture, however, presents its own challenges for application management.