Lately I've been working on ever more complex systems, particularly layered systems, and it has led me to start looking at system approaches that I haven't had room or reason to look at in the past. In particular, messaging has caught my eye. My company is still extremely small, and most of our applications do fine within the two-phase commit model used by Zope's transaction manager, or the transaction manager of our own D4 (Dynamic, Declarative, Data-driven) based framework, but there are some applications that are already chafing under these loads. Primarily, it's applications that depend on far away services outside of our control that have had the most issues, and required a lot of patchy resources to get around the problems.
A book that I've glanced at on occasion is Gregor Hohpe's Enterprise Application Integration Patterns. When I first saw it and glanced through the diagrams, I was overwhelmed by the messaging architectures put forth. None of my systems had any sort of requirement like that yet. Most of the enterprise application integration I've done to this point has been along the lines of integrating new web based applications for large organizations with their larger corporate databases. But for some reason, and perhaps it's just that "it's a new year, it's time to learn a new technology!" bug that bites some of us, now I'm starting to understand the (potential) importance of messaging.
What really interested me was Gregor's post, Starbucks Does Not Use Two-Phase Commit. In that post he uses the typical Starbucks interaction to describe an asynchronous messaging scenario, and also goes in to exception handling in such scenarios (not only in Starbucks, but in other entities as well). I found the post informative, and it's helping my mind break out of the mold that it's been in for the last eight to ten years. And to be honest, that mold has worked quite fine most of the time. I just have a feeling that it's one that my company is going to have to break out of over the upcoming year. Based on recent conversations in house, it's obvious that our brains aren't quite wired to handle asynchronous messaging yet. I think a lot of that has to do with exception handling, however, and Gregor's post casts light on scenarios that come and go in conversations that we've never battened down.