System design, connected.
Explore complete designs and the decisions behind them.
One shared library. Topics connect to deep dives and their follow-ups.
Deep dives
9 deep dives| When to add a queue Derive the async boundary, keep accepted work recoverable, and distinguish waiting space from processing capacity. | ||
|---|---|---|
| Cursor pagination Continue from a stable indexed position, scope the cursor to the query, and explain what changes between pages can do. | ||
| Idempotency and retries Keep one task distinct from its attempts, save one reply, and handle duplicate work, uncertain outcomes, and late workers safely. | ||
| Backpressure and capacity Separate capacity from throughput, drain a finite burst, and bound waiting when useful capacity cannot keep up. | ||
| Choosing a data modelComing soon | ||
| Processing slots, threads, and concurrencyComing soon | ||
| Indexes and write costComing soon | ||
| Transaction boundariesComing soon | ||
| Bulk database writesComing soon |
| Design an inference batching serviceSign-in required · Free | |||
|---|---|---|---|
| Design a telemetry ingestion and query serviceSign-in required · Free |
Topics connect to deep dives, and follow-up guides connect to the deep dive they extend. Use search to find a deep dive. Drag the background to pan. Drag a card to move it; connections follow. Shift-click boxes or Shift-drag empty space to select multiple boxes, then drag a selected box to move the group. Use Select for touch, Escape or Clear to clear selection, Shift + Enter to toggle a focused box, and Command or Control + A to select visible boxes. Click a topic to collapse its branch, or a resource to expand its preview. Use the plus or minus control on a deep dive to show or hide its children. Scroll to pan, pinch to zoom. Tab to a card and press Enter to open or arrow keys to move. The List view provides all resources without canvas navigation.