After proofing the index last week, Phil and I are finally done with the second edition of the TP book!
A lot has changed since the first edition came out in 1997.
For one thing, the TP monitor is no longer the main product type used to construct TP applications. Many components formerly only found within TP monitors — such as forms systems for GUIs, databases, system administration tools, and communication protocols — have evoloved to become independent products.
And although we can reasonably claim that the .NET Framework and Java EE compliant application servers are the preeminent development and production environments for TP applications, it seems as if the three-tier application architecture around which we were able to structure the first edition has evolved into a multitier architecture.
Another big change is represtented by the emergence of “scale out” designs that are replacing “scale up” designs for large Web sites. The scale out designs tend to rely on different mechanisms than the scale up designs for implementing transaction processing features and functions – the scale out designs tend to rely much more on stateless and asynchronous communications protocols, for example.
By mid-2007 I had started to think it would be interesting to center the second edition around these new scale out architectures, like those implemented by large scale Web sites such as Amazon.com, eBay, PayPal, SalesForce, BetFair, etc. Phil and I had a great opportunity to learn about what these companies were doing at HTPS in October of ’07 . Unfortunately, it was impossible to identify sufficiently common patterns to do so, since each of the large Web sites has created a different way to implement a “scale out” architecture.
(BTW this was a fascinating conference, since the room was full of people who basically created the application servers, TP monitors, and relational databases successfully used in most “scale up” style TP applications. But they had to sit there and hear, over and over again, that these products just didn’t meet the requirements of large Web sites.)
Nonetheless we managed to fit everything in the book – how caching is done, replication, how replicas synchronize, descriptions of compensating and nested transactions, locking, two-phase commit, synchronous and asynchronous communications, RESTful transactions, and so on.
As in the first edition we have kept the focus on what’s really being used in production environments (with the help of our many generous reviewers). We completely rewrote the product information to focus on current Java and .NET products and TP standards.
And finally, we idenfity the future trends toward commodity data centers, cloud computing, solid state disk, and multi-core processors, among others, which are going to significantly impact and influence the industry during the next decade or so.
One of the most interesting things I learned about in doing the book was how to design a transaction as a RESTful resource (see RESTful Web Services for more details). But once again, many of the familiar principles and concepts still apply – such as “pseudo-conversations” that have been used in TP applications for a long time to avoid holding locks during interactions with users.
Fascinating to me are the different assumptions people make in the different worlds between the REST/HTTP “scale out” designs and the mainframe-derived “scale up” designs. This is likely to remain an area of continual evolution.