Designing highly-available Service with Data Consistency
When designing a highly-available service one inevitably faces the consequences of the (in)famous CAP theorem. Designing a distributed system where data consistency is paramount is a challenging endeavor. To do so it is important to understand domain concepts inherent in the data and their relationship. Imposing carefully selected procedure on writes enables well-behaved clients to still benefit from high availability while providing high guarantees on consistency.
This presentation explores a journey of making an existing versioned storage system for map data, design without high availability in mind, 99.9 per cent available. While the high-availability design was being put together versioning concepts needed to be strengthened and exposed more strictly in the API. To preserve consistency, the access pattern for read-clients needed to be made more strict.
Join us for the presentation to learn:
* how do design such a system in an incremental manner from components that don’t provide HA guarantees
* reasons why API should be strict and designed defensively
* how optional parameters can be problematic even when they initially seem to be very convenient
* about problems of highly-available designs being hard to get right and counter-intuitive to explain