Skip to content
Layers Deep
All projects

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.

  1. 1Milestone 1: RequirementsFunctional, non-functional, and out-of-scope lists.Done when: At least three of each, with numbers where possible.
  2. 2Milestone 2: EstimatesRequests per second and storage over five years.Done when: Every number traces to a stated assumption.
  3. 3Milestone 3: DesignComponents, data model, and cache placement.Done when: A diagram and a short explanation of each component.
  4. 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.

Assumptions
EmergingImplicit
ProficientStated
ExemplaryStated and stress-tested
Tradeoffs
EmergingOne option presented
ProficientAlternatives compared
ExemplaryTradeoffs tied to requirements
Reliability
EmergingHappy path only
ProficientFailures considered
ExemplaryFailures handled with graceful degradation

Reflection

A few minutes of reflection makes the lessons stick.