The lifecycle of an SOA delivery project is simply comprised of a series of steps that need to be completed to construct the services for a given service-oriented solution.
10.1.1. Basic phases of the SOA delivery lifecycle
Development projects for service-oriented solutions are, on the surface, much like other custom development projects for distributed applications. Web services are designed, developed, and deployed alongside standard components and the usual supporting cast of front- and back-end technologies. When we dig a bit deeper under the layers of service-orientation, though, we'll find that to properly construct and position services as part of SOA, traditional project cycles require some adjustments.
Looking at Figure 10.1, you may wonder why the first two phase names are prefixed with "service-oriented" when the remaining phases have names that begin with just "service." The main reason we make this distinction is because it is during the analysis and design stages that the SOA characteristics and service-orientation principles we've been discussing actually are incorporated into the solution being built. So much so, that they warrant unique analysis and design processes that are distinctly "service-oriented." The service phases are primarily concerned with the delivery of services that implement the results of service-oriented analysis and design efforts.
Figure 10.1. Common phases of an SOA delivery lifecycle.
Let's now explain each of these lifecycle phases.
10.1.2. Service-oriented analysis
It is in this initial stage that we determine the potential scope of our SOA. Service layers are mapped out, and individual services are modeled as service candidates that comprise a preliminary SOA.
A formal step-by-step service modeling process is provided as part of the two chapters (11 and 12) dedicated to the service-oriented analysis phase.
10.1.3. Service-oriented design
When we know what it is we want to build, we need to determine how it should be constructed. Service-oriented design is a heavily standards-driven phase that incorporates industry conventions and service-orientation principles into the service design process.
This phase, therefore, confronts service designers with key decisions that establish the hard logic boundaries encapsulated by services. The service layers designed during this stage can include the orchestration layer, which results in a formal business process definition.
Four formal step-by-step design processes are provided within the four chapters (13 to 16) dedicated to the service-oriented design phase.
10.1.4. Service development
Next, of course, is the actual construction phase. Here development platform-specific issues come into play, regardless of service type. Specifically, the choice of programming language and development environment will determine the physical form services and orchestrated business processes take, in accordance with their designs.
As part of our coverage of SOA platforms, we explore development and runtime technologies associated with the .NET and J2EE platforms in Chapter 18.
10.1.5. Service testing
Given their generic nature and potential to be reused and composed in unforeseeable situations, services are required to undergo rigorous testing prior to deployment into a production environment.
Below is a sampling of some of the key issues facing service testers:
10.1.6. Service deployment
The implementation stage brings with it the joys of installing and configuring distributed components, service interfaces, and any associated middleware products onto production servers.
Typical issues that arise during this phase include:
Service deployment is specific to the technology platform for which services are developed. Chapter 18 provides various details regarding the physical implementation of services within J2EE and .NET environments.
10.1.7. Service administration
After services are deployed, standard application management issues come to the forefront. These are similar in nature to the administration concerns for distributed, component-based applications, except that they also may apply to services as a whole (as opposed to services belonging to a specific application environment).
Issues frequently include:
Service testing and administration are beyond the scope of this book.
10.1.8. SOA delivery strategies
The lifecycle stages identified in the previous sections represent a simple, sequential path to building individual services.
We now need to organize these stages into a process that can:
The last item on this list poses the greatest challenge. The success of SOA within an enterprise is generally dependent on the extent to which it is standardized when it is phased into business and application domains. However, the success of a project delivering a service-oriented solution generally is measured by the extent to which the solution fulfills expected requirements within a given budget and timeline.
To address this problem, we need a strategy. This strategy must be based on an organization's priorities to establish the correct balance between the delivery of long-term migration goals with the fulfillment of short-term requirements. Three common strategies have emerged, each addressing this problem in a different manner.
These paths differ in priorities and practical considerations. The following three sections provide process descriptions and explore the pros and cons of each approach.
How you approach the creation of a service-oriented environment ultimately determines what you will end up with. The strategies discussed here, therefore, will confront you with some important decision-making. Choosing the right approach will determine the extent to which your service-oriented modeling and design efforts can realize the full potential of SOA.
If you're not interested in learning about the individual steps that comprise each of the following processes at this point, feel free to skip ahead to the Pros and cons part of each section. Knowledge of individual process steps is not required for subsequent reading.
SUMMARY OF KEY POINTS