Knowledgebase

Approaching a System Design Problem Print

  • softwareengineering, software, troubleshooting, bandwidth, guide, howto, solution, zillionkinghost
  • 0

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.


Was this answer helpful?
Back

Are you happy with your experience? Leave us a review on Trustpilot.


Trustpilot