Loosely fashioned interacting software agents
This has been buzz word in IT industry for years that many software technologies and architectures tried to address.Coupling refers to degree of direct knowledge that one software component has about other component to achieve required behavior. In simple words how dependent a component on other component (If you take Java language, here component can be anything starting from a java class to an EJB) to achieve its intended functionality. This is a common phenomenon in designing applications. You can not really design even a single application with out dependency. Only matters here is how you are designing/coding those dependencies, how they are going to impact your application in case of change in behavior of a component and how soon you can incorporate the changes if it gets effected. Given all these you can not avoid coupling completely but we have to minimize it. SOA simply minimizes this dependency by defining services to the extent of granularity in a such a way that service is independent and self contained.Achieving this is really difficult,challenging and comes only with experience.
Easy integration among disparate software components
The effect of 1st discussed activity results in achieving this goal. It all depends on how complete your service defining exercise is. If a service is defined with sufficient granularity and self existence then integration is nothing but pick all what services you want and invoke them.
Reusing software components
This has been there for decades and most of traditional technologies achieved sufficient results. Here what I wanted to say is SOA is also not ignoring this important software designing principle.
Technology neutral
SOA design principles says application components should talk to each other without keeping the technologies in mind on which they have implemented. So technology is no longer barrier here. If you take current generation of SOA technologies/applications, they are heavily leveraging web services to realize this. Code your service in a technology of your choice and warp it up under web service (essentially providing WSDL interface to it).Any other component can call this service with out knowing the technology. Nowadays many tools exists in market to expose legacy applications as WSDL interfaced services.
Rapid application development(RAD)
Re usability always promotes rapid application development.RAD refers to ability how quickly you can build new applications.This can be achieved because we start with defining services and over the time we will have bunch of well defined in-house services where each service is intended to solve a particular business problem. When business is looking for a solution to solve a problem, probably what all you need to do is pick up from on- self services which you have been exercising for the years and compose a new application.
Now lets look at challenges we are facing in defining and realizing SOA benefits.
Identification and granularity of service
There are two approaches available to perform this activity. exercising this activity is very important and challenging too. Probably this might be first activity you start doing once you have made your mind to go with SOA. Business might be running bunch of applications where few of them are legacy and remaining are running on latest technologies. This does not mean that your are going to define and expose all of them as services.
- Top-down realization
- Bottom-up realization
Top-down realization:
This involves identifying all eligible business functionality which we are pulling into SOA layer. We take existing application and decompose into more smaller manageable units called services.
Bottom-up realization:
This involves defining all services what you are planning to implement in the first phase. Next step would be composing these smaller units into bigger one. Continue this exercise until you get a feel of sufficient level of service granularity and exposure is achieved.
Performance overhead
This is the cost we will pay. Anyway we are paying this cost because of current state technologies and hardware devices speed. In any typical SOA environment we are utilizing web services to make technology neutral and expose a service over Internet. So web services are being utilized as underline service platform. Calling a web service is always expensive because invoking web service involves wrapping the original message in SOAP envelope which adds complexity and overhead to the underlining middleware infrastructure. Considering lot of improvements in middleware servers and hardware this will be no longer bottle neck.
Service meta data maintenance
This is one of additional responsibilities that comes with SOA. Over the time we will be ending up with maintaining lot of services, many versions of same service and their meta data. Of course this responsibility goes to middleware server.
Governing services
This involves administrative part of your SOA environment. This is more political and taking business decisions rather technology part. This talks about coming up with policies for service life cycle(identifying,defining,deploying,revisioning and retiring services). It also covers who should do what aspects and also covers persons involved in SOA and their privileges. Lot of middleware servers provides applications to cover this part.
No comments:
Post a Comment