Managing multiple sources of truth in distributed applications
When building distributed applications, it's highly desirable to maintain a single source of truth, such as a database, for all application state. Unfortunately, for some applications, multiple sources of truth are unavoidable. Adam Wolfe Gordon shares strategies, learned from real-world experience, for managing multiple sources of truth without sacrificing consistency and usability.
Talk Title | Managing multiple sources of truth in distributed applications |
Speakers | Adam Wolfe Gordon (DigitalOcean) |
Conference | Velocity |
Conf Tag | Build resilient systems at scale |
Location | New York, New York |
Date | September 20-22, 2016 |
URL | Talk Page |
Slides | Talk Slides |
Video | |
Most applications manage some sort of persisted state, and managing state in a distributed application can be a challenge. Storage solutions such as database systems or distributed key-value stores can do most of the heavy lifting, but only if your application can keep all its state in one place. Some applications inherently have multiple sources of truth. For example, an application that manages cloud storage may keep metadata about storage volumes in a database, but the actual state of the storage volumes themselves is maintained by the underlying storage system. Keeping these multiple sources of truth consistent is a hard problem. Adam Wolfe Gordon shares strategies, learned from real-world experience building a cloud storage orchestration system, for keeping multiple sources of truth consistent and maintaining application usability. These strategies include: These sound like simple ideas, but the details are tricky to get right. Throughout the talk, Adam explores examples of how these strategies have been applied in building an storage orchestration system for a public cloud and discusses challenges encountered along the way.