System Design Basics

Basic System Design
≈ 2 min read

Understand the problem before drawing the architecture

System Design does not start with choosing a database, queue, or cache. First, you need to understand what the system must do, which properties matter to it, and which constraints will affect the decisions. Only then do individual components start forming a meaningful architecture.

In this section, we will build the basic set of concepts needed in almost any system design problem. There will be no ready-made “perfect architecture” here — instead, you will get a consistent way to reason about a system.

What we will cover

  • Design Process. We will learn how to move from the problem statement to a high-level system diagram and check the solution for weak points.
  • Functional Requirements. We will see how to capture the actions and scenarios the system must support.
  • Non-Functional Requirements. We will look at speed, scalability, availability, and other properties that determine the quality of a system.
  • Latency and Throughput. We will separate two different questions: how quickly one request completes and how much work the system can process per unit of time.
  • Availability and Reliability. We will understand how “the service responds right now” differs from “the system works correctly and predictably.”
  • Stateless and Stateful. We will see where system state lives and why that directly affects scalability and fault tolerance.
  • Architecture Trade-offs. We will learn to look at a decision not as a list of benefits, but as an exchange of one system property for another.

These topics form one chain: requirements define the goal, metrics make it measurable, state shapes the components, and trade-offs explain why different systems arrive at different architectures. Once this foundation is in place, the next step is to estimate real workload.

The main System Design habit: do not ask “which technology should we use?” until it is clear which specific problem that technology is supposed to solve.