Interested? Intrigued? Something to report?
Feel free to get in touch with us.
Concept, Organization, Back-end Bugs
Design, Front-end Bugs
Please talk to your local organizers instead. There's a link to their email address on the About page.
This one’s for you, Cliff.
Don’t forget to lean into it.
Life beyond Distributed Transactions: an Apostate’s Opinion
by Pat Helland
Many decades of work have been invested in the area of distributed transactions including protocols such as 2PC, 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 Line1. 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 paper 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 reason for starting this discussion is to raise awareness of new patterns for two reasons. First, it is my belief that this awareness can ease the challenges of people hand-crafting very large scalable applications. Second, by observing the patterns, hopefully the industry can work towards the creation of platforms that make it easier to build these very large applications.