System design strategy
This course covers how to structure software so it keeps working as users, data and failures grow. It starts with the trade-off mindset and functional versus non-functional requirements. It then moves to back-of-envelope estimation and SLIs, SLOs and SLAs. It walks through each layer of a Rails stack, from DNS and Kamal Proxy to Puma, PostgreSQL, caching and Solid Queue. Later lessons cover data modeling, scaling strategies, reliability patterns such as health checks and circuit breakers, and a five-step framework for system design interviews.
What you'll learn
- ✓Weighing trade-offs such as consistency versus availability and latency versus throughput
- ✓Estimating users, requests per second, storage and bandwidth before designing
- ✓The role of each layer in a Rails architecture, from DNS to background jobs
- ✓Choosing between relational and document storage, JSONB, normalization and indexes
- ✓Vertical and horizontal scaling, PgBouncer, read replicas and caching
- ✓Reliability patterns: redundancy, health checks, graceful degradation, circuit breakers and timeouts
What is system design?
Every developer can build an application that works on their laptop. You type bin/rails server, open localhost:3000, and everything runs. The database responds in milliseconds. There's one user: you. Nothing breaks.
Read the full lesson free →Curriculum
7 lessonsWhat is system design?
Defines system design, separates functional from non-functional requirements, and presents core trade-offs and the stages of Rails growth.
Requirements & constraints
Covers clarifying questions, back-of-envelope estimates for users, storage and bandwidth, and the difference between SLI, SLO and SLA.
High-level architecture
Follows a request through DNS, Kamal Proxy, Puma, PostgreSQL, caching and background jobs, explaining the role of each layer.
Data modeling & storage decisions
Compares relational and document storage, and explains JSONB, normalization, denormalization with counter caches, and indexing trade-offs.
Scaling strategies
Contrasts vertical and horizontal scaling, then covers PgBouncer, read replicas, caching and when to split a monolith.
Reliability & failure modes
Shows how to find single points of failure and use health checks, zero-downtime deploys, degradation, circuit breakers and timeouts.
The system design interview & real-world practice
Presents a five-step framework for system design problems and applies it to a URL shortener and this LMS.