Is SOA the Answer for Your Enterprise?
SOA (Service-Oriented Architecture) has become a buzzword of late. Although the concepts behind SOA have been around for over a decade now, SOA has gained extreme popularity of late due to web services. Before we talk about what SOA is and what the essentials behind SOA are, it is a useful first step to look back at the evolution of SOA. To do that, we have to simply look at the challenges developers have faced over the past few decades and observe the solutions that have been proposed to solve their problems.
Early programmers realized that writing software was becoming more and more complex. They needed a better way to reuse some of the code that they were rewriting. When researchers took notice of this, they introduced the concept of modular design. With modular design principles, programmers could write subroutines and functions and reuse their code. This was great for a while. Later, developers started to see that they were cutting and pasting their modules into other applications and that this started to create a maintenance nightmare; when a bug was discovered in a function somewhere, they had to track down all of the applications that used the function and modify the code to reflect the fix. After the fix, the deployment nightmare began. Developers didn’t like that; they needed a higher level of abstraction.
Researchers proposed classes and object-oriented software to solve this, and many more, problems. Again, as software complexity grew, developers started to see that developing and maintaining software was complex and they wanted a way to reuse and maintain functionality, not just code. Researchers offered yet another abstraction layer to handle this complexity — component-based software. Component-based software is/was a good solution for reuse and maintenance, but it doesn’t address all of the complexities developers are faced with today. Today, we face complex issues like distributed The Problem software, application integration, varying platforms, varying protocols, various devices, the Internet, etc. Today’s software has to be equipped to answer the call for all of the above. In short, SOA (along with web services) provides a solution to all of the above. By adopting a SOA, you eliminate the headaches of protocol and platforms and your applications integrate seamlessly.
Key Components of SOA
Service-Oriented Architecture (SOA) is an evolution of distributed computing based on the request/reply design paradigm for synchronous and asynchronous applications. An application’s business logic or individual functions are modularized and presented as services for consumer/client applications. What is key to these services is their loosely coupled nature; i.e., the service interface is independent of the implementation. Application developers or outside consultants can build applications by composing one or more services without knowing the services’ underlying implementations. For example, a service can be implemented in .Net, C, COBOL or J2EE, and the application consuming the service can be on a different platform or language.
Service-Oriented architectures have the following key characteristics:
SOA services have self-describing interfaces in platform-independent XML document/message. Web Services Description Language (WSDL) is the standard used to describe the services.
SOA services communicate with messages formally defined via XML Schema (also called XSD). Communication among consumers and providers or services typically happens in heterogeneous environments, with little or no knowledge about the provider. Messages between services can be viewed as key business documents/messages processed in an enterprise.
SOA services are maintained in the enterprise by a registry that acts as a directory listing. Application Developers can look up the services in the registry and invoke the service. Universal Description, Definition, and Integration (UDDI) is the standard used for service registry.
SOA service has a quality of service (QoS) associated with it. Some of the key QoS elements are security requirements, such as authentication and authorization, reliable messaging, and policies regarding who can invoke services.
Even though we have decades of experience in software development, we have yet to solve the mysteries of software complexity. As complexity grows, researchers find more innovative ways to answer the call. SOA, in combination with web services, is the latest answer. Application integration is one of the major issues companies face today; SOA can solve that. System availability, reliability, and scalability continue to bite companies today; SOA addresses these issues. Given today’s requirements, SOA is the best scalable solution for application architecture.