Good Reading – Life Beyond Distributed Transactions by Pat Helland

One of the things I’ve been doing the last few months is to go over the vast reams of printouts that I have of articles, blog posts, etc. and find the things that are more immediately valuable and chucking the rest.  I got into a habit of printing out anything that might possibly be useful, and ended up with a lot of stuff that, well, I just didn’t need.  So YAGNI to it.  If it doesn’t possibly apply to a current active project of mine, chuck it (which is really only kinda-YAGNI, but it eliminates 80+% of stuff, so good enough).

digression: yes, I print out blog posts.  I like to mark up things that are of most interest, occasionally add comments if it is something that I know I will come back to, and so on.  It is why there has never been, and will never be, a paperless office.  But I digress.

Some articles don’t directly fit this plan though, and are of general value above and beyond any particular project, and Pat Helland’s paper “Life beyond Distributed Transactions: an Apostate’s Opinion” is one of them.

The purpose of the paper, not surprisingly, is to talk about the practical ways in which very large-scale applications get around using distributed transactions, and deal with the fact that as these sorts of applications grow in size, the sheer amount of data makes it impossible to use them.  Anyone interested in CQRS or NoSQL will find the paper interesting, as Helland attempts to talk about common patterns and give them names so that people can converse about them (I don’t know that this part has been all that successful).

I won’t go over it in any detail, that’s what the link is for, but you can find interesting topics, such as:

  • the idea of an almost-infinite scaling application, and how it changes your mindset in thinking about how to code in such a situation
  • “At least once” messaging as the main paradigm of communication (as opposed to synchronous calls, of any sort)
  • how messages seems to necessitate ‘activities’ which are entity-to-entity partnerships that can ensure that all messages are idempotent (even ones that continually change state).  For whatever reason, I think this part of the paper is the most important.  Or maybe I just find it the most interesting.
  • I take that back, the most important point of the paper, and one which has appeared elsewhere, is to point out that business processes inherently deal with uncertainty all the time, and that software can and needs to handle uncertainty in much the same way": “The semantics of uncertainty is wrapped up in the behavior of the business functionality.  While more complicated to implement than simply using distributed transactions, it is how the real world works….”

It’s a good read, regardless of whether you care about things like CQRS or NoSQL or not.  Check it out.

posted on Tuesday, April 06, 2010 8:12 PM Print
No comments posted yet.

Post Comment

Title *
Name *
Comment *  
Please add 3 and 2 and type the answer here: