22.06

a newly-unread indicator

Lessons · 219 words

The brief

Design a newly-unread indicator. This walkthrough is a placeholder: replace it with your own design notes and the page will render them with the course styling.

A design walkthrough in this course has four parts: the requirements you are committing to, the numbers those requirements imply, the drawing, and the build notes for the version you would actually run first.

Requirements

Functional

  • What a caller can do, stated as verbs on nouns.
  • What the system promises back, including what it refuses.

Non-functional

  • Latency target at a percentile, not an average.
  • Durability and consistency promises, and which ones are negotiable.

Capacity

Input Assumption Derived
Requests per day 10 million ~116 per second average, plan for 5x peak
Stored objects 1 million per day for 5 years ~1.8 billion rows
Row size 200 bytes ~360 GB before indexes

The drawing

Describe the components and the arrows between them. One machine first; add a component only when a number above forces it.

client -> API -> database
              -> event log (async) -> report

Engineering note. Every arrow costs a failure mode. Name the failure before you draw the arrow.

Build notes

List what you would build first, what you would measure, and what you would leave out of the first version.

Free preview

Continue with the complete track

Keep your progress and unlock the surrounding lessons, exercises, and complete learning path.

Unlock the complete track
124 online