System Design

Learn the building blocks of scalable systems and apply them to real-world case studies to ace the system design interview.

Warning: This course is still under development, but hey!

Foundations & The First Server

Foundational concepts and the first server setup.

Scaling to a Distributed System

Key concepts for scaling applications and managing distributed systems.

  • Scalability (Vertical vs Horizontal)Coming Soon
  • Load BalancingComing Soon
  • CAP TheoremComing Soon
  • Consistency PatternsComing Soon
  • Availability Patterns (Failover, Redundancy)Coming Soon
  • Caching StrategiesComing Soon
  • ProxiesComing Soon

Data in a Distributed World

Key concepts for managing data in distributed systems.

  • Data Partitioning (Sharding)Coming Soon
  • Database ReplicationComing Soon
  • Consistent HashingComing Soon
  • Quorum and ConsensusComing Soon
  • Blob Storage for Large FilesComing Soon

Building Modern, Resilient Architectures

Architectural patterns for building modern, resilient systems.

  • Monolithic vs. MicroservicesComing Soon
  • API GatewaysComing Soon
  • Service DiscoveryComing Soon
  • Message QueuesComing Soon
  • Publish-Subscribe PatternComing Soon
  • Event-Driven & Serverless ArchitecturesComing Soon
  • IdempotencyComing Soon

Operating a Production System

Key concepts for operating and maintaining production systems.

  • Security (AuthN, AuthZ, Encryption)Coming Soon
  • Observability (Metrics, Logging, Tracing)Coming Soon
  • Rate LimitingComing Soon
  • Leader ElectionComing Soon
  • Distributed TransactionsComing Soon

System Design Case Studies

Hands-on case studies to apply system design concepts in real-world scenarios.

  • Design a URL ShortenerComing Soon
  • Design a Social Media FeedComing Soon
  • Design a Ride-Sharing AppComing Soon
  • Design a Video Streaming ServiceComing Soon
  • Design a Chat ApplicationComing Soon
  • Design a Web CrawlerComing Soon
  • Design a Search TypeaheadComing Soon