A method.
WHAT TO DO FIRST
Establish the requirements, rather than proposing a design.
WHAT TO ESTABLISH
What the system must do How many users, and how much data What the read and write patterns are What availability is required What latency is acceptable What constraints exist
WHY THOSE NUMBERS MATTER
They determine whether the design needs anything beyond the obvious.
WHAT TO ESTIMATE
Rough magnitudes: requests per second, storage growth, bandwidth.
WHY ROUGHLY
Precision is not available, and magnitude is what changes the design.
WHAT TO DESIGN NEXT
The simplest thing meeting the requirements.
WHAT TO THEN IDENTIFY
Where it would fail as load grows.
WHAT TO ADDRESS
Those, one at a time, stating the trade-off of each.
WHAT TO DISCUSS
Data model How components communicate Where state lives Failure behaviour
WHAT TO AVOID
Proposing a complex distributed design immediately Adding components without a stated reason
WHAT TO STATE THROUGHOUT
Assumptions, and trade-offs.