System design case study: a link shortener
Design a link shortener from requirements to caching and failure handling, with every assumption written down.
Brief ready; automated checks coming soonIntermediateAbout 3 hoursSystem design
What you'll build
- State functional and non-functional requirements
- Estimate reads, writes, and storage from explicit assumptions
- Choose storage and a caching strategy and justify them
- Describe behavior when the cache or database fails
Milestones
Work through these in order. Each one ends with a check you can verify yourself.
- 1Milestone 1: RequirementsFunctional, non-functional, and out-of-scope lists.Done when: At least three of each, with numbers where possible.
- 2Milestone 2: EstimatesRequests per second and storage over five years.Done when: Every number traces to a stated assumption.
- 3Milestone 3: DesignComponents, data model, and cache placement.Done when: A diagram and a short explanation of each component.
- 4Milestone 4: Failure scenariosWhat happens when components fail.Done when: Three failure scenarios with user-visible behavior.
Test criteria
What a finished project must demonstrate.
- Assumptions are explicit and consistent with the estimates
- The caching strategy names its key, TTL, and invalidation rule
- At least two alternatives are compared with tradeoffs
An automated runner for these criteria is planned. Until it ships, check each one yourself; nothing here is graded for you yet.
Rubric
Rate your work against each criterion. Exemplary isn't required; be honest about where you are.
Reflection
A few minutes of reflection makes the lessons stick.