This document discusses some key lessons the author has learned about building distributed systems at scale:
- Start with more servers than you need and scale out capacity from the beginning to solve scaling problems proactively.
- Put significant thought into how data is keyed and identified to facilitate queries and sharding.
- Consistency is not always critical, and distributed systems can function with some degree of inconsistency.
- Precompute frequently queried data when possible to avoid ad hoc queries.
- Separate processing from storage to allow independent scaling.
- Carefully plan how data will be deleted as removal is complex.
1 of 61
Download to read offline
More Related Content
Learning to build distributed systems the hard way
57. YOU CANT SCALE
TO REAL TIME
and dont trust code that doesnt run continuously
58. DO YOU REALLY
NEED A BACKUP?
if you got 3x replication over multiple
availability zones, is that backup really worth it?
59. PRODUCTION IS THE
ONLY REAL TEST
ENVIRONMENT
when thousands of things happen every second,
new, weird and unforeseen things happen all the time,
your tests can only cover the foreseeable
=