SOA PRINCIPLES OF SERVICE DESIGN BOOK
“This book could be described as an encyclopedia of service design–Erl leaves SOA Principles of Service Design and millions of other books are available for . SOA Principles of Service Design [Thomas Erl] on ppti.info *FREE* shipping on qualifying offers. The goal of this book is to help you attain a solid. It contains extremely important material for those who need to design services.” —Farzin Yashar, IBM SOA Advanced Technologies “Thomas Erl's books are.
|Language:||English, Spanish, French|
|Genre:||Health & Fitness|
|ePub File Size:||17.45 MB|
|PDF File Size:||17.26 MB|
|Distribution:||Free* [*Regsitration Required]|
“This book could be described as an encyclopedia of service design—Erl leaves on defining service characteristics and service design principles for SOA. The Definitive Guide to Service Engineering The key to succeeding with service- oriented architecture (SOA) is in comprehending the meaning. SOA book. Read 7 reviews from the world's largest community for readers. The Definitive Guide to Service Design for SOAThe key to succeeding with service.
This competitor is larger and has more resources already in place. Cutit knows it must expand soon, or it will lose out on a chance for significant growth. After the competitor releases its product, their window of opportunity to establish new clients will rapidly shrink.
One of the biggest challenges to expanding the company is its current automation environment. The home grown system that has served them for so long is simply not scalable anymore. There have already been numerous performance and concurrent usage 22 Chapter 2: Case Study problems that the on-staff developers have tried to address. The team has been in agreement for some time that a new enterprise solution needs to be introduced. During a strategy meeting it is decided that this new enterprise be based, from the ground up, on SOA.
This decision was reached for two primary reasons: The success of the latest chain model caught the team by surprise and made them realize that they cannot anticipate what will be in store for the duration of their tenure as owners. Therefore, simply replacing the existing system with one that is suitable for their immediate expansion plans is risky and expensive.
If they were to expand again, they may have to undergo the same type of overhaul. They conclude that a service-based approach will allow them to continue to grow and scale as required. As a result, it is critical that their automation environment be contemporized. Furthermore, they are hoping that by investing into an SOA model, their company will be a more attractive acquisition target; by modularizing their enterprise into services, foreign integration and reorganization will be easier and more cost-effective.
Despite the rationale, the path ahead still poses some significant challenges. For example, their immediate need for an expanded system may compromise some of the upfront effort generally required to properly model and design services. Case study examples are then supplied at the end of subsequent chapters in Part II. Appendix A concludes the case study storyline. Part I Fundamentals Chapter 3: Service-Orientation Chapter 5: Understanding Design Principles T o fully understand service-oriented architecture you need to become familiar with what constitutes the service-oriented computing platform.
To fully understand service-oriented computing, you need to comprehend the meaning and significance of its most fundamental building block: These initial introductory chapters provide a starting point for this exploration by establishing high-level concepts and associated terminology.
Many IT terms suffer from wide-spread ambiguity, which sometimes makes having even the simplest conversation difficult. We describe a distinct approach to designing solution logic. To ensure that the descriptions of associated topics are easily understood, a communications framework needs to be established, comprised of a collection of terms with very explicit definitions. That is what this chapter is dedicated to providing. The books in this series use a common vocabulary comprised of the following design-related terms: More often than not, though, you will notice that they all are somewhat intertwined.
The following sections explain each term and conclude with a section that illustrates how they form a common, fundamental design framework. An automated business solution will have numerous unique characteristics that were established during its initial design Figure 3. Hence, the type of design characteristic we are interested in is a specific attribute or quality of a body of solution logic that we document in a design specification and plan to realize in development.
Figure 3. We will continue to reference these applications in the upcoming sections. Note that the small squares represent units of solution logic, solid arrows represent reuse or shared access, and dashed arrows represent state data transfer.
Service-orientation emphasizes the creation of very specific design characteristics, while also de-emphasizing others. It is important to note that almost every design characteristic we explore is attainable to a certain measure.
This means that it is generally not about whether solution logic does or does not have a certain characteristic; it is almost always about the extent to which a characteristic can or should be realized. Although each system can have its own unique characteristics, we are primarily interested in establishing common design characteristics.
Increased commonality ensures an 28 Chapter 3: Service-Oriented Computing and SOA increased degree of consistency, making different kinds of solution logic more alike. When things are more alike they become more predictable. In the world of distributed, shareable logic, predictability is a good thing. Predictable design characteristics lead to predictable behavior. This, in turn, leads to increased reliability and the opportunity to leverage solution logic in many different ways.
Much of this book is dedicated to providing a means of establishing a specific collection of design characteristics that spread consistency, predictability, and reliability on many levels and for different purposes.
Design Principle A principle is a generalized, accepted industry practice. You can compare a principle with a best practice in that both propose a means of accomplishing something based on past experience or industry-wide acceptance.
When it comes to building solutions, a design principle represents a highly recommended guideline for shaping solution logic in a certain way and with certain goals in mind Figure 3. These goals are usually associated with establishing one or more specific design characteristics as a result of applying the principle.
In this case, the coupling between solution logic units A and B has been loosened as indicated by a reduction of connection points. Applying this principle results in the solution logic being partitioned into individually distributable units. This then establishes the distinct design characteristic of the solution logic becoming componentized.
This is not only an example of a very broad design principle, but it is also the starting point for service-orientation. The eight design principles documented in this book provide rules and guidelines that help determine exactly how solution logic should be decomposed and shaped into distributable units. A design paradigm within the context of business automation is generally considered a governing approach to designing solution logic.
It normally consists of a set of complementary rules or principles that collectively define the overarching approach represented by the paradigm Figure 3.
In the example, the amount of reuse in A and B has increased. Service-Oriented Computing and SOA Object-orientation or object-oriented design is a classic example of an accepted design paradigm.
It provides a set of principles that shape componentized solution logic in certain ways so as to fulfill a specific set of goals. Along those very same lines, service-orientation represents its own distinct design paradigm.
Like object-orientation, it is a paradigm that applies to distributed solution logic. However, because some of its principles differ from those associated with objectorientation as explained in Chapter 14 , it can result in the creation of different types of design characteristics.
The paradigm itself sounds pretty complete, and it actually is. However, to successfully apply it in the real world requires more than just a theoretical understanding of its principles. Service designers will be regularly faced with obstacles and challenges when attempting to apply a design paradigm because the realization of desired design characteristics is frequently complicated by various factors, including: A design pattern describes a common problem and provides a corresponding solution Figure 3.
It essentially documents the solution in a generic template format so that it can be repeatedly applied. Knowledge of design patterns not only arms you with an understanding of the potential problems designs may be subjected to, it provides answers as to how these problems are best dealt with.
In this simplified example, a pattern suggests we reduce external access to a database to increase application autonomy. Design patterns are born out of experience. When a problem and its corresponding solution were identified as sufficiently common, the basis of a design pattern was formed.
Design patterns can be further combined into compound patterns that solve larger problems and a series of patterns can form the basis of a pattern language, as explained next. NOTE Appendix C provides cross-references of design principles and associated design patterns documented as part of the pattern catalog published in SOA: Design Pattern Language The application of one design pattern can raise new issues or problems for which another pattern may be required.
A collection of related patterns can establish a formalized expression of a design process whereby each addresses a primary decision point. Combining patterns in this manner forms the basis of a pattern language. Service-Oriented Computing and SOA A pattern language is essentially comprised of a chain of related design patterns that establish a configurable sequence in which the patterns can be applied Figure 3.
Such a language provides a highly effective means of communicating fundamental aspects of a given design approach because it supplies detailed documentation of each major step in a design process that shapes the design characteristics of solution logic. In this example, the logic in application design B is decomposed as a result of one pattern, and then further decomposed as a result of another.
Subsequent fundamental patterns continue to shape the logic. Design Standard For an organization to successfully apply a design paradigm, it will require more than an adherence to the associated design principles and a knowledge of supporting design patterns.
Every organization will have unique strategic goals and unique enterprise environments. These form a distinct set of requirements and constraints that need to be accommodated within solution designs. It is through the use of internal design standards that organizations can consistently deliver solutions tailored to their environments, resources, goals, and priorities Figure 3. As with design principles, the application of design standards results in the creation of specific design characteristics.
As with design patterns, design standards foster and refine these characteristics to avoid potential problems and to strengthen the overall solution design. In fact, it is recommended for design standards to be based upon or even derived from industry design principles and patterns.
Can you have design standards without design principles? Yes, it is actually common to have many design standards. Only some may need to relate back to principles in order to see through the application of the overall design paradigm. Different design standards may also be created to simply support other goals or compensate for constraints imposed by specific environmental, cultural, or technology-related factors.
Although some standards may have no direct association with accepted design principles, there should always be an effort to keep all standards in relative alignment. Can you have design principles without design standards?
It usually depends on how committed an organization is to the governing design paradigm. However, this approach is not common. Essentially, as with design principles, through standardization we want to build consistency into specific design characteristics—consistency in the quality of the characteristics and in how frequently they are implemented.
The former, as we just described, refers to internal or custom standards that apply to the design of solution logic and systems for a particular enterprise. The latter generally represents open technology standards, such as those that comprise the XML and Web services platforms.
Sometimes organizations assume that if they use industry standards, they will end up with a standardized IT enterprise. While those XML and Web services specifications that have become ratified and accepted industry standards do establish a level of technology standardization, it is still up to an organization to consistently position and apply these technologies. Without design standards, industry standards can easily fail in achieving their potential.
Best Practice A best practice is generally considered a technique or approach to solving or preventing certain problems Figure 3. It is usually a practice that has industry recognition and has emerged from past industry experience. How then is a best practice differentiated from a design principle? In this book we make a clear distinction in that a design principle is limited to design only. A best practice can relate 3.
SOA: Principles of Service Design
A design principle could be considered a best practice associated only with solution design. Note that several best practices are provided throughout this book in support of applying design principles. An additional set of more detailed practices is located in Chapter A Fundamental Design Framework Each of the previous sections described a piece of intelligence that can act as input into an overall design process. When designing service-oriented solutions it is practically inevitable that some or all of these pieces be used together.
It is therefore important to understand how they relate to each other so that we can gain a foreknowledge of how and where they are best utilized. Finally, Figure 3. This diagram hints at how some parts of a basic design framework can relate to each other. It is important to emphasize how design standards, design patterns, and best practices can all support the successful application of a design paradigm and, as a result, the attainment of its goals.
As such, it encompasses many things, including its own design paradigm and design principles, design pattern catalogs, pattern languages, a distinct architectural model, and related concepts, technologies, and frameworks. It sounds like a pretty big umbrella, and it is. Service-oriented computing builds upon past distributed computing platforms and adds new design layers, governance considerations, and a vast set of preferred implementation technologies. The basic symbols introduced in these sections are used repeatedly within subsequent parts of this book.
Service-Oriented Computing and SOA Service-Oriented Architecture SOA establishes an architectural model that aims to enhance the efficiency, agility, and productivity of an enterprise by positioning services as the primary means through which solution logic is represented in support of the realization of strategic goals associated with service-oriented computing.
On a fundamental basis, the service-oriented computing platform revolves around the service-orientation design paradigm and its relationship with service-oriented architecture. It is therefore very important to make a clear distinction between what SOA actually is and how it relates to other service-oriented computing elements. As a form of technology architecture, an SOA implementation can consist of a combination of technologies, products, APIs, supporting infrastructure extensions, and various other parts Figure 3.
The actual face of a deployed service-oriented architecture is unique within each enterprise; however it is typified by the introduction of new technologies and platforms that specifically support the creation, execution, and evolution of service-oriented solutions. As a result, building a technology architecture around the service-oriented architectural model establishes an environment suitable for solution logic that has been designed in compliance with service-orientation design principles.
The application of these principles to the design of solution logic results in serviceoriented solution logic.
The most fundamental unit of service-oriented solution logic is the service. Services exist as physically independent software programs with distinct design characteristics that support the attainment of the strategic goals associated with serviceoriented computing.
Each service is assigned its own distinct functional context and is comprised of a set of capabilities related to this context. Those capabilities suitable for invocation by external consumer programs are commonly expressed via a published service contract much like a traditional API. See the SOA and Web Services section for an introduction to the symbols used to illustrate a physical design perspective of services implemented as Web services.
Note also that services and service-orientation are explored in detail in Chapter 4. Alternatively, the chorded circle symbol introduced in Chapter 1 can also be used. Service Compositions A service composition is a coordinated aggregate of services. As explained in the Effects of Service-Orientation on the Enterprise section in Chapter 4, a composition of services Figure 3. Other, more detailed representations are based on the use of chorded circle symbols to illustrate which service capabilities are actually being composed.
The consistent application of service-orientation design principles leads to the creation of services with functional contexts that are agnostic to any one business process. These agnostic services are therefore capable of participating in multiple service compositions. Service-Oriented Computing and SOA As further discussed in Chapters 13 and 16, the ability for a service to be naturally and repeatedly composable is fundamental to attaining several of the key strategic goals of service-oriented computing.
Therefore, many of the design characteristics that distinguish a service enable it to effectively participate in service compositions. Service Inventory A service inventory is an independently standardized and governed collection of complementary services within a boundary that represents an enterprise or a meaningful segment of an enterprise.
An IT enterprise may include a service inventory that represents the extent to which SOA has been adopted. Larger initiatives may even result in the enterprise in its entirety being comprised of an enterprise-wide service inventory. Alternatively, an enterprise environment can contain multiple service inventories, each of which can be individually standardized, governed, and supported by its own service-oriented technology architecture. Service inventories are typically created through top-down delivery processes that result in the definition of service inventory blueprints.
The subsequent application of serviceorientation design principles and custom design standards throughout a service inventory is of paramount importance so as to establish a high degree of native inter-service interoperability. This supports the repeated, agile creation of effective service compositions. Note that service inventory blueprints are explained later in this chapter. Understanding them individually is just as important as understanding how they can relate to each other because these relationships establish some of the most fundamental dynamics of service-oriented computing.
When applied to units of solution logic, these principles create services with distinct design characteristics that support the overall goals and vision of service-oriented computing. These relationships are further illustrated in Figure 3. To fully appreciate how these elements are ultimately used we need to explore how they translate into the real world. To do so, we need to clearly distinguish the role and position of each element within a physical implementation perspective, as follows: This implementation-centric view brings to light how service-oriented computing can change the overall complexion of an enterprise.
Because the majority of services delivered are positioned as reusable resources agnostic to business processes, they do not belong to any one application silo. By dissolving boundaries between applications, the enterprise is increasingly represented by a growing body of services that exist within an expanding service inventory Figure 3. However, when making reference to the service-oriented computing platform, we need to acknowledge the vast amounts of vendor development and runtime technologies that comprise its technology landscape.
It is the makeup of these platforms and their combined technology innovations that have helped drive the evolution of service-oriented computing in the mainstream IT industry. Service Models When building various types of services, it becomes evident that they can be categorized depending on: Though these layers tend to form a natural composition hierarchy, there are no rules as to how services can be assembled.
Examples of business entities include customer, employee, invoice, and claim. The entity service model Figure 3. It is considered a highly reusable service because it is agnostic to most parent business processes. As a result, a single entity service can be leveraged to automate multiple parent business processes.
Entity services are also known as entitycentric business services or business entity services. Several of its capabilities are reminiscent of traditional CRUD create, read, update, delete methods.
Task Services A business service with a functional boundary directly associated with a specific parent business task or process is based on the task service model Figure 3.
This type of service tends to have less reuse potential and is generally positioned as the controller of a composition responsible for composing other, more process-agnostic services. When discussing task services, one point of clarification often required is in relation to entity service capabilities.
Each Figure 3. An entity Invoice service, for example, may have an Add capability that contains process logic associated with creating a new invoice record.
The primary distinction has to do with the functional scope of the capability. To carry out this process may require that the capability logic interact with other services representing different business entities, but the functional scope of the capability is clearly associated with the functional context of the Invoice service. If, however, we had a billing consolidation process that retrieved numerous invoice and PO records, performed various calculations, and further validated consolidation results against client history billing records, we would have process logic that spans multiple entity domains and does not fit cleanly within a functional context associated with a business entity.
Services with a functional context defined by a parent business process or task can be developed as standalone Web services or components—or—they may represent a business process definition hosted within an orchestration platform. In the latter case, the design characteristics of the service are somewhat distinct due to the specific nature of the underlying technology.
In this case, it may be preferable to qualify the service model label accordingly. This type of service is referred to as the orchestrated task service. Task services are also known as task-centric business services or business process services. Orchestrated task services are also known as process services, business process services, or orchestration services.
Establishing a task service layer does not abstract or centralize all business process logic. Its purpose is primarily to abstract non-agnostic process logic in support of agnostic service models. Service-Oriented Computing and SOA Utility Services Each of the previously described service models has a very clear focus on representing business logic. However, within the realm of automation, there is not always a need to associate logic with a business model or process.
In fact, it can be highly beneficial to deliberately establish a functional context that is non-business-centric. This essentially results in a distinct, technology-oriented service layer. The utility service model Figure 3. It is dedicated to providing reusable, cross-cutting utility functionality, such as event logging, notification, and exception handling. It is ideally application agnostic in that it can consist of a series of capabilities that draw from multiple enterprise systems and resources, while making this functionality available within a very specific processing context.
Utility services are also known as application services, infrastructure services, or technology services. NOTE Entity, task, and utility service models are intentionally generic in nature in that they apply to just about any type of enterprise. Customized variations can be further derived to fulfill specific types of domain abstraction. By doing so, an enterprise is given the freedom to continually pursue the strategic goals associated with service-oriented computing by leveraging future technology advancements.
In the current marketplace, the technology platform most associated with the realization of SOA is Web services. Web Services Standards The Web services platform is defined through a number of industry standards that are supported throughout the vendor community. This platform can be partitioned into two clearly identifiable generations, each associated with a collection of standards and specifications: These specifications have been around for some time and have been adopted across the IT industry.
However, the platform they collectively represent seriously lacks several of the quality of service features required to deliver mission critical, enterprise-level production functionality. These, along with many other extensions, represent the secondgeneration Web services platform. Consisting of numerous specifications that 48 Chapter 3: Web Services Architecture A typical Web service is comprised of the following: This service contract exposes public functions called operations and is therefore comparable to a traditional application programming interface API.
This logic may be custom-developed for the Web service, or it may exist as legacy logic that is being wrapped by a Web service in order for its functionality to be made available via Web services communication standards. In the case that logic is custom-developed, it generally is created as components and is referred to as the core service logic or business logic.
Much of this logic is provided by the runtime environment, but it can also be customized. The programs that carry out message-related processing are primarily event-driven and therefore can intercept a message subsequent to transmission or prior to receipt. It is common for multiple message processing programs to be invoked with every message exchange. A Web service can be associated with temporary roles, depending on its utilization at runtime. For example, it acts as a service provider when it receives and responds to request messages, but can also assume the role of service consumer when it is required to issue request messages to other Web services.
When Web services are positioned within service compositions, it is common for them to transition through service provider and service consumer roles additional composition-related roles are explained in Chapter Note also that regular programs, components, and legacy systems can also act as Web service consumers as long as they are able to communicate using Web services standards.
Service-orientation principles can affect the design of all displayed parts. Web Services and Service-Oriented Computing The popularity of Web services preceded that of service-oriented computing. As a result, their initial use was primarily within traditional distributed solutions wherein they were most commonly used to facilitate point-to-point integration channels. As the maturity and adoption of Web services standards increased, so did the scope of their utilization.
Service-Oriented Computing and SOA With service-oriented computing comes a distinct architectural model that has been positioned by the vendor community as one that can fully leverage the open interoperability potential of Web services, especially when individual services are consistently shaped by service-orientation.
For example, when exposing reusable logic as Web services, the reuse potential is significantly increased. Because service logic can now be accessed via a vendor-neutral communications framework, it becomes available to a wider range of service consumer programs.
Additionally, the fact that Web services provide a communications framework based on physically decoupled contracts allows each service contract to be fully standardized independently from its implementation.
This facilitates a potentially high level of service abstraction while providing the opportunity to fully decouple the service from any proprietary implementation details. For example, transformation avoidance is a key goal of Standardized Service Contracts. As explained in Chapter 6, this principle advocates the standardization of the data model expressed by the service contract so as to increase intrinsic interoperability by reducing the need for transformation technologies.
As illustrated in Figure 3. Services expressed through Web service contracts have the potential to avoid transformation altogether. NOTE To learn more about first and second-generation Web services technologies, read the tutorials posted at www. While these are not covered in this book, it would be worthwhile reading up on them to understand how they differ and where they are most commonly encountered.
Service Inventory Blueprints An ultimate goal of an SOA transition effort is to produce a collection of standardized services that comprise a service inventory. The inventory can be structured into layers according to the service models used, but it is the application of the service-orientation paradigm to all services that positions them as valuable IT assets in full alignment with the strategic goals associated with the SOA project.
Service-Oriented Computing and SOA However, before any services are actually built, it is desirable to establish a conceptual blueprint of all the planned services for a given inventory. This perspective is documented in the service inventory blueprint. There are several common business and data models that, if they exist within an organization, can provide valuable input for this specification.
Examples include business entity models, logical data models, canonical data and message models, ontologies, and other information architecture models. A service inventory blueprint is also known as a service enterprise model or a service inventory model.
Service-Oriented Analysis and Service Modeling To effectively deliver standardized services in support of building a service inventory, it is recommended that organizations adopt a methodology specific to SOA and consisting of structured analysis and design processes. Within SOA projects, these processes are centered around the accurate expression of business logic through technology, which requires that business analysts play a more active role in defining the conceptual design of solution logic.
This guarantees a higher degree of alignment between the documented business models and their implementation as services. Agnostic business services especially benefit from hands-on involvement of business subject matter experts, as the improved accuracy of their business representation increases their overall longevity once deployed.
Service-oriented analysis establishes a formal analysis process completed jointly by business analysts and technology architects.
Service modeling, a sub-process of serviceoriented analysis, produces conceptual service definitions called service candidates. Iterations through the service-oriented analysis and service modeling processes result in the gradual creation of a collection of service candidates documented as part of a service inventory blueprint.
While the collaborative relationship between business analysts and architects depicted at the lower half of Figure 3. Service-Oriented Design The service-oriented design process uses a set of predefined service candidates from the service inventory blueprint as a starting point from which they are shaped into actual physical service contracts.
When carrying out service-oriented design, a clear distinction is made between service candidates and services. The former represents a conceptual service that has not been implemented, whereas the latter refers to a physical service. As shown in Figure 3. Creating the Web service contract prior to development allows for standards to be applied so that the federated endpoints established by Web services are consistent and aligned. NOTE Appendix B contains illustrations and brief descriptions of service-oriented analysis and design processes for reference purposes.
SOA is fundamental to all of the content in the remaining chapters and therefore a solid understanding of the concepts behind its architectural model and technologies commonly used for its implementation is recommended. However, Web services currently provide the foremost means of implementing services.
The vision behind service-oriented computing is extremely ambitious and therefore also very attractive to any organization interested in truly improving the effectiveness of its IT enterprise. A set of common goals and benefits has emerged to form this vision. These establish a target state for an enterprise that successfully adopts service-orientation.
The upcoming set of sections describe each of these strategic goals and benefits also displayed in Figure 3. Increased organization agility, increased ROI, and reduced IT burden are concrete benefits resulting from the attainment of the remaining four goals. An important message of this book in general is that there is a concrete link between successfully applying service-orientation design principles and successfully attaining these specific goals and benefits a point which is further detailed in Chapter Therefore, the goals and benefits listed here are frequently associated with SOA as well.
Increased Intrinsic Interoperability Interoperability refers to the sharing of data. The more interoperable software programs are, the easier it is for them to exchange information. Software programs that are not interoperable need to be integrated. Therefore, integration can be seen as a process that enables interoperability. A goal of service-orientation is to establish native interoperability within services in order to reduce the need for integration Figure 3. In fact, integration as a concept begins to fade within service-oriented environments as further explained in the Effects of Service-Orientation on the Enterprise section in Chapter 4.
Get A Copy
In this example, the intrinsic interoperability of the Invoice and Timesheet services delivered by Project Teams A and B allow them to be combined into a new service composition by Project Team C. Interoperability is specifically fostered through the consistent application of design principles and design standards.
This establishes an environment wherein services produced by different projects at different times can be repeatedly assembled together into a variety of composition configurations to help automate a range of business tasks. Intrinsic interoperability represents a fundamental goal of service-orientation that establishes a foundation for the realization of other strategic goals and benefits.
Contract standardization, scalability, behavioral predictability, and reliability are just some of the design characteristics required to facilitate interoperability, all of which are addressed by the service-orientation principles documented in this book.
How specifically service-orientation design principles foster interoperability within services is explained in the Service-Orientation and Interoperability section of Chapter 4. Service-Oriented Computing and SOA Increased Federation A federated IT environment is one where resources and applications are united while maintaining their individual autonomy and self-governance. SOA aims to increase a federated perspective of an enterprise to whatever extent it is applied.
It accomplishes this through the widespread deployment of standardized and composable services each of which encapsulates a segment of the enterprise and expresses it in a consistent manner. In support of increasing federation, standardization becomes part of the extra up-front attention each service receives at design time. Ultimately this leads to an environment where enterprise-wide solution logic becomes naturally harmonized, regardless of the nature of its underlying implementation Figure 3.
However, even when using Web services the key success factor to achieving true unity and federation remains the application of design principles and standards. It is not necessarily beneficial for an organization to have a vendordiverse environment; however, it is beneficial to have the option to diversify when required.
To have and retain this option requires that its technology architecture not be tied or locked into any one specific vendor platform.
This represents an important state for an enterprise in that it provides the constant freedom for an organization to change, extend, and even replace solution implementations and technology resources without disrupting the overall, federated service architecture. This measure of governance autonomy is attractive because it prolongs the lifespan and increases the financial return of automation solutions. By designing a service-oriented architecture in alignment with but neutral to major vendor SOA platforms and by positioning service contracts as standardized endpoints throughout a federated enterprise, proprietary service implementation details can be abstracted to establish a consistent inter-service communications framework.
This provides organizations with constant options by allowing them to diversify their enterprises as needed Figure 3. Vendor diversification is further supported by taking advantage of the standards-based, vendor-neutral Web services framework.
Because they impose no proprietary communication requirements, Web services further decrease dependency on vendor platforms. As with any other implementation medium, though, Web services need to be shaped and standardized through service-orientation in order to become a federated part of an SOA.
If service-orientation is adequately applied to the services, underlying disparity will not inhibit their ability to be combined into effective compositions. Increased Business and Technology Domain Alignment The extent to which IT business requirements are fulfilled is often associated with the accuracy with which business logic is expressed and automated by solution logic.
Although initial applications have traditionally been designed to address immediate and tactical requirements, it has historically been challenging to keep applications in alignment with business needs when the nature and direction of the business changes. Service-oriented computing introduces a design paradigm that promotes abstraction on many levels. One of the most effective means by which functional abstraction is applied is the establishment of service layers that accurately encapsulate and represent business models.
By doing so, common, pre-existing representations of business logic business entities, business processes can exist in implemented form as physical services. This is accomplished by incorporating a structured analysis and modeling process that requires the hands-on involvement of business subject matter experts in the actual definition of the conceptual service candidates as explained in the Service-Oriented Analysis 3.
The resulting service designs are capable of aligning automation technology with business intelligence on an unprecedented level Figure 3. Furthermore, the fact that services are designed to be intrinsically interoperable directly facilitates business change. As business processes are augmented in response to various factors business climate changes, new competitors, new policies, new priorities, etc.
This allows a service-oriented technology architecture to evolve in tandem with the business itself. Increased ROI Measuring the return on investment ROI of automated solutions is a critical factor in determining just how cost effective a given application or system actually is. The greater the return, the more an organization benefits from the solution. Traditional, silo-based applications tend to get extended over time, resulting in potentially complex environments with effort-intensive maintenance requirements.
For many organizations, the financial overhead required by IT is a primary concern because it often continues to rise without demonstrating any corresponding increase in business value.
Service-oriented computing advocates the creation of agnostic solution logic—logic that is agnostic to any one purpose and therefore useful for multiple purposes. This multipurpose or reusable logic fully leverages the intrinsically interoperable nature of services. Agnostic services have increased reuse potential that can be realized by allowing 62 Chapter 3: Any one agnostic service can therefore find itself being repurposed numerous times to automate different business processes as part of different service-oriented solutions.
With this benefit in mind, additional up-front expense and effort is invested into every piece of solution logic so as to position it as an IT asset for the purpose of repeatable, long-term financial returns. This has much to do with the fact that service-orientation aims to establish reuse as a common, secondary characteristic within most services. More is invested in the initial delivery with the goal of benefiting from increased subsequent reuse.
It is important to acknowledge that this goal is not simply tied to the benefits traditionally associated with software reuse. Proven commercial product design techniques are incorporated and blended with existing enterprise application delivery approaches to form the basis of a distinct set of service-oriented analysis and design processes as described earlier in the Service-Oriented Analysis and Service Modeling and ServiceOriented Design sections.
Increasing organizational agility is very attractive to corporations, especially those in the private sector.
Being able to more quickly adapt to industry changes and outmaneuver competitors has tremendous strategic significance.
Service-orientation design principles
An IT department can sometimes be perceived as a bottleneck, hampering desired responsiveness by requiring too much time or resources to fulfill new or changing business requirements. This is one of the reasons agile development methods have gained popularity as they provide a means of addressing immediate, tactical concerns more rapidly. Service-oriented computing is very much geared toward establishing wide-spread organizational agility.
When service-orientation is applied throughout an enterprise, it results in the creation of services that are highly standardized and reusable and therefore agnostic to parent business processes and specific application environments. As a service inventory is comprised of more and more of these agnostic services, an increasing percentage of its overall solution logic belongs to no one application environment.
Instead, because these services have been positioned as reusable IT assets, they can be repeatedly composed into different configurations. As a result, the time and effort required to automate new or changed business processes is correspondingly reduced because development projects can now be completed with significantly less custom development effort Figure 3.
The net result of this fundamental shift in project delivery is heightened responsiveness and reduced time to market potential, all of which translates into increased organizational agility. NOTE Organizational agility represents a target state that organizations work toward as they deliver services and populate service inventories.
The organization benefits from increased responsiveness after a significant amount of these services is in place. The processes required to model and design services require more up-front cost and effort than building the corresponding quantity of solution logic using traditional project delivery approaches.
It is therefore important to acknowledge that service-orientation has a strategic focus that intends to establish a highly agile enterprise. This is different from agile development approaches that have more of a tactical focus due to an emphasis on delivering solution logic more rapidly.
From a delivery perspective, service-orientation does not tend to increase agility. Reduced IT Burden Consistently applying service-orientation results in an IT enterprise with reduced waste and redundancy, reduced size and operational cost Figure 3. Such an enterprise can benefit an organization through dramatic increases in efficiency and cost-effectiveness.
In essence, the attainment of the previously described goals can create a leaner, more agile IT department; one that is less of a burden on the organization and more of an enabling contributor to its strategic goals. They therefore engage a local consulting firm to take charge of the planning and analysis effort.
The goal is to complete this project within a month and then use the resulting reports to decide on a delivery strategy. They look at service encapsulation options for legacy systems and service-based middleware platforms as part of a marketplace survey but also perform some analysis around the creation of custom services to replace the outdated automation hub. As part of the final analysis, a preliminary service-oriented architecture is conceptualized and supplemented with a list of Web service-centric technology components required to establish it.
The report emphasizes the pursuit of reuse, but Cutit is more interested in leveraging service-oriented computing to establish unity across its modest enterprise and to achieve a state where solution logic can be more easily extended in response to unpredictable business demands.
Regardless, Cutit decides to proceed to the next step. Before moving ahead and building actual services, they invest in the creation of a service inventory blueprint.
Cutit cannot afford to wait more than three weeks before entering the development stage, so this model will need to be high-level and therefore somewhat incomplete. Chapter 4 Service-Orientation 4.
The next set of sections establish the paradigm of service-orientation and explain how it is changing the face of distributed computing. Any person carrying out a distinct task in support of others is providing a service Figure 4. Any group of individuals collectively performing a task is also demonstrating the delivery of a service. Figure 4. Similarly, an organization that carries out tasks associated with its purpose or business is also providing a service.
As long as the task or function being provided is well-defined and can be relatively isolated from other associated tasks, it can be distinctly classified as a service Figure 4. Certain baseline requirements exist to enable a group of individual service providers to collaborate in order to collectively provide a larger service. Even though each individual contributes a distinct service, for the company to function effectively, its staff also needs to have fundamental, common characteristics, such as availability, reliability, and the ability to communicate using the same language.
With all of this in place, these individuals can be composed into a productive working team. Establishing these types of baseline requirements is a key goal of service-orientation. It has specific connotations that relate to a unique combination of design characteristics. When solution logic is consistently built as services and when services are consistently designed with these common characteristics, service-orientation is successfully realized throughout an environment.
For example, one of the primary service design characteristics explored as part of this study of service-orientation is reusability. A strong emphasis on producing solution logic in the format of services that are positioned as highly generic and reusable enterprise resources gradually transitions an organization to a state where more and more of its solution logic becomes less dependent on and more agnostic to any one purpose or business process.
Repeatedly fostering this characteristic within services eventually results in wide-spread reuse potential. Consistently realizing specific design characteristics requires a set of guiding principles. This is what the service-orientation design paradigm is all about. Services Are Collections of Capabilities When discussing services, it is important to remember that a single service can provide a collection of capabilities.
They are grouped together because they relate to a functional 70 Chapter 4: Service-Orientation context established by the service. The functional context of the service illustrated in Figure 4.
A service can essentially act as a container of related capabilities. It is comprised of a body of logic designed to carry out these capabilities and a service contract that expresses which of its capabilities are made available for public invocation. References to service capabilities in this book are specifically focused on those that are defined in the service contract.
For a discussion of how service capabilities are distinguished from Web service operations and component methods, see the Principles and Service Implementation Mediums section in Chapter 5. Service-Orientation as a Design Paradigm As established in Chapter 3, a design paradigm is an approach to designing solution logic.
When building distributed solution logic, design approaches revolve around a software engineering theory known as the separation of concerns. In a nutshell, this theory states that a larger problem is more effectively solved when decomposed into a set of smaller problems or concerns. This gives us the option of partitioning solution logic into capabilities, each designed to solve an individual concern.
Related capabilities can be grouped into units of solution logic. The fundamental benefit to solving problems this way is that a number of the solution logic units can be designed to solve immediate concerns while still remaining agnostic to the greater problem.
This provides the constant opportunity for us to reutilize the capabilities within those units to solve other problems as well. Different design paradigms exist for distributed solution logic. What distinguishes service-orientation is the manner in which it carries out the separation of concerns and how it shapes the individual units of solution logic.
Standardized Service Contract Services express their purpose and capabilities via a service contract.
A great deal of emphasis is placed on specific aspects of contract design, including the manner in which services express functionality, how data types and data models are defined, and how policies are asserted and attached. There is a constant focus on ensuring that service contracts are both optimized, appropriately granular, and standardized to ensure that the endpoints established by services are consistent, reliable, and governable.
Chapter 6 is dedicated to exploring this design principle in detail. Service Loose Coupling Coupling refers to a connection or relationship between two things. A measure of coupling is comparable to a level of dependency. There are numerous types of coupling involved in the design of a service, each of which can impact the content and granularity of its contract. Achieving the appropriate level of coupling requires that practical considerations be balanced against various service design preferences.
Chapter 7 provides an in-depth exploration of this principle and introduces related patterns and concepts. Service-Orientation Service Abstraction Abstraction ties into many aspects of service-orientation. On a fundamental level, this principle emphasizes the need to hide as much of the underlying details of a service as possible.
Doing so directly enables and preserves the previously described loosely coupled relationship. Service Abstraction also plays a significant role in the positioning and design of service compositions. It is an excellent book. Qiu, Ph. It condenses all information necessary to design services and is the most relevant source I know if in the field.
Designing it properly is a major undertaking. This book provides timely, expert and comprehensive discussions on the principles of service design.
Thomas has a keen sense in identifying the subtle points of various subjects and explains them in an easy-to-understand way. Chang, PhD, Associate Professor of Information Systems, Lawrence Technological University SOA: Principles of Service Design The Prentice Hall Service-Oriented Computing Series from Thomas Erl aims to provide the IT industry with a consistent level of unbiased, practical, and comprehensive guidance and instruction in the areas of service-oriented architecture, service-orientation, and the expanding landscape that is shaping the real-world service-oriented computing platform.
For more information, visit www. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions.
No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. For more information, please contact: U. ISBN hardback : alk. Web services. Computer architecture. System analysis. System design. E75 All photographs provided by Thomas Erl.
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc.
Donnelley in Crawfordsville, Indiana. First printing July, To my wife and family for their support. This page intentionally left blank Contents Preface. Principles that Regulate. Service Encapsulation. While doing some work on a project for a client in the defense industry, I had an opportunity to learn more about not just their technical landscape, but also the various policies and procedures that are specific to the defense culture. During this time I came across the DoD Standardization Program, an initiative comprised of documents and specifications that establish guiding principles and standards for various aspects of the military, including the design of weapons and military equipment, as well as the definition of methods and processes used by military personnel.
While reading about this program, I learned that several other standardization programs have been in existence for some time, facilitating standardization within public sector organizations such as the Coast Guard and NASA , as well as numerous private sector industries. In the case of the aforementioned public sector-related standards, interoperability may refer to the exchange of equipment or weapons or the exchange and collaboration of personnel from different locations.
For example, an ammunition clip manufactured in Iowa, stored in Virginia, and delivered to and used by someone at a training base in Texas will work perfectly with a gun manufactured in Kansas because both of these products were built according to the same set of specifications.
Similarly, in response to a natural disaster a rescue team may xxx Preface need to be quickly assembled from individuals based out of different cities and who have never previously worked together.
This team can still function effectively because all team members were trained as per the same procedures and processes, using the same vocabulary and conventions. These standardization programs have much in common with the rationale and objectives behind SOA and service-orientation.
The fundamental goal is to produce something with repeatable value, long-term benefit, and inherent flexibility, all for the strategic good of the organization. The greatest obstacle to achieving this goal in the world of SOA has been a lack of understanding as to what service-orientation, as an industry paradigm, really is. I am deeply grateful for the time and effort these individuals dedicated to these reviews.
Arnaud Simon, Redhat R. Sor, Booz Allen Hamilton, Inc. Furthermore, such an individual requires the ability to assess options in technology, design, development, delivery, and governance—all important success factors in SOA initiatives.
What this translates into for the SOA professional is a need for an increased level of judgment. Judgment can be seen as a combination of common sense plus a sound knowledge of whatever is being judged. In the world of SOA projects, this points to two specific areas: a need to understand service-oriented computing with absolute clarity and a need to understand your own environments, constraints, and strategic goals just as well.
With this range of knowledge, you can leverage what the service-oriented computing platform has to offer in order to fulfill your strategic goals within whatever boundaries you are required to operate. In theory this makes sense, but there is still something important missing from this formula.
There is a constant emphasis on how and where design principles can and should be applied with the ultimate goal of producing high quality services. Many books can be written to explore various aspects of technology, architecture, analysis, and design.
This book is focused solely on service engineering and the science of service design. To accomplish this, an effort has been made to minimize overlap between this title and others in the series.
For example, even though service design touches upon numerous architectural issues, it is important to acknowledge that this is a book about designing services for SOA, not about designing SOA itself.
The companion title, SOA: Design Patterns, provides a catalog of patterns, many of which deal directly with architectural design. Several books have already covered this ground sufficiently. Although some chapters provide introductory coverage of service-oriented computing, they do not go into detail. Finally, although this book includes a number of case study examples, it does not provide full code samples of implemented services or service contracts.
Additionally, several other series titles in development are dedicated to supplying comprehensive coverage of how to build services using different development platforms, such as. NET and Java. NOTE There are references to other series titles throughout this book. These references were not added for promotional reasons. In order to establish a well-structured library of complementary books, cross-title references are necessary.
They are included for the benefit of the reader to indicate the location of additional relevant resources. SOA Standardization Efforts There are several efforts underway by different standards and research organizations to produce abstract definitions, architectural models, and vocabularies for SOA. These projects are in various stages of maturity, and some overlap in scope. The mandate of this book series is to provide the IT community with current, real-world insight into the most important aspects of service-oriented computing, SOA, and service-orientation.
A great deal of research goes into each and every title to follow through on this commitment. This research includes the detailed review of existing and upcoming technologies and platforms, relevant technology products and technology standards, architectural standards and specifications, as well as interviews conducted with key members of leading organizations in the SOA community. As of the writing of this book, there has been no indication that the deliverables produced by the aforementioned independent efforts will be adopted as industry-wide SOA standards.
In order to maintain an accurate, real-world perspective, these models and vocabularies can therefore not be covered or referenced in this book. Should this occur, this book will be supplemented with online content that describes the relationship of the standards to the content of this text and further maps the concepts, terms, and models documented in this book to whatever conventions are established by the standards.
This information would be published on the corresponding update page, as described in Updates, Errata, and Resources section later in this chapter. There are numerous standards initiatives that have and continue to produce highly relevant technology specifications primarily focused on XML and Web services. These are referenced, explained, and otherwise documented wherever appropriate in all series titles. Chapters 1 and 2 provide background information for the book and its case study, respectively.
All chapters within these parts communicate primary topics with the assistance of visual style elements and conventions. Diagrams, color, and shading are important style characteristics that have been incorporated to maximize content clarity. Another means by which additional perspectives are provided is through the use of case study examples. Chapter 2 which precedes Part I establishes a case study background from which multiple examples are drawn to supplement the content in subsequent chapters.
This supplies a common, real-world context to many of the topics explained in abstract. Up next are brief descriptions of what is covered in subsequent chapters.
These concepts and terms are used throughout the guide, and it is important that their meaning is always clear and consistent. The initial three chapters fulfill this requirement by providing concise introductory coverage. How these chapters are organized is illustrated in Figure 1. Figure 1. Collectively these goals provide strategic context for all chapters in Part II that document design principles.
The chapter concludes with brief supplemental coverage of additional SOA-related terms, concepts, and processes. Chapter 4: Service-Orientation This next chapter zooms in on the design paradigm that underlies service-oriented computing. It begins with an overview of service-orientation by establishing its purpose and goals and then moves on to introduce its eight key design principles.
How these principles specifically relate to and support service-oriented architecture is also discussed. The manner in which the application of service-orientation changes the way solutions are delivered is explored next. Pros and cons of previous approaches are documented and contrasted with the potential for service-orientation to improve upon them.
Also explained are the challenges and impositions made by a transition toward this paradigm. We move on to cover how the adoption of service-orientation transforms not only the technology and the design of an enterprise, but also the mindset and perception of solution logic.
Because this paradigm is very much an evolutionary representation of IT, it is important to acknowledge its roots in past platforms and technology trends. Chapter 5: Understanding Design Principles In preparation for Part II, this chapter provides a clear explanation of how subsequent chapters describe service-orientation principles within the context of SOA and service design, and how these principles may relate to design patterns.
Different types of principles are categorized, including a study of those that result in implemented design characteristics compared to those that tend to shape and moderate how others are applied. Additionally, four specific forms of contract granularity are established; subsequent chapters then cover how principles affect these granularity types. Chapter 5 concludes with a case study section that documents a business process for which services will be designed in subsequent chapters.
For example, there are guiding principles that each address a narrow aspect of service design and foster the creation of specific design characteristics. Then there are the issues that arise from combining principles and seeking the right balance for each to be implemented to an appropriate extent.
Part II consists of eight chapters—one for each service-orientation principle, as shown in Figure 1. The chapters are structured with a baseline set of sections that are detailed in the Principle Profiles section of Chapter 5. Each chapter is further supplemented with a case study example that demonstrates the application of a principle within scenarios drawn from the background established in Chapter 2. Collectively, these chapters provide a comprehensive documentation of the service-orientation paradigm.
This chapter explains different types of required contract standardization and establishes common levels at which contracts can be harmonized. Issues implicitly introduced by the use of service contracts, such as data models and policies, are discussed, and contracts are further architecturally positioned with an emphasis on Web services. Chapter 7: Service Coupling Intra-Service and Consumer Dependencies Numerous types of coupling are explored, including the coupling of the service contract to underlying technology and implementation characteristics, as well as the coupling of the service consumers to the contract.
This chapter explores levels of attainable coupling and the implications of implementing more or less inter-service dependency. Additionally, the concept of design centralization is introduced as a means of supporting the realization of loose coupling in coordination with other principles. Achieving a balanced level of abstraction can be one of the most difficult parts of service design.
Subsequent to describing the various forms and levels of abstraction, this chapter discusses several associated design risks and the influence abstraction, as a design consideration, has on other principles.
Chapter 9: Service Reusability Commercial and Agnostic Design Increasing the value of solution logic by positioning services as reusable IT assets is a fundamental characteristic and objective of service-orientation. This chapter provides a comprehensive profile of Service Reusability and its implications and extends into an exploration of service reuse levels and the specific influences raised by commercial design considerations.
Planned versus actual reuse measuring is discussed, along with the risks and enterprise-wide effects of building and exposing agnostic service logic.It condenses all information necessary to design services and is the most relevant source I know if in the field. Because this paradigm is very much an evolutionary representation of IT, it is important to acknowledge its roots in past platforms and technology trends.
Chapter 7: Service Coupling Intra-Service and Consumer Dependencies Numerous types of coupling are explored, including the coupling of the service contract to underlying technology and implementation characteristics, as well as the coupling of the service consumers to the contract.
We expect that this will become a classic text in software engineering, corporate training and colleges. Web Services Architecture A typical Web service is comprised of the following: The former, as we just described, refers to internal or custom standards that apply to the design of solution logic and systems for a particular enterprise. The home grown system that has served them for so long is simply not scalable anymore.
An inside look into how commercial design approaches are incorporated to achieve truly agnostic and reusable service logic.
- PHOTOVOLTAIC DESIGN AND INSTALLATION MANUAL PDF
- BOLLYWOOD BODY BY DESIGN PDF
- WEB SERVICE PATTERNS JAVA EDITION PDF
- DESIGNING WEB USABILITY THE PRACTICE OF SIMPLICITY EBOOK
- ADOBE INDESIGN CS6 MANUAL PDF
- PRINCIPLES OF APPLIED GEOPHYSICS PDF
- PRINCIPLES OF BIOINORGANIC CHEMISTRY LIPPARD PDF
- WEB DESIGNING COURSE BOOK PDF
- THE NAME OF THIS BOOK IS SECRET BY PSEUDONYMOUS BOSCH