System Design: Architecture, Scale and Trade-offs

Learn system design: estimate load, choose building blocks and weigh trade-offs for scalable, reliable systems. Built for engineers and interviews.

Start course →

What you'll learn

  • Turn vague requirements into functional and non-functional goals.
  • Estimate QPS, storage and bandwidth with back-of-the-envelope maths.
  • Choose load balancing, caching, databases, queues and CDNs for a workload.
  • Explain consistency, replication, sharding and failure handling trade-offs.
  • Walk through a full design for a common system, such as a URL shortener or chat app.

Syllabus

Module 1: Foundations

  1. What is System Design?
  2. Gathering Requirements
  3. Back-of-the-Envelope Estimation

Module 2: Building Blocks

  1. Load Balancing
  2. Caching
  3. SQL vs NoSQL
  4. Replication & Sharding

Module 3: Scale & Reliability

  1. CAP Theorem
  2. Message Queues
  3. CDNs & Edge

Module 4: Architecture Patterns

  1. Monolith vs Microservices
  2. API Gateway & Service Discovery
  3. Event-Driven Architecture & CQRS

Module 5: Consistency & Coordination

  1. Consistent Hashing
  2. Distributed Transactions & Sagas
  3. Leader Election & Idempotency

Module 6: Messaging Deep Dive

  1. Queues vs Pub/Sub
  2. Delivery Guarantees

Module 7: Resilience

  1. Circuit Breakers & Retries
  2. Rate Limiting Algorithms, Deep Dive

Module 8: Data & Indexing

  1. Database Indexing
  2. A Decision Framework: SQL or NoSQL
  3. Scaling Reads and Partitioning Strategies

Module 9: Observability

  1. Logging, Metrics, Tracing & Alerting

Module 10: Security Basics for System Design

  1. Authentication, Authorization & Encryption

Module 11: Design Practice

  1. Design a URL Shortener
  2. Design a Rate Limiter
  3. Design a Chat Application
  4. Design a News Feed
  5. Design a Notification System
  6. Design a Distributed Cache
  7. Design a Ride-Sharing Matching System