Skip to contentSystem Design
Sequence
- Define users, core journeys, scale assumptions, and non-goals.
- Rank quality attributes: availability, consistency, latency, durability, privacy, cost.
- Model data and invariants.
- Draw boundaries, APIs, and the main read/write flows.
- Examine failure modes, recovery, and operational ownership.
- Compare alternatives and record the decision.
- Plan evolution: migration, compatibility, observability, rollback.
Questions that expose weak designs
- What is the source of truth?
- Which operations must be atomic or idempotent?
- What happens during retries, duplication, partial failure, or stale reads?
- Where does untrusted input cross a boundary?
- What grows fastest, and how will we know before it breaks?
- What is deliberately simple until evidence justifies complexity?
Knowledge connections