Home/Learn/System Design/What is System Design
system designbeginner

What is System Design? A Beginner's Guide

System design is the process of defining the architecture, components, modules, interfaces, and data flow of a system to satisfy specified requirements. In the context of software engineering interviews, it means designing large-scale distributed systems that can handle millions of users while remaining reliable and cost-effective.

Why System Design Matters

Every FAANG company : Google, Amazon, Meta, Apple, Microsoft : includes a system design round for mid-level and senior engineering roles. This round evaluates your ability to think holistically about a system, make trade-offs, and communicate technical decisions clearly. A strong system design performance can compensate for a weaker coding round, and vice versa.

System design questions test breadth of knowledge rather than depth in a single algorithm. Interviewers want to see that you can reason about real-world systems under constraints like time, budget, and team size.

Core Concepts Every Engineer Must Know

Scalability

Scalability is the ability of a system to handle increased load by adding resources. There are two dimensions: vertical scaling (adding more CPU/RAM to a single machine) and horizontal scaling (adding more machines). Horizontal scaling is almost always preferred in modern systems because it has no theoretical upper limit.

Example: Netflix serves 200+ million subscribers. A single server cannot handle that load. They use thousands of servers across multiple AWS regions, automatically scaling up during peak hours and down during quiet periods.

Availability

Availability is the percentage of time a system is operational. It is measured in nines: 99.9% (three nines) allows ~8.76 hours of downtime per year. 99.99% (four nines) allows ~52.6 minutes. 99.999% (five nines) allows ~5.26 minutes. Achieving five nines requires redundant components, automatic failover, and health checks at every layer.

Reliability

Reliability is the probability that a system will perform its intended function without failure over a specified time period. A reliable system produces correct outputs even when components fail. This is achieved through redundancy, error handling, and graceful degradation.

Latency and Throughput

Latency is the time it takes for a single request to travel from client to server and back. Throughput is the number of requests a system can handle per second. These are often inversely related: a system optimized for low latency may sacrifice throughput, and vice versa. The goal is to optimize both within your constraints.

How to Approach System Design Interviews

A structured approach signals engineering maturity. Follow these four steps:

  1. Clarify requirements : Ask about scale (daily active users, QPS), features (core vs nice-to-have), and constraints (budget, timeline).
  2. High-level design : Sketch the major components: clients, load balancers, application servers, databases, caches, message queues.
  3. Deep dive : Pick 2-3 critical areas and go deep. Discuss database schema, API design, caching strategy, or data partitioning.
  4. Trade-offs : Explicitly state what you are optimizing for and what you are sacrificing. Show you can think in trade-offs, not absolutes.

Common System Design Topics

Interviewers draw from a predictable set of problems. Here are the most common categories:

  • URL Shortener : Hashing, base62 encoding, analytics, redirect performance.
  • Chat System : WebSocket, message ordering, presence, delivery guarantees.
  • News Feed : Fan-out strategies, ranking algorithms, caching.
  • Rate Limiter : Token bucket, sliding window, distributed rate limiting.
  • Search Autocomplete : Trie data structure, real-time updates, ranking.

What Interviewers Evaluate

System design interviews are scored across multiple dimensions:

  • Problem exploration : Do you ask clarifying questions before designing?
  • Architecture decisions : Can you justify your component choices?
  • Trade-off awareness : Do you acknowledge limitations and alternatives?
  • Communication : Can you explain complex ideas simply and clearly?
  • Depth of knowledge : Can you go deep on specific technologies when probed?

Common Mistakes

  • Jumping into solution without clarifying requirements.
  • Over-engineering: designing for 10 billion users when the problem says 1 million.
  • Ignoring trade-offs: every design decision has a cost.
  • Not mentioning failure modes: what happens when a server goes down?
  • Forgetting about monitoring and observability.

Put it into practice

Ready to practice?

Start a mock interview with AI interviewer Alex. Get instant hiring signal.

Start a Mock Interview →