When you stumble into the kitchen in the morning and flick the switch on the kettle so you can boil water for that precious first cup of coffee, do you stop to wonder exactly where in the city the electricity is coming from, how it makes its way into your home, or what else is connected to the circuit your kettle happens to be running on?
It`s highly unlikely you do. That`s because we think of electricity as a service that is provided to us, and we do not care how it gets to us, or who else is using it. Service-oriented architecture (SOA) functions in much the same way, shifting the focus away from the application as a product, and looking rather at the particular services it can offer.
SOA is an application architecture in which all functions, or services, are defined using a description language and have invokable interfaces that are called to perform business processes. Each interaction is independent of every other interaction and the interconnect protocols of the communicating devices, which means the infrastructure components that determine the communication system do not affect the interfaces. Because interfaces are platform-independent, a client from any device using any operating system in any language can use the service. So by breaking down the components of your application software into specific business functions, SOA enables you to take those functions and make them available to subscribers who are in some way connected to that SOA.
SOA provides the primary foundation for the on-demand delivery of software as a service (SaaS). It offers opportunities for software vendors to collaborate, increase business agility and enable true business-to-business integration with other applications and software. It is an architectural design which becomes possible as a result of a mindshift that says: "Let`s not look at products, but at functions as services. We now have the technology available which allows us to interconnect a whole range of technologies in a standards-based environment, making it easy for the user to access, and for the service to be plugged into the business."
A service is defined as an exposed piece of functionality with the following characteristics:
* The interface contract to the service is platform-independent.
* The service can be dynamically located and invoked.
* The service is self-contained (it maintains its own state).
Organisations that focus their development effort around the creation of services will realise many benefits.
Rick Parry, MD, Progress Software South Africa.
Perhaps the most significant benefit of an SOA is that it simplifies and supports change from both a business and an IT perspective - a key factor in the survival and ongoing competitiveness of any organisation today. Integration can be a costly, resource-intensive and time-consuming exercise. SOA provides the flexibility to change or create business processes dynamically by making it easier for software applications to talk to each other. Simply put, it does this by taking a business process and breaking it down into its constituent components, and then enabling you to mix these components with others taken from different applications, so that you can create new, more efficient and more agile business processes.
The SOA pay-off
Organisations that focus their development effort around the creation of services will realise many benefits, including:
* SOA is suited to incremental deployment, where investment can be made on a step-by-step basis tied to individual business projects. It does not need to be fully implemented and deployed before benefits can accrue.
* Better return on investment. The creation of a robust service layer has the benefit of a better return on the investment made in the creation of the software.
* Code mobility: The lookup and dynamic binding to a service means that the client does not care where the service is located. Therefore, an organisation has the flexibility to move services to different machines, or to move a service to an external provider.
* Focused developer roles: SOA forces an application to have multiple layers. Each layer has a set of specific roles for developers.
* Better security: Services are used by multiple applications, so they have their own security mechanisms. An application will therefore have multi-level authentication at both the client and service level.
* Support for multiple clients: As a benefit of an SOA, companies may use multiple clients and multiple client types to access a service.
* Better scalability: One of the requirements of an SOA is location transparency. This promotes scalability since a load balancer may forward requests to multiple service instances without the knowledge of the service client.
* Higher availability: Because of location transparency, multiple servers may have multiple instances of a service running on them. If a network segment or a machine goes down, a dispatcher can redirect requests to another service without the client`s knowledge.
Finally, SOA allows companies to leverage their existing technologies rather than replace them. In addition, code reuse is a major selling point - developers have only to figure out the interfaces for existing applications, rather than writing new applications from scratch each time new business rules are developed. Building toward a standardised SOA provides the benefits of reusability across the company, enabling developers to assemble products from existing components.
Share