Editor's note: DM Review would like to introduce our newest online columnist. Robert Wegener is the director of solutions for RCG Information Technology. He will share his expertise on design methodologies. This month's column focuses on service-oriented architecture (SOA) and its relationship to Web services.
The term architecture is used so much today that its meaning has been confused with design, frameworks, process models and the like. Architecture is the specification of an overall structure, its logical components and the relationships between those components. Architecture can describe a network, computer hardware, wireless system, custom application, etc. and provide the guidance necessary to create, extend and maintain the system and its subsystems. For today's discussion, the focus will be on software architecture, specifically SOA.
As applications continue to evolve to match the changing environmental and business needs of an organization, so too must the software architecture. Software architecture was fairly straightforward in the confines of the mainframe. It wasn't until the advent of distributed computing that formerly closed systems had to be redesigned with accessibility and modularity in mind.
The simplest of the distributed architectures was client/server: a simple two-tier model which consists of a client application communicating with a database server on the back end. The next generation of client/server was the n-tier architecture. The n-tier architecture evolved out of the need to share business rules among applications and to enhance scalability. With the advent of the Web and its Web servers, application servers and stateless nature, the distributed architecture reached its most complex level of functionality. It is this level of complexity and the need to share information among these systems that has lead to the creation of the service-oriented architecture. For the record, SOA is not a new concept. It was used with DCOM (distributed COM) and object request brokers (ORBs) using CORBA. It is the advent of open standards such as Web services that has made the promise of true SOA a reality.
What is SOA? It is a collection of services that communicate with each other. The services are self-contained and do not depend on the context or state of the other service. They also do not work within the same processing environment, but rather within a distributed systems architecture having the following characteristics:
- It is network oriented.
- The service is formally defined in terms of message exchange patterns.
- The service tends to use a small number of public methods with complex messages.
- The logical view is defined in terms of business-level operations.
- The service is described by machine-readable meta data with only the major details exposed in the public interface.
- The messages are sent in a platform-neutral, standardized format.
A simple example is that of a Web site that employs a credit card verification process from another company. The Web application does not control the verification process. It only consumes the service, thereby eliminating the need for the service to be created in the Web application. By expanding on this theme, a full SOA can be developed by creating a framework of consumable services.
The benefits of the SOA are numerous. Complex systems can share simple interfaces with other systems, and business can look at its overall enterprise as a collection of services to be exploited, reused and shared inside and outside of the business. Where objects used to be the flavor of the day, now services are the program de jour.
The heart of SOA is also what makes it a very breakable architecture. Since services by their very nature are self-contained, they are susceptible to service outages, latency and security issues. Many of these issues are being tackled through Web services committees such as W3C, OASIS and WebServices.org. These organizations are defining how Web services should be managed, secured and how they should interoperate. This brings us to the relationship of Web services to SOA.
Web services is the vehicle through which an SOA is implemented. Web services are the open standards and protocols that ensure interoperability between systems. They are most appropriate for accessing components that run on different platforms. Web services also provide for a loosely coupled interface which eliminates the simultaneous updates of both requesters and providers. This eliminates the biggest drawback of point-to-point solutions. Web services technologies provide the framework to build a very robust SOA.
The Web services framework consists of a machine processable interface described in Web services description language (WSDL). It communicates via SOAP messages over HTTP with an XML serialization. Other standards are also being developed for security, orchestration, reliability etc. These open standards make up the building blocks of defining an SOA.
In summary, a service-oriented architecture, created using Web services, is the next generation of distributed computing. As Web services continue to mature, companies will be able to model their systems closer to the needs of the business. The ability to consume services has the potential to redefine how systems are created, managed and sold. Many of the design tools coming to market have SOA and Web services built in to provide increased productivity. The future continues to be bright for SOA and Web services.
Register or login for access to this item and much more
All Information Management content is archived after seven days.
Community members receive:
- All recent and archived articles
- Conference offers and updates
- A full menu of enewsletter options
- Web seminars, white papers, ebooks
Already have an account? Log In
Don't have an account? Register for Free Unlimited Access