What is System Design?
Introduction to high-level architecture planning, standard requirements engineering, and modern scaling metrics.
What you'll learn
- Functional Requirements
- Non-Functional Requirements
- Sizing & Capacity Estimation
TL;DR
Introduction to high-level architecture planning, standard requirements engineering, and modern scaling metrics.
Visual System Topology
What is System Design? Execution Topology
Concept Overview
System Design is the discipline of defining the architecture, components, modules, interfaces, and data for a complex software system to satisfy specified operational requirements. It acts as the bridge between abstract product specifications and concrete, production-ready distributed infrastructures.
At its core, a system design represents the synthesis of trade-offs. No system is perfect under all circumstances—instead, engineering is the art of selecting the correct compromises (e.g., choosing eventual consistency to guarantee high write availability, or accepting increased memory costs to achieve sub-millisecond query latencies). Successful system architects approach problems by clearly defining boundary constraints, scaling axes, and failure modes beforehand.
Key Architectural Pillars
Functional Requirements
The discrete product features that the system must physically execute. These define the API endpoints, operational interactions, and user flows (e.g., "Users can upload media and post comments to their profiles").
Non-Functional Requirements
The systemic quality metrics under load. These define the p99 latency thresholds (e.g., "< 150ms"), availability guarantees (e.g., "four-nines uptime"), write durability, and read consistency behaviors.
Sizing & Capacity Estimation
The scientific calculation of CPU cores, memory registers, SSD storage capacity, and network interface bandwidth based on Daily Active Users (DAU) and read-to-write traffic ratios.
