On Tuesday, November 6th, I presented “Life Beyond Distributed Transactions: an Apostate’s Opinion” at TechEd EMEA at Barcelona.
Unlike most of my presentations, this one had only 45 slides for a 75 minute session and so I went slower and we had time for some Q&A at the end. Perhaps, I should take a lesson from how enjoyable that was and not quite stuff a slide-per-minute everytime.
The abstract and slides are attached.
Many decades of work have been invested in the area of distributed transactions including protocols such as Two-Phase Commit, Paxos, and various approaches to quorum. These protocols provide the application programmer a façade of global serializability. Personally, I have invested a non-trivial portion of my career as a strong advocate for the implementation and use of platforms providing guarantees of global serializability.
My experience over the last decade has led me to liken these platforms to the Maginot Line. [The Maginot Line was a huge fortress that ran the length of the Franco-German border and was constructed at great expense between World War I and World War II. It successfully kept the German army from directly crossing the border between France and Germany. It was quickly bypassed by the Germans in 1940 who invaded through Belgium.
In general, application developers simply do not implement large scalable applications assuming distributed transactions. When they attempt to use distributed transactions, the projects founder because the performance costs and fragility make them impractical. Natural selection kicks in…Instead, applications are built using different techniques which do not provide the same transactional guarantees but still meet the needs of their businesses.
This talk explores and names some of the practical approaches used in the implementations of large-scale mission-critical applications in a world which rejects distributed transactions. We discuss the management of fine-grained pieces of application data which may be repartitioned over time as the application grows. We also discuss the design patterns used in sending messages between these repartitionable pieces of data. The talk is intended to provoke a different way of thinking about the direction of applications in a wildly-scalable world.