We're sorry this tutorial wasn't helpful. Please tell us what we can do better.
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.
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:
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.
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.
01
Fundamentals
What system design is, the design process, requirements and HLD vs LLD.