System design practice
Short, deliberate repetitions. Statements that sound right but are not, and the exercises that train the dimension you are weakest in.
Claim check
Eight statements engineers say in design reviews. Does each hold, fail, or depend on something?
01If requests arrive at 200 per second and each takes 50 ms, about 10 are in flight on average.
Backpressure and capacity02If the provider has no record of a payment we attempted, it is safe to mark it failed immediately.
Reconciliation03Virtual nodes spread a failed node's keys across many survivors instead of one neighbour.
Consistent hashing04Sequential public ids reveal information about your business.
Generating unique identifiers05Making an endpoint asynchronous is an improvement for any operation that takes more than a second.
Asynchronous processing06Pub/sub lets you add a new consumer of an event without changing the publisher.
Publish/subscribe07Switching from client polling to server push removes polling from the system entirely.
Server push: polling, long polling, SSE, WebSockets08Once a worker's lease has expired, the worker has stopped working on the job.
Leases and fencing tokens
0 of 8 answered
By dimension
Every exercise that trains one dimension, weakest evidence first.
Predicting what happens when a component, message, or network misbehaves.
- Debug: a customer got someone else's linkA URL shortener like bit.lyNew
- Take down a malicious link everywhereA URL shortener like bit.lyNew
- New links show as "not found" in a new regionA URL shortener like bit.lyNew
- How does the system learn the upload finished?A reliable video processing pipelineNew
- A worker dies 14 minutes inA reliable video processing pipelineNew
- Two workers, one jobA reliable video processing pipelineNew
- The video that kills every workerA reliable video processing pipelineNew
- Deleting a video mid-transcodeA reliable video processing pipelineNew
- The limiter that leaksRate limiting a public APINew
- Redis goes downRate limiting a public APINew
- Credential stuffing on loginRate limiting a public APINew
- Thirty million followersA home timeline at 300,000 reads a secondNew
- The post that wouldn't dieA home timeline at 300,000 reads a secondNew
- Why the queue stopped drainingA job queue that keeps working when workers fall behindNew
- One slow job typeA job queue that keeps working when workers fall behindNew
- What 'at least once' commits you toA job queue that keeps working when workers fall behindNew
- The database is down for twenty minutesProduct analytics over billions of eventsNew
- Slow again, for a different reasonProduct analytics over billions of eventsNew
- Two visitors who were one personProduct analytics over billions of eventsNew
- Write the batch inserterProduct analytics over billions of eventsNew
- One notification per event, per channelNotifications across email, push and in-appNew
- Why users got two emailsNotifications across email, push and in-appNew
- The email provider is failingNotifications across email, push and in-appNew
- Write the senderNotifications across email, push and in-appNew
- What the provider's behaviour impliesA payment workflow that never double-chargesNew
- Which transitions can happen?A payment workflow that never double-chargesNew
- A buyer was charged twiceA payment workflow that never double-chargesNew
- Who owns the idempotency key?A payment workflow that never double-chargesNew
- Webhooks arrive twice, and out of orderA payment workflow that never double-chargesNew
- The commit nobody acted onA payment workflow that never double-chargesNew
- Thirty-seven payments stuck in processingA payment workflow that never double-chargesNew
- 100x volume and a second providerA payment workflow that never double-chargesNew
- A stale value that never leavesA look-aside cache at Facebook's scaleNew
- The key everyone wantsA look-aside cache at Facebook's scaleNew
- A cache server diesA look-aside cache at Facebook's scaleNew
- A second regionA look-aside cache at Facebook's scaleNew
- A cluster with an empty cacheA look-aside cache at Facebook's scaleNew
- The channel that froze the clusterStoring trillions of chat messagesNew
- The message with no authorStoring trillions of chat messagesNew
- Write the coalescerStoring trillions of chat messagesNew
- Acknowledged, then lostA real-time collaborative editorNew
- Write the reconnect protocolA real-time collaborative editorNew
- Deploy dayA real-time collaborative editorNew
- The task that never appearedLive queries: screens that update in real timeNew
- Twelve tasks, eleven cardsLive queries: screens that update in real timeNew
- Seven tasks in a column of fiveLive queries: screens that update in real timeNew
- Back from the tunnelLive queries: screens that update in real timeNew
- Shards that are slightly in the pastSharding Postgres while it is runningNew
- Queries that cross shardsSharding Postgres while it is runningNew