00:00
Free System Design Course

System Design Tutorial

Learn how to design scalable, reliable and fast software systems, step by step. Clear explanations, diagrams and real-world examples, from the basics to the questions asked in senior engineering interviews.

  • 31 tutorials
  • 12 learning tracks
  • Diagrams & real examples
  • Beginner to advanced

What Is System Design?

System design is the process of deciding the architecture, components, data and communication of a software system so that it does what users need (functional requirements) and does it well: fast, reliable, secure and able to grow (non-functional requirements). It is the blueprint you create before and while building an application, from a small startup product to a platform serving millions of users.

Every good design balances a few core qualities. Each one has its own tutorial:

What You Will Learn

  • How to gather requirements and turn them into a design
  • High-level vs low-level design, and when to use each
  • Monolithic, microservices, serverless and event-driven architectures
  • Scalability, availability, reliability, latency and throughput
  • Load balancing, caching and CDNs for performance
  • Messaging, asynchronous processing and Kafka basics
  • Resilience patterns such as circuit breakers and retries
  • Authentication, authorization, JWT and OAuth2
  • How to approach system design interview questions

Who this is for

Software developers moving towards senior or architect roles, backend engineers building distributed systems, and anyone preparing for system design interviews.

Prerequisites

Basic programming in any language, simple SQL or NoSQL database use, and a general idea of HTTP, APIs and the client-server model.

Anatomy of a Scalable Web System

Most large applications are built from the same building blocks. Requests from users pass through a CDN and a load balancer to a group of stateless application servers, which use a cache for speed, a replicated database for safe storage and a message queue for slow background work.

System Design Learning Path

Follow the tracks in order, or jump to the topic you need. Topics marked "coming soon" are being written and will be linked here as they are published.

04

Networking

How clients and services talk: DNS, HTTP, APIs, WebSockets and gateways.

6 more tutorials coming soon

05

Databases & Storage

Choosing and scaling databases: SQL vs NoSQL, indexing, replication and sharding.

7 tutorials coming soon

08

Distributed Systems

Coordination across many machines: sagas, leader election and consensus.

6 more tutorials coming soon

11

Case Studies

Step-by-step designs of popular real-world systems.

10 tutorials coming soon

12

Interview Preparation

How to approach and answer system design interview questions.

2 tutorials coming soon

How to Approach Any Design Problem

Whether you are designing a real product or answering an interview question, this six-step process keeps you organised:

  1. Clarify requirements. List the main features and the non-functional goals: number of users, speed, availability.
  2. Estimate the scale. Roughly calculate requests per second, storage and bandwidth.
  3. Draw the high-level design. Clients, load balancer, services, databases, caches and queues.
  4. Design the data model and APIs. Choose databases and define the main endpoints.
  5. Deep dive into the hard parts. Find bottlenecks and single points of failure, and fix them.
  6. Explain the trade-offs. Say what you chose, why, and what you gave up.

Read the full System Design Process tutorial

Why Learn System Design?

Build Systems That Scale

Design applications that keep working smoothly as users, data and traffic grow.

Grow Into Senior Roles

Senior engineers and architects are expected to make and explain design decisions.

Ace Interviews

System design rounds are a standard part of interviews for mid-level and senior positions.

Make Better Trade-offs

Understand the cost, speed and complexity behind every architecture choice.

Avoid Costly Outages

Plan for failures early with redundancy, monitoring and resilience patterns.

Control Costs

Use the right amount of infrastructure, neither too little nor too much.