Thomas Erl

Subscribe to Thomas Erl: eMailAlertsEmail Alerts
Get Thomas Erl: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: SOA Best Practices Digest, SOA & WOA Magazine

SOA Best Practices: Article

Introducing SOA Design Patterns

The SOA community collaborates to produce a master pattern catalog dedicated to SOA

Working with SOA Design Patterns
Before we conclude, here are just some guidelines for getting the most out of SOA design patterns.

View Patterns with a Strategic Context
One of the greatest expectations of SOA initiatives is for the IT enterprise as a whole to become a more streamlined, responsive, and efficient part of the overall organization. Regardless of whether you are applying service-orientation design principles or SOA design patterns, it's important to keep these strategic goals in mind because they help you understand why there are certain priorities, preferences, and sacrifices that need to be made in order to deliver truly valuable service-oriented logic.

Take Governance into Consideration
Many IT professionals focus on governance as a project lifecycle phase that begins after services and service-oriented solutions have been deployed and are in use. However, governance itself is also very much a design-time consideration. Just about every decision point you face when designing services, service compositions, and service inventories will have governance-related implications. Understanding the long-term consequences of design decisions in advance will help you choose and combine design patterns wisely to minimize the governance impact of anything you end up building. This is a critical consideration because it's through reduced governance burden that you can truly achieve the strategic goals of service-oriented computing.

Patterns Are Applied in Measures
As with service-orientation design principles, SOA design patterns can (and often must) be applied to various extents. This means that for any given pattern, you are not faced with an all-or-nothing proposition. Some patterns need to be applied in a limited capacity, while with others it makes a whole lot of sense to maximize their application to whatever degree possible. Either way, it's always good to keep in mind that the benefit promised by a given pattern is generally tied by the measure to which it is applied.

Acknowledge that Some Patterns Are Evolutionary
For those of you with an OOD or EAI background, several of the design patterns mentioned here probably looked familiar. Service orientation owes much of its existence to past design paradigms. What makes it distinct are the parts of those paradigms that were not included, combined with new design considerations and techniques that are particular to the enterprise-centric focus of service-oriented computing.

The same goes for SOA design patterns. While some of the patterns in this catalog are based on (or even derived from) patterns in previously published pattern catalogs, they are documented in the specific context of SOA and service orientation. Other SOA design patterns introduce brand new design techniques that complement and build on the derived patterns.

Patterns Relate to Patterns
Most SOA design patterns have numerous relationships with each other (see Figure 7). For example, one pattern may have a dependency on another, or its application may influence another, or perhaps it is simply part of a larger compound pattern. With an understanding of inter-pattern relationships, you can avoid potential conflicts (some of which don't reveal themselves until later). Additionally, you can fully leverage the SOA design pattern catalog as a full-fledged pattern language that supports the application of patterns into various creative pattern sequences.

Patterns Relate to Principles
Each SOA design pattern affects and influences the application of one or more service-orientation design principles. By identifying these relationships, you can leverage specific patterns when working with the design principles individually. There are also adverse relationships, where the results and trade-offs of some patterns negatively impact the goals of a design principle. Again, knowing these relationships in advance will help you make educated design decisions. (For more details regarding service-orientation design principles, visit www.soaprinciples.com.)

Not Every Pattern Is Suitable for Everyone
As mentioned at the beginning of this article, this collection of SOA design patterns was produced as a result of numerous (successful and failed) projects, on-going research, and documented lessons learned. The focus of each pattern is on providing a solution to a common problem. Just because a given problem was common elsewhere does not mean it will apply to your environment. Also, you always have the option of taking ideas from these design patterns and then deriving your own distinct design techniques.

A Final Word
We've really just skimmed the surface with this exploration of SOA design patterns. The pattern catalog has nearly 100 design patterns, the majority of which we haven't been able to mention in this article. Examples of other types of patterns that have been documented include those that address grid computing and balanced stateful service design, REST-based communication and service design, security technology, attack prevention and perimeter protection, versioning of services contracts and related schemas and policies, dynamic messaging, runtime compensation, the use of binary attachment technologies, various transformation requirements, and others as it evolves.

All of these patterns are intended to help you make a success out of an SOA initiative. How success is measured in the SOA world often comes down to how well the service-oriented environment you create represents the business of your organization - and how well it continues to stay in alignment with the business.

Figure 8 illustrates the never-ending progress cycle that continually transpires between business and IT communities. The result of this dynamic is constant change, and if we had to choose the one thing responsible for inspiring service-oriented computing in the first place, it would be that word "change."

Ultimately, service orientation and the implementation of the different service-oriented technology architecture types (inner circles in Figure 8) support the two-way dynamic between business and IT communities (outer circle in Figure 8), allowing each to repeatedly introduce or accommodate change. SOA design patterns help establish and strengthen SOA architectures in support of service-orientation, a paradigm specifically geared toward facilitating this cycle of constant change.

From the minute you design them to the months and years later when you extend or build on them, your services, your compositions, and the inventory architectures in which they all reside must be equipped to deal with change. Only this way can your technology enterprise evolve in tandem with the business.

To establish such an environment requires a different approach to design. Service-orientation provides an overarching design paradigm that defines this approach, but it's the SOA design patterns that help you deal with the nitty-gritty. Regardless of whether you're applying design principles or patterns, be sure to keep the strategic vision of SOA in your sights, because it is only by the extent that you attain and maintain this vision that the success of your SOA initiative can be truly measured.

Acknowledgments
This design pattern catalog is very much the result of an international community effort. Experts throughout the industry have contributed patterns to this catalog, and patterns were subjected to an open community review at soapatterns.org in which hundreds of members from standards organizations, major SOA vendors, and the patterns community itself participated.

The author would like to especially thank (in alphabetical order): Mohamad Afshar, Raj Balasubramanian, Frank Buschmann, David Chappell, Martin Fowler, Richard Helm, Kelvin Henney, Jason Hogg, Gregor Hohpe, Ralph Johnson, Mark Little, Brian Loesgen, David Orchard, Chris Riley, Thomas Rischbeck, Robert Schneider, Arnaud Simon, Bobby Woolf, and Olaf Zimmermann. The author would also like to thank Prentice Hall for making advance copies of the book manuscript available for distribution during the review phase.

This article contains diagrams from the upcoming book "SOA Design Patterns", a title in the "Prentice Hall Service-Oriented Computing Series from Thomas Erl" to publish in Fall, 2008 (ISBN: 0136135161, Prentice Hall, Copyright 2008 SOA Systems, Inc.). The book is currently available as part of the Safari Books Online "Rough Cut" program. For more information, visit www.soabooks.com and www.soapatterns.com.

More Stories By Thomas Erl

Thomas Erl is a best-selling IT author and founder of Arcitura Education Inc., a global provider of vendor-neutral educational services and certification that encompasses the Cloud Certified Professional (CCP) and SOA Certified Professional (SOACP) programs from CloudSchool.com™ and SOASchool.com® respectively. Thomas has been the world's top-selling service technology author for nearly a decade and is the series editor of the Prentice Hall Service Technology Series from Thomas Erl, as well as the editor of the Service Technology Magazine. With over 175,000 copies in print world-wide, his eight published books have become international bestsellers and have been formally endorsed by senior members of many major IT organizations and academic institutions. To learn more, visit: www.thomaserl.com

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.