|HOME PATTERNS RAMBLINGS ARTICLES TALKS DOWNLOAD BOOKS CONTACT|
May 26, 2007
My most popular rambling Starbucks Does Not Use Two-phase Commit has been around for a good two years now and was even featured in Joel Spolsky's "Best Software Writing". So I should consider myself lucky that I escaped Eric Newcomer's scrutiny for so long. Eric is the long-time CTO of IONA, a company most of us value for being a bunch of really smart and nice people. In fact, they just gobbled up James Strachan with LogicBlaze and John Davies with C24. I wonder how I was able to could miss starting a company and have it be acquired. Oh well. At least Google hired me :-)
Eric is well known and respected for co-authoring the highly recommended Principles of Transaction Processing amongst many other things. So you want to tread lightly with statements about transactions and two-phase-commit when you are around Eric because chances are he knows more about the topic than you do. So it was simply a matter of time until my tongue-in-cheek statements about the relationship between coffee and distributed transactions caught Eric's attention. I am a little embarrassed that so many people (including Eric) watched my Developing in a Service-oriented World talk on InfoQ. But I guess eyeballs still count. Come on, click on one of those Google ads, help me pay for new gadgets^H^H^H^Hmaintaining this site! ;-)
But back to Eric. Interestingly Eric and I share a lot of the common interests but I don't think we ever formally met. I was back at the MVP meeting this year but somehow failed to run into him. Hopefully I get a chance to chat with him next time. Anyway, Eric pointed out that Starbucks does in fact use transactions for some parts of its business operations, such as recording the payment, if simply by virtue of using a (transactional) relational database. I think Eric and I both agree that distributed transactions have their pros and cons and we have to think about when to use them and when we can come up with alternate solutions. The Starbucks story was primarily aimed at those folks who claim that nothing can be done unless we have distributed transactions. So I wanted to highlight that real life can well happen without 2PC, while taking some literary license and with my tongue firmly planted in my cheek. Naturally, real life also uses 2PC. For example, the whole point of an escrow company during the purchase of a home is to ensure transactional integrity. I think living with uncertainty is a key theme of SOA (as well as asynchronous messaging) and we developers who love the command-and-control predictability of call stacks and ACID transactions better get used to it.
I think Eric and I also have a very similar view on WS-CDL. CDL has conceptual appeal, but it has not seen very much uptake. I think the reason is partly political (for example, the big guns have lots of $$$ invested in BPEL) and partly because CDL is a conceptually heavyweight topic. I talked about this a little bit in my article in IEEE Internet Computing
I think transactions in large and distributed systems are likely to remain an active topic for some time to come. For example, Martin Fowler just recently wrote about being transactionless. Also, Pat Helland's post on SOA and relativity relates very much to transactions and transactional scope in distributed systems.
In any case I hope to get a chance to chat more with Eric about SOA and transactions. And I'll be happy to buy him a coffee and observe whether the coffee shop does use transactions or not :-)
|© 2003-2021 • All rights reserved.|