---
title: "System Design 101: Fundamentals"
summary: "Master the art of designing scalable, reliable, and maintainable systems. From load balancers to caching strategies, learn the building blocks of modern architecture."
weight: 1
---

# System Design 101: Fundamentals

> [!NOTE]
> **Who is this for?** Developers moving into senior roles, students preparing for interviews, or anyone curious about how massive systems like Netflix or Uber work.

## Why Learn System Design?

Writing code is only half the battle. As you grow in your career, the challenges shift from *"how do I write this function?"* to *"how do I ensure this system handles 10 million users?"*.

System design is the skill of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements. It's about making the right trade-offs.

## What You Will Learn

By the end of this course, you will be able to:

1.  **Speak the Language**: Confidently use terms like *latency*, *throughput*, *consistency*, and *availability*.
2.  **Use the Toolbox**: Know when to use a relational database vs. NoSQL, or when to introduce a cache or message queue.
3.  **Draw the Blueprint**: Visualise your ideas using industry-standard diagrams (C4 model).
4.  **Scale for Success**: Understand how to take a system from 1 user to 1,000,000 users.

## Course Structure

This course is broken down into digestible modules:

### [Module 1: Core Concepts](courses/system-design-101/module-1-fundamentals.md)
The foundational pillars of distributed systems. We cover Scalability (Vertical vs Horizontal), Reliability, and Maintainability.

### Module 2: The Building Blocks
A deep dive into the components that make up a system:
-   **Load Balancers**: The traffic cops of the internet.
-   **Databases**: SQL vs NoSQL, replication, and sharding.
-   **Caches**: speeding up access with Redis/Memcached.
-   **Message Queues**: Decoupling services with Kafka/RabbitMQ.

### Module 3: Architectural Patterns
How to organize code and services:
-   Monolith vs Microservices
-   Event-Driven Architecture
-   API Gateway Pattern

### Module 4: The Interview Guide
Practical tips for acing the system design interview, including a framework for tackling open-ended problems.

## Prerequisites

-   Basic understanding of how the web works (HTTP, DNS, Client-Server).
-   Familiarity with at least one programming language.
-   No prior distributed systems knowledge required.

## Let's Begin

Start your journey with **[Module 1: Fundamentals](courses/system-design-101/module-1-fundamentals.md)**.
