Service-oriented architecture is a technical concept – but non-technical readers can benefit by understanding the basic, underlying concepts. This overview of service-oriented architecture is appropriate for both business and technical staff. The following is an excerpt from SOA for the business developer: Concepts, BPEL, and SCA, by Ben Margolis; copyright 2007. It is reprinted here with permission from MC Press. Still want to learn more? Read the full chapter, "Introduction to service-oriented architecture: What is SOA?"
Service-oriented architecture (SOA) is a way of organizing software so that companies can respond quickly to the changing requirements of the marketplace. The technology is based on services, which are customized units of software that run in a network.
- handles a business process such as calculating an insurance quote or distributing email, or handles a relatively technical task such as accessing a database, or provides business data and the technical details needed to construct a graphical interface
- can access another service and, with the appropriate runtime technology, can access a traditional program and respond to different kinds of requesters — for example, to Web applications
- is relatively independent of other software so that changes to a requester require few or no changes to the service, while changes to the internal logic of a service require few or no changes to the requester
The relative independence of the service and other software is called loose coupling. The flexibility offered by loose coupling protects your company from excessive costs when business or technical requirements change.
A service can handle interactions within your company, as well as between your company and its suppliers, partners, and customers. The location of service requesters can extend worldwide, depending on security issues and on the runtime software used to access a particular service.
In most cases, the requesting code has no details on the service location. Like the requester, the service can be almost anywhere. The location is set when the network is configured, and changes to the location are sometimes possible at network run time.
SOA implies a style of development, with concern for the business as a whole and with an increased focus on modularity and reuse. SOA isn't only for new code, though. Migration of existing applications is especially appropriate in the following cases:
- The applications are monolithic, combining the logic of user interface, business processing, and data access, with update of one kind of logic requiring your company to test multiple kinds of behavior.
- The applications are hard to understand — first, because the logic is monolithic, but second, because logic was repeatedly patched rather than rewritten as requirements changed. Updates take extra time as developers try to decipher the logic, and as the complexity grows, additional errors accompany updates.
- The application inventory has duplicate logic. Requests for change are unnecessarily disruptive, requiring changes in several places.
From the point of view of a business developer, a change to SOA is a change in emphasis, and many aspects of the job are unaffected. Consider the task of function invocation, for example. When you invoke a function, you aren't concerned with the internal logic of the invoked code or with how the function receives arguments or returns a value. Similarly, when you code a service request, you care only about the syntax for requesting the service. At best, service requests are as easy as function invocations.
Service-oriented architecture and open standards
In many industries, companies adhere to standards that allow for greater prosperity than would be possible if each company followed its own proprietary rules. Standards in housing construction, for example, ensure that manufacturers of pipes can benefit from economies of scale in pursuit of a larger market than would be available in the absence of industry-wide standards.
The primary benefit of SOA standards is that they make services interoperable, which means that services can communicate with one another, even if each implementation is written in a different computer language or is accessed by way of a different transport protocol (software that oversees the runtime transmission of data).
Standards also ensure that an SOA runtime product can support Quality of Service features, as described in Chapter 2.
SOA standards are open in the sense that any software manufacturer has the right to use those standards when developing an SOA-related product. In addition, the process of creating and revising the standards is based on a political process that is more or less democratic. Any interested party has the right to participate in all meetings that lead to decisions about a standard.
Each company that works on an open standard seeks a text that matches the company's marketplace strengths. The competition among those companies is one reason for the long delay in making a standard final.
Several major organizations oversee development of open standards for SOA:
- Organization for the Advancement of Structured Information Standards (OASIS)
- Web Services Interoperability Organization (WS-I)
- World Wide Web Consortium (W3C)
Later chapters give you practical insight into standards that are in effect or under consideration, and Appendix A describes several others.
Open standards are distinct from open source, which is source code that you can learn from and use in your own projects, with certain legal restrictions. Opensource implementations of Service Component Architecture (SCA) and Service Data Objects (SDO), for example, are being developed in the Tuscany incubator project of the Apache Software Foundation. For details and code, see the following Web sites: http://incubator.apache.org/tuscany and http://www.apache.org.
Structure of a service-oriented application
A service-oriented application is an application composed largely of services. Often, the invoked services are in a hierarchy, as Figure 1.1 illustrates.
The topmost level contains one or more integration services, each of which controls a flow of activities such as processing an applicant's request for insurance coverage. Each integration service invokes one or more business services.
The second level is composed of services that each fulfill a relatively low-level business task. For example, an integration service might invoke such business services to verify the details provided by an insurance-policy applicant. If the business services return values that are judged to mean "issue a policy," the integration service invokes yet another business service, which calculates a quote and returns the quote to the software (for example, a Web application) that invoked the service-oriented application.
The third level consists of data-access services, each of which handles the relatively technical task of reading from and writing to data-storage areas such as databases and message queues. A data-access service is most often invoked from the business layer.
Great complexity is possible. Some integration services, for example, provide different operations to different requesters, and some invoke other integration services and are said to be composed of those services. Many applications, however, fulfill the three-level model described here.
- Continue reading about service-oriented architecture in "Introduction to service-oriented architecture: What is SOA?"
- Read other excerpts from data management books in the chapter download library.
Expert advice: SOA starts with the data
Chapter excerpt: SOA and business rules management
Podcast: Service-oriented architecture and data integration basics, with expert Rick Sherman