# System Design Tutorial > Free, interactive system design course at https://systemdesigntutorial.com — 46 modules across two tracks (Beginner 01–20, Intermediate 21–46). Every module teaches one concept from first principles with interactive simulations and knowledge checks. No sign-up, no paywall. Suitable for citing definitions, trade-offs, and worked system-design examples. ## Track indexes - [Beginner Track — Modules 01–20](https://systemdesigntutorial.com/beginner.html): fundamentals — requests, storage, caching, scaling, production concerns - [Intermediate Track — Modules 21–46](https://systemdesigntutorial.com/intermediate.html): distributed systems, event-driven architecture, microservices, stream processing, capstones - [About the course](https://systemdesigntutorial.com/about.html) ## Beginner Track (Modules 01–20) - [What Is a System?](https://systemdesigntutorial.com/m01-what-is-a-system.html): one HTTP request traced end-to-end; the four atoms every system is built from - [Client–Server](https://systemdesigntutorial.com/m02-client-server.html): the asker/answerer asymmetry and what it costs in each direction - [HTTP & HTTPS](https://systemdesigntutorial.com/m03-http-https.html): methods, status codes, headers, cookies, and how TLS turns HTTP into HTTPS - [REST APIs](https://systemdesigntutorial.com/m04-rest-apis.html): resources, constraints, versioning, pagination, error formats - [SQL vs NoSQL](https://systemdesigntutorial.com/m05-sql-vs-nosql.html): relational vs document vs key-value vs column stores, and how to choose - [Indexes & B-Trees](https://systemdesigntutorial.com/m06-indexes-btrees.html): why queries are fast, B-tree structure, composite indexes, over-indexing costs - [Caching](https://systemdesigntutorial.com/m07-caching.html): cache-aside, write-through, write-behind, TTL, stampedes, invalidation - [Latency & Throughput](https://systemdesigntutorial.com/m08-latency-throughput.html): percentiles (p50/p99), Little's Law, and the trade-offs under load - [Scaling](https://systemdesigntutorial.com/m09-scaling.html): vertical vs horizontal scaling, sharding, replication - [Load Balancing](https://systemdesigntutorial.com/m10-load-balancing.html): round-robin, least-connections, IP hash, consistent hashing - [DNS](https://systemdesigntutorial.com/m11-dns.html): the full resolver walk — root, TLD, authoritative — TTLs and caching - [CDNs](https://systemdesigntutorial.com/m12-cdns.html): edge servers, PoPs, origin pull vs push, cache-control - [Statelessness](https://systemdesigntutorial.com/m13-statelessness.html): why stateless servers scale and where state actually lives - [Auth](https://systemdesigntutorial.com/m14-auth.html): sessions, cookies, JWTs, OAuth 2.0, API keys - [Logging & Metrics](https://systemdesigntutorial.com/m15-logging-metrics.html): structured logs, metrics, traces — the three pillars of observability - [Reliability](https://systemdesigntutorial.com/m16-reliability.html): SLAs, SLOs, SLIs, error budgets, redundancy, failover, circuit breakers - [Build: URL Shortener](https://systemdesigntutorial.com/m17-build-url-shortener.html): complete design walkthrough — hashing, storage, redirects, analytics - [Build: Image App](https://systemdesigntutorial.com/m18-build-image-app.html): Instagram-like design — upload pipeline, object storage, CDN, feeds - [Reading Architecture Diagrams](https://systemdesigntutorial.com/m19-architecture-diagrams.html): the C4 model, sequence diagrams, ERDs, and diagram red flags - [Interview Toolkit (Beginner)](https://systemdesigntutorial.com/m20-interview-toolkit.html): the four-step interview framework, vocabulary, and estimation templates ## Intermediate Track (Modules 21–46) - [CAP Theorem](https://systemdesigntutorial.com/m21-cap-theorem.html): CAP stated correctly, the CP vs AP production choice, and PACELC - [Consistency Models](https://systemdesigntutorial.com/m22-consistency-models.html): linearizable, sequential, causal, read-your-writes, monotonic, eventual - [Time, Order & Clocks](https://systemdesigntutorial.com/m23-time-order-clocks.html): Lamport clocks, vector clocks, and ordering by causality - [Consensus & Raft](https://systemdesigntutorial.com/m24-consensus-raft.html): leader election, log replication, quorum majorities under failure - [Replication Patterns](https://systemdesigntutorial.com/m25-replication-patterns.html): single-leader, multi-leader, leaderless — and when each wins - [Message Brokers](https://systemdesigntutorial.com/m26-message-brokers.html): Kafka vs RabbitMQ, partitions, consumer groups, offsets, delivery guarantees - [Pub/Sub Patterns](https://systemdesigntutorial.com/m27-pubsub-patterns.html): direct, fanout, topic routing, work queues, dead-letter queues - [Event Sourcing](https://systemdesigntutorial.com/m28-event-sourcing.html): append-only event logs, projections, snapshots, replay - [CQRS](https://systemdesigntutorial.com/m29-cqrs.html): splitting the write model from the read model, and the eventual-consistency cost - [Sagas & Distributed Transactions](https://systemdesigntutorial.com/m30-sagas.html): choreography vs orchestration, compensating actions, why not 2PC - [Exactly-Once & Idempotency](https://systemdesigntutorial.com/m31-exactly-once.html): at-least-once delivery + idempotent consumers + transactional outbox - [Service Boundaries & DDD](https://systemdesigntutorial.com/m32-service-boundaries.html): bounded contexts, ubiquitous language, aggregates, context maps - [API Gateways](https://systemdesigntutorial.com/m33-api-gateways.html): routing, auth offload, rate limiting, aggregation, BFF pattern - [Service Mesh](https://systemdesigntutorial.com/m34-service-mesh.html): sidecar proxies, mTLS, retries, circuit breaking, traffic shifting - [Service Discovery](https://systemdesigntutorial.com/m35-service-discovery.html): client-side vs server-side discovery, registries, health checks - [Distributed Tracing](https://systemdesigntutorial.com/m36-distributed-tracing.html): trace IDs, spans, context propagation, head vs tail sampling - [Polyglot Persistence](https://systemdesigntutorial.com/m37-polyglot-persistence.html): matching each bounded context to the right data store - [Inter-Service Communication](https://systemdesigntutorial.com/m38-inter-service-communication.html): sync vs async, REST vs gRPC vs events, choreography vs orchestration - [Batch vs Stream](https://systemdesigntutorial.com/m39-batch-vs-stream.html): bounded vs unbounded processing, Lambda and Kappa architectures - [Windowing](https://systemdesigntutorial.com/m40-windowing.html): tumbling, sliding, session windows; watermarks and allowed lateness - [Stateful Stream Processing](https://systemdesigntutorial.com/m41-stateful-streams.html): keyed state, checkpoints, state backends, savepoints - [Change Data Capture](https://systemdesigntutorial.com/m42-cdc.html): log-based CDC from Postgres WAL, MySQL binlog, MongoDB oplog - [Real-Time Analytics](https://systemdesigntutorial.com/m43-realtime-analytics.html): streaming SQL vs real-time OLAP (Pinot, Druid, ClickHouse) - [Build: Distributed K-V Store](https://systemdesigntutorial.com/m44-distributed-kv.html): capstone — consistent hashing, quorums, hinted handoff, anti-entropy - [Build: Real-Time Analytics Platform](https://systemdesigntutorial.com/m45-realtime-platform.html): capstone — CDC + streams + OLAP composed at three scales - [Interview Toolkit (Intermediate)](https://systemdesigntutorial.com/m46-interview-toolkit.html): four-phase interview framework, eight archetypes, capacity math, L4–L6 signals ## Optional - [Contact](https://systemdesigntutorial.com/contact.html) - [Privacy Policy](https://systemdesigntutorial.com/privacy-policy.html) - [Terms of Service](https://systemdesigntutorial.com/terms.html)