This is the first article in a six-part series dedicated to exploring the common principles of service-orientation. Acclaimed author Thomas Erl shares his insights into the service-orientation design paradigm by providing excerpts from his second SOA book "Service-Oriented Architecture: Concepts, Technology, and Design", supplemented with additional commentary.
Before a service-oriented solution can be built, it needs to be understood what makes an individual service suitable for SOA in support of its strategic goals. In other words, the question of how services can be created to be truly service-oriented needs to be asked early on in the project lifecycle.
The answer lies in a design paradigm that has emerged to uniquely distinguish the service-oriented architectural model from its predecessors. This paradigm is service-orientation and its approach to modeling business automation logic has resulted in a set of commonly accepted principles that, when applied, position and shape the primitive components (services, descriptions, messages) found in a typical service-oriented environment.
In this series of articles we will initially explore how service-orientation principles can be applied to units of automation logic that constitute services. In the latter part of the series we then discuss how service-orientation as a paradigm can be applied beyond the individual service level to form service layers that encapsulate entire enterprise domains. For now, though, let's begin with a explanation of what service-orientation actually is.
Service-Orientation and the Separation of Concerns
Service-orientation has had many influences, but its roots lie in a software engineering theory known as the "separation of concerns." This theory is based on the notion that it is beneficial to break down a large problem into a series of smaller, individual problems or concerns. This allows the logic required to solve the larger problem to also be decomposed into a collection of smaller, related pieces. Each piece of logic addresses a specific concern.
The theory has already been implemented through established paradigms, such as object-orientation and component-based approaches. Service-orientation can be viewed as a distinct (and more recent) manner in which to realize a separation of concerns. More specifically, though, key service-orientation principles provide a unique approach to how the separation is performed. In doing so, these principles establish a foundation paradigm for SOA. If you study the common characteristics associated with contemporary implementations of SOA, you will notice that several are linked to how concerns have been separated.
The Common Principles of Service-Orientation
There are many opinions, originating from public IT organizations to vendors and consulting firms, about what constitutes service-orientation. As part of an on-going industry analysis initiative by SOA Systems Inc., I have been researching and assessing perspectives of service-orientation for quite some time. The purpose of this project is to identify and describe a set of common principles that are supported by all major SOA platforms, thereby establishing a real-world definition of the service-orientation paradigm. Our focus in this series is therefore centered around those principles that have become commonly accepted in the SOA industry and supported by corresponding vendor platforms.
The most recent results establish the following eight principles:
- services share a formal contract
- services are loosely coupled
- services abstract underlying logic
- services are composable
- services are reusable
- services are autonomous
- services are stateless
- services are discoverable
Of these eight, autonomy, loose coupling, abstraction, and the need for a formal contract can be considered core principles that form a baseline foundation for SOA. Although each of the eight principles support or are supported by the others, these four directly enable the realization of the remaining principles. The study of inter-principle relationships is quite interesting and provides a deeper perspective of the unique dynamics introduced by service-orientation.
It is also worth noting that Web services naturally support a subset of these principles, which provides an indication as to why the Web services technology platform is considered so suitable for building service-oriented solutions. Later in this series we will discuss some of the relationships between principles as well as how some are intrinsically realized through the use of Web services.
To fully understand how service-orientation shapes service-oriented architecture, we need to explore the implications its application will have on all of the primary parts that comprise SOA. To kick-off this exploration, we will be focusing on loose coupling and the use of a formal contract as the first two of our principles, in part 2 of this series.
This article contains excerpts from "Service-Oriented Architecture: Concepts, Technology, and Design" by Thomas Erl (792 pages, Hardcover, ISBN: 0131858580, Prentice Hall/Pearson PTR, Copyright 2006). For more information, visit www.soabooks.com.
About the author
Thomas Erl is the world's top-selling SOA author and Series Editor of the "Prentice Hall Service-Oriented Computing Series from Thomas Erl" (www.soabooks.com). Thomas is also the founder of SOA Systems Inc., a firm specializing in strategic SOA consulting, planning, and training services (www.soatraining.com). Thomas has made significant contributions to the SOA industry in the areas of service-orientation research and the development of a mainstream SOA methodology. Thomas is involved with a number of technical committees and research efforts, and travels frequently for speaking, training, and consulting engagements. To learn more, visit www.thomaserl.com.
This was first published in February 2006