Technology Drivers for SOA
Service oriented architecture gives an organization – enterprise IT. Functionalities are expected to service more than one application need i.e. enterprise need instead of residing in each application separately. When an organization decides to go for enterprise IT, there will be definitely business drivers which will result in monitory benefits. But in addition there will be technology factors, which force the management and architect to think of a SOA approach. In this post, we are going to discuss few common technology factors which drive SOA decisions.
Platform: Java and .NET technologies make an application platform independent. But when we want two or more heterogeneous applications i.e. one in Java and other in .NET to talk to each other, then it becomes difficult to introduce an independent interfacing platform. We can go for an adapter that understands other application and makes talking possible. But if there are multiple applications to be connected, then we may end up building as many adapters as the applications. Sounds cumbersome! Instead, if each application provides a generic interface which every other application can understand, then it will be a easy solution. SOA is used to fulfill this requirement. SOA uses webservices which offer platform and technology independent integration possibilities.
Standard: Taking above application integration point further, there is need of some guidelines/standards which can govern application integration. Availability of standards will bring uniformity in application integration. Standards also help in defining interface contracts, which work as a service agreement between the applications. Webservices can be written using standards that make platform and technology independent integration work.
Maintainability: SOA introduces modularity in application; hence addition of a new functionality is actually modifying a module or adding a new module. This can be achieved without impacting rest of the application. Addition of functionality can also be dynamic in nature because of SOA.
Complexity: As discussed in above point, breaking of application into smaller modules and definite services, reduces complexity. Further this approach can be used to break all enterprise applications into smaller services. This simplifies complex application environment into a simple serving modules.
Middleware: Enterprise application portfolio can be organized to have a central enterprise communication bus (also called as enterprise service bus) to which different enterprise services can be plugged and played. This enterprise bus can be a back bone of an enterprise. Also it can provide better control over enterprise application stack.
Reuse: Identifying a service that can cater to need of many applications avoids placement of such functionality in all applications. It increases reuse in application ultimately resulting in cost reduction.