I NEVER PLANNED TO BECOME A SOA EXPERT. I WAS A TEAM LEADER IN A DEPARTMENT WHICH WAS instructed to use the new service-oriented architecture approach to communicate with the systems of other departments and business units. A cross-departmental SOA team had provided a SOA concept, including thousand of pages of documentation, several frameworks and libraries, and some sketches of corresponding processes. All we, as a business unit—which had its own IT—had to do was use these solutions to establish SOA.
Once we began the project, things turned out to work less smoothly than we had expected. While dealing with the SOA approach, I not only learned what SOA is, but also learned about the differences between theory and practice, which Laurence Peter “Yogi” Berra perfectly describes as follows:
In theory, theory and practice are the same. In practice, they are not.
In fact, I complained so much about what was provided by the central SOA team that finally I was given the task of cleaning it up. My brief was to ensure that my manager wouldn’t hear any more complaints about SOA from the business units.
So, we fixed misconceptions and broken processes, automated manual efforts, influenced strategic decisions, provided support, and (last but not least) taught others about the concepts and ideas behind SOA, and about the reasons and motivations for our specific architectural decisions and policies.
These days, the SOA landscape we built provides support for processes distributed between many local, national, and international systems. With hundreds of services, the systems support millions of service calls each day.
Drawing on this experience, and my observations of SOA approaches and projects at many other companies (in very different stages of expansion), I started to give SOA consultations, reviews, talks, and training sessions. Along the way, I’ve become well acquainted with the different flavors of SOA, and different ways to deal with it. In addition, I’ve learned about all the questions that must be answered, and about the best way to teach SOA.
I’m still learning every day, but I believe the knowledge I’ve gained so far can help you find an appropriate and successful way to establish SOA and deal with its properties in practice.
SOA has become a major paradigm, and it now means different things to different people. I will concentrate on SOA as a strategy to provide and support distributed business processing. In this sense, SOA is a strategy that, although it might be driven by IT, always impacts the business as a whole.
This book will present concepts, but with a focus on their practical application. This is one reason why this book fits perfectly into O’Reilly’s “Theory in Practice” series.
What You Should Know Before Reading This Book
As a reader of this book, you should have a common understanding of computer science and programming. Experience with large and distributed systems will help, but it is not required because this book covers all these concepts (from a SOA point of view).
Structure of the Book
The book is designed to be read sequentially, from beginning to end. We’ll begin with general SOA concepts, then move on to more advanced topics. Cross-references will help you find explanations and further details contained in other chapters and sections, and the index should help you find information and discussions regarding specific topics and terms.
The first half of the book covers the basics:
- Chapter 1
This chapter explores why you want to use SOA in the context of large distributed systems, explores how SOA emerged, tells the tale of the Magic Bus, and gives a brief overview of SOA.
- Chapter 2
This chapter examines and consolidates the different definitions of SOA and its major properties.
- Chapter 3
This chapter examines and consolidates definitions of the many services involved in SOA.
- Chapter 4
This chapter introduces and discusses loose coupling, a key concept in SOA and building large distributed systems generally.
- Chapter 5
This chapter takes a look at the enterprise service bus (ESB), the infrastructure foundation for high interoperability in a SOA landscape.
- Chapter 6
This chapter shows how to categorize services so that you can deal with different service classes, service layers, and stages of SOA expansion.
- Chapter 7
This chapter introduces business process management (BPM) as an approach for identifying services as part of business processes. It includes orchestration, Business Process Execution Language (BPEL), portfolio management, and choreography.
- Chapter 8
This chapter discusses the impacts SOA strategies have on organizations and companies.
- Chapter 9
This chapter explores how SOA fits with other architectures and approaches, and how to deal with the various levels of processing at different parts of a business.
The second half of the book discusses specific aspects of introducing and running SOA. Although the topics are presented in a logical order, I have tried to write these chapters in such a way that you can read them in any order, provided you understand the fundamental concepts and terminology:
- Chapter 10
This chapter introduces and discusses message exchange patterns (MEPs). MEPs define the sequence of messages in a service call or operation. One of these patterns will lead to events and event-driven architectures (EDA).
- Chapter 11
This chapter follows the lifecycle of services, from needs identification to implementation, and from running to withdrawing.
- Chapter 12
This chapter discusses the thorny question of version services, including versioning of associated data types.
- Chapter 13
This chapter discusses how performance, especially running time, affects the design and reusability of services.
- Chapter 14
This chapter presents security issues in SOA implementations and how to address them.
- Chapter 15
This chapter explores some key details of SOA, including statefulness, idempotency, testing and debugging, and fundamental data types.
- Chapter 16
This chapter examines Web Services and their position as a de facto standard for SOA infrastructure. It presents the most important Web Services standards, and what their application means in practice.
- Chapter 17
This chapter discusses using repositories and registries to manage services.
- Chapter 18
This chapter describes the consequences of specifying services as models, and generating code from those models.
- Chapter 19
This chapter examines how SOA might or should be established in an organization, and explores its governance moving forward.
- Chapter 20
This conclusion finally discusses some major questions about SOA, including whether it is really new, where its use is appropriate, and whether it increases or reduces complexity.
The book concludes with a bibliography (including all referenced resources you can find on the Internet), a glossary of fundamental SOA terms, and an index.
Conventions Used in This Book
The following typographical conventions are used in this book:
Used for emphasis, new terms where they are defined, URLs, and email addresses.
Indicates commands, code examples, parameters, values, objects, service names, XML tags, the contents of files, or the output from commands.
Constant width bold
Used to highlight portions of code.
Constant width italic
Shows text that should be replaced with user-supplied values.
As a convenience, the references and resources used in this book are listed on the site so that you can directly navigate to these resources, and so that any updates are integrated (web sites are typically much more volatile than books).
In addition, the web site includes a maintained SOA glossary, code examples, and supplementary information about SOA.
The publisher also has a web page for this book, which lists errata, examples, and additional information. You can access this page at:
Safari® Books Online
When you see a Safari® Books Online icon on the cover of your favorite technology book, that means the book is available online through the O’Reilly Network Safari Bookshelf.
Safari offers a solution that’s better than e-books. It’s a virtual library that lets you easily search thousands of top tech books, cut and paste code samples, download chapters, and find quick answers when you need the most accurate, current information. Try it for free at http://safari.oreilly.com.
Feedback, Comments, and Questions
I welcome your feedback and constructive input—both the negative and the positive. I’ve tried to prepare the book carefully; however, I’m human, and at some point I had to stop writing, reviewing, and tweaking so that I could “release the product.” You might, therefore, find errors, inconsistencies, discussions that could be improved, or even topics that are missing altogether. Your feedback will give me the chance to keep all readers informed through the book’s web site, and to improve any subsequent editions.
The best way to reach me is by email. However, due to the spam problem, I don’t want to include an email address inside this book (I had to stop using the email address I put in one of my C++ books after I started getting thousands of spam emails per day). Please refer to the book’s web site, http://www.soa-in-practice.com, to request an actual email address. Alternatively, you can use the publisher’s email address, mentioned below. You can also check the book’s web site for currently known errata before submitting reports.
Comments and questions concerning this book can also be addressed directly to the publisher:
|O’Reilly Media, Inc.|
|1005 Gravenstein Highway North|
|Sebastopol, CA 95472|
|800-998-9938 (in the United States or Canada)|
|707-829-0515 (international or local)|
To comment or ask technical questions about this book, you can send email to:
For more information about O’Reilly’s books, conferences, Resource Centers, and the O’Reilly Network, see the web site at:
First, I’d like to thank all the reviewers of this book. They did an incredible job, giving me feedback on early versions of the book that contained errors and were hard to understand. Thanks to Mirko Drobietz, Gudrun Dürr, Thomas George, Jochen Hiller, Gregor Hohpe, Alan Lenton, Christian Möllenberg, Bruce Sams, Steffen Schäfer, Hermann Schlamann, Markus Völter, and Torsten Winterberg.
Second, I want to thank my editors at O’Reilly for giving me the ability to publish this book and for all their support. Thanks to Simon St.Laurent, Mike Hendrickson, Mary O’Brien, Tatiana Apandi, Caitrin McCullough, Nancy Reinhardt, Sumita Mukherji, and Jessamyn Read. A special thanks goes to Rachel Head, who did an incredible job transforming my “German English” into “American English.”
Third, I want to thank all the people who helped me learn and understand the subject of SOA in real projects and by the help of books, articles, talks, private conversations, and so on. Whenever some key information is a quote from a certain person, book, or resource, I have mentioned this. Please forgive me if I’ve forgotten anything or anyone.
In addition, I want to thank my kids, who help me to be well grounded and understand what really matters. Thanks to Lucas, Anica, and Frederic.
Last but not least, I thank Jutta Eckstein for the role she has played regarding this book and in my life. Jutta convinced me to go public with my SOA knowledge, gave me incredible support, and makes my life a lot more worth living day by day.
Enjoy your life.
Nicolai M. Josuttis Braunschweig, July 2007