About the Book
Web services have been put into practical use for many years. In this time developers and architects have encountered a number of recurring design challenges related to their usage. We have also learned that certain design approaches work better than others to solve certain problems. This book is for software developers and architects who are currently using web services or are thinking about using them. The goal of the book is to acquaint you with some of the most common and fundamental web service design solutions, and to help you determine when to use them.
Praise for Service Design Patterns
"Addison-Wesley has published a new book in my Signature Series ... I think Robert has done a particularly good job of collecting together the best
advice on the topic and organizing it into a useful handbook.
This is the book that I think ought to become the standard book on the topic."
Click here to read Martin's Foreword.
Dr. Jim Webber: "I have yet to see a book that covers fundamental patterns for services which I liked ... I would recommend this book."
Gregor Hohpe: "This recent addition to Martin Fowler's well curated Signature Series describes important service design decisions from interaction styles via service implementation all the way to service evolution. Unlike some superficial service pattern books, each pattern's "Considerations" section contains a detailed discussion of trade-offs and pitfalls, as well as pointers to further reading. The high quality of this book is no longer a surprise once you look at the Acknowledgments section, which reads like the who's who of service design ... "
Marc Hadley: "There's a nice progression from one topic to the next, from foundation patterns early on to more complex ones later ... I particularly like the inclusion of code examples to illustrate each abstract pattern. ... The book nicely codifies many of the patterns I've used myself in the past, and it will be a useful introduction to those new to the topic while remaining a handy reference for the more experienced. ... It nicely complements other more traditional pattern books like the gang of four's."
Jeevak Kasarko (of InfoQ): "This is the first time an attempt has been made to classify the (service) patterns (in a way) that will help developers and architects put them together in a useful way."
Eric Roch (of Perficient, Tibco, Deloitte & Touche): "The patterns are backed by solid examples and lessons learned that are missing from many lessor SOA related patterns books. For example, the book covers such topics as performance, versioning, and maintainability of APIs. There is a lot of reasoning behind pattern recommendations that come from years of experience. If you are new to building APIs, that experience is worth the price of the book. The book should be a must read for new API developers.
Amazon UK Reviews : "The missing piece in the enterprise patterns jigsaw (puzzle) ... The book provides well written, clear, descriptions of the patterns and the contexts in which they should be applied (or not) - enabling more informed analysis and clearer communication between practitioners. ... if you're creating distributed applications that involve (typically web) services then this book should be a must read."
Amazon US Reviews : "This book ... filled in a missing link in the (Martin Fowler) series ... (it) worked at the right level of abstraction digging into details when needed to shed a deeper light on the subject at hand ... I like that the book limited its scope to the fundamental patterns relevant to web service design ... The author does an awesome job of providing examples in different technologies ... every architect and developer should have this book on their shelf. "
About the Author
Rob Daigneau has more than 20 years experience designing and implementing applications and products for a broad array of industries from financial services, to manufacturing, to retail and travel. Rob has served in such prominent positions as Director of Architecture for Monster.com and Manager of Application Development at Fidelity Investments. Rob has been known to speak at a conference or two.
About the Martin Fowler Signature Series
Martin Fowler has been a pioneer of object technology in enterprise applications. His central concern is how to design software well. He focuses on getting to the heart of how to build enterprise software that will last well into the future. He is interested in looking behind the specifics of technologies to the patterns, practices, and principles that last for many years; these books should be usable a decade from now. Martin's criterion is that these are books he wished he could write.
For more information on this series see:
- Criteria for Acceptance into Signature Series
- Pearson Higher Education - Addison Wesley Signature Series (Fowler)
- InformIT: Addison Wesley Signature Series (Fowler)
Content That Can Only Be Found in the Book
This site summarizes the major patterns found in the book. The pattern descriptions on this site are brief and omit the detail that most developers and software architects would expect to find in pattern descriptions. Here are just a few things that can only be found in the book:
- A Detailed Exploration of the Pattern 'Forces': An in-depth discussion of the general context for the problem to be solved and the constraints that limit the 'solution alternatives'. The book explores the reasons why each problem is difficult to solve, and also discusses common solutions that have been tried, but don't always solve the problem so well given the context.
- An In-Depth Review of the Pattern 'Consequences': All design patterns have benefits and trade-offs. The book presents several factors that you should consider before deciding to use each pattern.
What Causes Breaking Changes?
A breaking change is any change to the service that forces client developers to update their code
or change configurations in 'lock-step' with the service deployment. Failure to change the client application
at just the right time may cause it to crash.
The common approaches for versioning web services and
their data structures are not a remedy to this problem. Service owners must still implement mechanisms to ensure that their
web services will remain 'backward compatible' or 'forward compatible'.
The chapter on Web Service Evolution provides information to help you recognize the common causes of breaking changes for RESTful services and SOAP/WSDL services. The patterns that follow explore common approaches that mitigate the impact of breaking changes and enable web services and their clients to evolve gracefully.
- Web Service Versioning Strategies Versioning techniques are used to identify service releases that encompass distinct features and data structures. The chapter on Web Service Evolution reviews two common versioning service strategies.
- Code Examples: You may have heard that anyone should be able to understand and implement a design pattern given nothing more than the pattern description and perhaps a little UML. Unfortunately, this often isn't enough. Code examples go a long way to help explain the many ways a pattern can be implemented. The book illustrates patterns by using technologies like Java, C#, XML, JAX-WS, JAX-RS, WCF, JAXB, JSON, XML, WSDL, XPATH, XSLT, and the Atom Publishing Protocol.
An Extensive Cross-Reference to Other Pattern Catalogues:
Design patterns do not exist in a vacuum. The book identifies how the patterns included in this catalogue
relate to other catalogues such as ...
- Design Patterns: Elements of Reusable Object-Oriented Software
- Patterns of Enterprise Application Architecture
- Enterprise Integration Patterns
- Workflow Patterns
- Professionally Rendered Graphics : The UML and other graphics that you see on this site are 'rough sketches'. The book includes graphics created by professional artists.
What About SOA ?
Many definitions for Service-Oriented Architecture (SOA) have been offered. Some see it as a technical
style of architecture that provides the means to integrate disparate systems and expose reusable business
functions. Others espouse a broader view that that characterizes SOA as a design paradigm and methodology
wherein 'business functions' are enumerated as services, organized into logical 'domains', and somehow
managed (i.e. governed) over their lifetimes. This book does NOT attempt to redefine or clarify what SOA is.
Instead, this book simply looks at how web services have been used to produce real results.
These services may, of course, be used to create a SOA, whatever that means to you.
The chapter on Web Service Infrastructures provides quick summaries of a few infrastructures often used by SOA proponents. These include the Service Registry, Enterprise Service Bus, and Orchestration. This content only appears in the book.
History of the Service Design Patterns Project
Signed Contract with Addison Wesley to do Book on SOA Design Patterns
Here was the original concept ...
"Service Oriented Architecture (SOA) means many things to many people. For some it is a way to expose application capabilities to different types of consumers usually via platform-independent mechanisms. For others it's a new methodology for systems design. Unfortunately, these all-encompassing definitions have left many wondering what SOA really is. To date we have witnessed the rise of two general categories of services which I'll refer to as being Enterprise Services and Domain Services. Whereas the former are essentially composite services that typically leverage technologies such as Message-Oriented-Middleware, the latter are the building blocks upon which the composites depend. Each Service Category encompasses a distinct set of design solutions and is therefore worthy of individual attention. This book will focus upon patterns specific to the creation of Domain Services. I'll expand upon the Service Layer concept [Stafford], and will also show how Domain Services might be used with Enterprise Integration Patterns [Hohpe, Woolf]."
... after the second round of peer reviews (mid 2010) I decided to change the book's scope to focus on web services rather than SOA.
Book Chapters Accepted for PLoP Shepherding
Upon the recommendation of Scott Ambler, I submitted several of my patterns to the Pattern Languages of Programming Conference put on by Hillside.Net. This conference is the premier event for pattern authors and pattern enthusiasts to gather, discuss, learn more about patterns and software development, and acquire feedback from peers with the goal being to improve their patterns. Fortunately, my work was accepted for shepherding. by Kyle Brown, a major force behind Enterprise Integration Patterns. Being accepted for shepherding does not mean that my work will automatically be accepted into the final PLoP workshop. Rather, I'll have to work closely with my shepherds to alter the patterns so that they stand a better chance for being accepted.
Book Chapters Accepted into PLoP Conference
Several patterns were accepted into the PLoP conference for peer review.
PLoP 2008 Recap
PLoP 2008 came and went all too quickly. This event was so much more fun and helpful than I could have imagined. Thanks go out to many people including ...
Ademar Aguiar, Ralph Johnson (co-author of Design Patterns: Elements of Reusable Object-Oriented Software), Joe Yoder (co-author of Big Ball of Mud), Linda Rising, Rebecca Wirfs-Brock, and Bob Hamner. Special thanks go out to my shepherds, Kyle Brown, and Uwe Zdun, our Writer's Workshop Leaders, Bobby Woolf (co-author of Enterprise Integration Patterns), Lise Hvatum, and my workshop mates, Paul Austrem, Philipp Bachmann, Geert Monsieur, Mark Mahoney, and John Liebenau.
Early Drafts sent to Technical Review
Early drafts of the first few chapters were submitted for technical review. In this stage, the author puts his or her work in front of an exclusive group of experts in order to acquire feedback and suggestions for rework. The goal is to find errors, omissions, new ways of looking at things, etc. This team was comprised of Bobby Woolf, co-author of Enterprise Integration Patterns, Rebecca Wirfs-Brock, inventor of Responsibility-Driven Design, and Michael Stiefel, member of the OASIS technical committee, MIT lecturer, and independent consultant.
Service Design Patterns Book Update
The feedback received from the technical review indicated that I needed to rethink a number of areas. As a result, I've been reworking and merging a number of chapters and patterns for the last five months. I expect to get a another draft out for technical review early next year. I never knew that a patterns book would be so hard to write!
My initial list included 70+ patterns. After considerable thought, I dropped many because I felt that they weren't really Service Design Patterns. So, I eliminated workflow patterns, patterns for 'Event Driven Architecture', security patterns, and much more. I also discovered that many patterns were really one in the same, so I wound up merging several. The current pattern count is now fewer than 20. I've written hundreds and hundreds of pages, I'm guessing well over 1000 by now. Given the cuts I'll be making, I'm estimating that the final page count will be approximately 250. Thanks to Michael Stiefel for challenging me to adopt the philosophy that "less is more" (see Occam's Razor).
Thanks to Jim Webber
I'd like to thank Dr. Jim Webber of ThoughtWorks for graciously volunteering to critique a few chapters from my upcoming book. Jim is an authority on the practical application of REST. Thanks Jim, your feedback was awesome! By the way, Jim has a book titled REST in Practice coming out sometime this year.
Thanks to Marc Hadley
I'd like to thank Dr. Marc Hadley of Oracle, formerly of Sun Microsystems,for taking time out of his busy day to meet with me in support of my work. Marc is a Java and Web Services Architect, the specification lead for JSR 311, the Java API for RESTful Web Services, and is the author of the Web Application Description Language (WADL). Marc has represented Sun in the W3C XML Protocol and W3C Web Services Addressing working groups where he was co-editor of the SOAP 1.2 and WS-Addressing specifications. Marc also served as the technical lead for Sun's participation at the Web Services Interoperability Organization (WS-I) and was co-spec lead for JSR 224 (JAX-WS). Thanks so much Marc for your input, and I look forward to more stimulating conversations!!!!
Service Design Patterns Manuscript Turned In for 2nd Technical Review
Back in June of last year I turned over several chapters of the manuscript for technical review. I got some excellent feedback, and was challenged to rethink a number of areas. As a result, I rewrote many patterns, cut a lot of content, and made a significant change in direction. This started out as a SOA patterns book, but has morphed into a what I think is a more pragmatic reference of common design solutions for REST and WS* services. About one month ago I turned the entire reworked manuscript over for a second, and hopefully, last round of technical review. I am honored to be working with such luminaries as
- Scott Ambler, Chief Methodologist at IBM for Agile and Lean, author of several ground-breaking books, and noted speaker
- Jim Webber, Director of the Service-Oriented Practice for ThoughtWorks, thought-leader on REST, and co-author of the book REST in Practice
- Eric Newcomer, Chief Architect at Credit Suisse, Former CTO of Iona, author of Principles of Transaction Processing and Understanding Web Services
- Rebecca Wirfs-Brock, inventor of Responsibility-Driven-Design
- Marc Hadley, specification lead for JSR 311 (The Java API for RESTful Web Services), co-editor of the SOAP 1.2 and WS-Addressing specifications, and co-spec lead for JSR 224 (The Java API for XML-Based Web Services).
In the mean time, I'm polishing up the glossary and appendix, and will be doing more rewrites as feedback comes in. The publisher would like to get this to production by September, but we'll see how that goes since we've been challenged in the past by deadlines. I sorely underestimated how difficult it would be to write a patterns book, not to mention one on such a divisive topic. I've also had to juggle book work with personal and professional commitments. So, I can't make any concrete predictions on delivery, but will keep plugging away.
Service Design Patterns Book Moves to Development Edit Phase
In June of this year I turned the entire manuscript over for a second and last round of technical review. I'd like to thank Jim Webber, Scott Ambler, Eric Newcomer, Marc Hadley, and Rebecca Wirfs-Brock. The team offered great comments and suggested rework in a few areas. I am pleased to have received such positive feedback:
- Jim Webber, "I have yet to see a book that covers fundamental patterns for services which I liked ... I would recommend this book."
- Marc Hadley, "There's a nice progression from one topic to the next, from foundation patterns early on to more complex ones later ... I particularly like the inclusion of code examples to illustrate each abstract pattern. ... The book nicely codifies many of the patterns I've used myself in the past, and it will be a useful introduction to those new to the topic while remaining a handy reference for the more experienced. ... It nicely complements other more traditional pattern books like the gang of four's."
- Rebbecca Wirfs-Brock, "The book is in really good shape ... It is immediately more practical than other books on this subject, and complementary to Patterns of Enterprise Application Architecture."
Now we move into a phase called "Development Edit" where my editors help me make corrections to formatting, grammar, etc. Once that is done we get to the production phase where the book is prepared for printing.
12/3/2010 - 1/20/2011:
Initial Discussions with Martin Fowler
The following summarizes activities that were not previously shared in the "blogosphere"
My editorial team and I contacted Martin Fowler to propose that the book be included in the Martin Fowler Signature Series. We knew that Martin would only approve a book if it met his high standards and also passed a rigorous Acceptance Process that involved a review by all of the current series authors, each thought-leaders in their own right. We felt that, given the feedback from PLoP-2008, two rounds of tech reviews, and the recent Development-Edit phase work, the manuscript might be able to withstand their scrutiny and tough questions.
Service Design Patterns Book Moves to Copy-Edit/Production Phase
In the "Copy-Edit/Production" phase my editors will make a final pass at grammar and will also finalize everything for print. "Real artists" will turn my rough artwork into professional, high-quality images. Once the editors and artists are done, I'll review their work yet again. Then we go to "production". The manuscript content will be created for traditional "book form" (i.e. paper), and for digital forms as well (i.e. for the Kindle, Nook, etc.).
The page count, excluding the table of contents and indices, stands at approximately 300 pages. I wanted to produce a book that is more concise and has less "fluff" than is the norm these days for technical books. Nonetheless, it is dense with examples that employ C#, Java, JSON, XSD, XML, POX, SOAP, WSDL, REST principles, and on. Keep in mind that my intent is not to show you how to use a specific language, API, or framework. After all, these things inevitably change in a year or two. Instead, I sought to use popular languages and open standards only to illustrate common design solutions that are timeless.
Martin Gives Ok to Move to the 'Next Stage'
The following summarizes activities that were not previously shared in the "blogosphere"
Martin informed me that, after thoroughly reading the manuscript which I had submitted (circa December 2010), he was impressed and felt that it would be worthwhile to move to "the next stage" wherein his series authors would have the opportunity to review my work and vote on it. Little did I know that Martin and most of the authors on his series were still skeptical of our proposition since so many books on SOA and web service design had already been published over the last decade. Martin states why he decided to move forward here. Once Martin gave his "go-ahead", the manuscript was sent out to the authors in his series for continued Peer Review.
This meant that my work was about to go through a third round of technical reviews !
Service Design Patterns Manuscript Accepted Into Martin Fowler's Signature Series!!!
I am proud to announce that after nearly three years of research, coding, writing, and rewriting, Martin Fowler has accepted my book "Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services" for inclusion into his prestigious Signature Series!
3/22/2011 - 6/2/2011 :
Work with Martin Fowler Team to Refine Book Content
The following summarizes activities that were not previously shared in the "blogosphere"
In this period I worked closely with Martin Fowler, Ian Robinson, Elliotte Rusty Harold, and others to refine the book's content.
Started rolling out content to ServiceDesignPatterns.com
06/19/2011:Turned final manuscript over to production.
07/14/2011:Finalized the book cover.
08/21/2011: Released a 'rough-cut' version of the book to Safari Books Online.
11/04/2011: Service Design Patterns is released in hardcover and electronic versions !!!.