A Repeatable System Design Process

Use a repeatable sequence rather than jumping immediately to microservices:

  1. Clarify product scope and user journeys.
  2. Quantify scale and workload.
  3. Define APIs and important data entities.
  4. Sketch a simple high-level architecture.
  5. Deep-dive into the highest-risk components.
  6. Evaluate bottlenecks, failures, security, and consistency.
  7. Explain trade-offs and how the system will be operated.

A design is a set of hypotheses. For each important choice, record the reason, alternatives, costs, and conditions that would trigger reconsideration. For example, a single relational database may be the simplest initial choice; read replicas or partitioning can be introduced when measurements show a specific bottleneck.

Avoid premature complexity. Every queue, cache, service, and replica introduces failure modes, operational burden, and new consistency questions.

System design workflow
Key Takeaways
  • Design from requirements to architecture.
  • Keep the first design as simple as possible while meeting requirements.
  • Document why a decision was made and what evidence could change it.