High Level Design Roadmap
35 topics · 30 interview problems · Foundational to Advanced
What to learn
REST principles, HTTP verbs (GET/POST/PUT/DELETE), idempotency, pagination strategies (cursor-based, offset), authentication (JWT, API keys), versioning.
Resources
- ↗ Hello Interview: API Design
- ↗ ByteByteGo: Good APIs Vs Bad APIs — 7 Tips for API Design
- ↗ Arpit Bhayani: Everything you need to know about REST
Covered by problems
What to learn
When to use relational (ACID, joins, strong consistency) vs NoSQL (flexible schema, horizontal scale). Understand document, key-value, wide-column, and graph stores and their tradeoffs.
Resources
- ↗ Hello Interview: Data Modeling
- ↗ ByteByteGo: SQL vs NoSQL is the WRONG Question
- ↗ Gaurav Sen: SQL vs NoSQL — Tradeoffs
Covered by problems
What to learn
Cache-aside pattern with Redis/Memcached, write-through vs write-back, eviction policies (LRU, LFU, TTL), cache invalidation strategies, cache stampede prevention, CDN caching for static assets.
Resources
- ↗ Hello Interview: Caching
- ↗ ByteByteGo: Cache Systems Every Developer Should Know
- ↗ ByteByteGo: Caching Pitfalls Every Developer Should Know
Covered by problems
What to learn
Layer 4 (transport) vs Layer 7 (application) load balancers, routing algorithms (round-robin, least connections, IP hash), sticky sessions, health checks, and geographic load balancing.
Resources
- ↗ Hello Interview: Networking Essentials
- ↗ Gaurav Sen: System Design — Load Balancers
- ↗ ByteByteGo: Top 6 Load Balancing Algorithms
Covered by problems
What to learn
How CDNs cache and serve static assets from edge nodes, cache-control headers, origin shield, dynamic vs static content, CDN invalidation strategies.
Resources
- ↗ Hello Interview: Networking Essentials
- ↗ ByteByteGo: What Is A CDN? How Does It Work?
- ↗ InterviewPen: How a CDN Works
Covered by problems
📄 Read full notes →What to learn
S3-style object storage for unstructured data (images, videos, files), chunked uploads, pre-signed URLs, metadata vs binary separation, multipart upload for large files.
Resources
- ↗ Hello Interview: Handling Large Blobs
- ↗ ByteByteGo: S3-like Object Storage System Design
- ↗ System Design: Object Storage (BLOBs) Explained
Covered by problems
What to learn
HTTP/HTTPS (request-response, headers, status codes), DNS resolution, TCP vs UDP, latency vs throughput tradeoffs, gRPC for internal services, connection pooling.
Resources
- ↗ Hello Interview: Networking Essentials
- ↗ ByteByteGo: Top 8 Most Popular Network Protocols Explained
- ↗ Hussein Nasser: The OSI Model by Example
Covered by problems
📄 Read full notes →What to learn
Vertical scaling (bigger machines) vs horizontal scaling (more machines), stateless service design (session externalization), auto-scaling triggers, back-of-the-envelope estimation (QPS, storage, bandwidth).
Resources
- ↗ Hello Interview: How to Prepare
- ↗ ByteByteGo: Vertical Vs Horizontal Scaling
- ↗ System Design: Back-Of-The-Envelope Estimation
Covered by problems
What to learn
Hash ring concept, virtual nodes, how it minimizes data redistribution when nodes join/leave, applications in distributed caches and databases.
Resources
- ↗ Hello Interview: Consistent Hashing
- ↗ Gaurav Sen: What is Consistent Hashing?
- ↗ ByteByteGo: Consistent Hashing | Algorithms You Should Know
Covered by problems
What to learn
Horizontal partitioning strategies — hash-based vs range-based sharding, choosing a shard key, avoiding hot spots, cross-shard queries and joins, resharding challenges.
Resources
- ↗ Hello Interview: Sharding
- ↗ ByteByteGo: Database Sharding and Partitioning
- ↗ Gaurav Sen: What is Database Sharding?
Covered by problems
What to learn
Leader-follower (master-slave) replication, read replicas for scaling reads, synchronous vs asynchronous replication, replication lag and eventual consistency implications, failover.
Resources
- ↗ Hello Interview: Scaling Reads
- ↗ ByteByteGo: Database Replication Explained
- ↗ Hussein Nasser: Database Replication Crash Course
Covered by problems
What to learn
B-tree indexes for range queries, hash indexes for exact lookups, composite indexes and column order, covering indexes, when indexes hurt (write amplification), external indexes (Elasticsearch for full-text).
Resources
- ↗ Hello Interview: Database Indexing
- ↗ Hussein Nasser: Database Indexing Explained
- ↗ ByteByteGo: DB Indexing for System Design
Covered by problems
📄 Read full notes →What to learn
CAP theorem tradeoffs (Consistency, Availability, Partition Tolerance), strong consistency vs eventual consistency, read-your-writes, monotonic reads, linearizability, when to choose AP vs CP systems.
Resources
Covered by problems
What to learn
Producer-consumer pattern, Kafka (topics, partitions, consumer groups), SQS, at-least-once vs exactly-once semantics, dead letter queues, backpressure, when queues beat synchronous calls.
Resources
Covered by problems
What to learn
Token bucket, leaky bucket, and sliding window algorithms; distributed rate limiting with Redis (atomic Lua scripts), rate limiting at the API gateway vs per-service, handling burst traffic.
Resources
- ↗ Hello Interview: Rate Limiter Breakdown
- ↗ ByteByteGo: Rate Limiting Fundamentals
- ↗ Gaurav Sen: Token Bucket, Leaky Bucket, Sliding Logs
Covered by problems
📄 Read full notes →What to learn
WebSockets for full-duplex persistent connections, SSE for server-to-client streams, long polling as a fallback; when to pick each; connection management at scale (sticky sessions or pub-sub relay).
Resources
- ↗ Hello Interview: Real-time Updates Pattern
- ↗ Hussein Nasser: WebSockets vs SSE vs Long-Polling
- ↗ Ex-Google SWE: Long Polling vs WebSockets vs SSE
Covered by problems
What to learn
Why distributed locks are needed, Redis-based locks (SET NX EX), Redlock algorithm, fencing tokens to handle lock expiry races, lock contention and its impact on throughput.
Resources
- ↗ Hello Interview: Dealing with Contention
- ↗ Gaurav Sen: Distributed Locks
- ↗ Ex-Google SWE: Distributed Locking
Covered by problems
📄 Read full notes →What to learn
Data structures (strings, hashes, sorted sets, lists, sets, bitmaps, HyperLogLog), TTL-based expiry, pub-sub, Lua scripts for atomicity, persistence (RDB vs AOF), Redis Cluster vs Sentinel.
Resources
- ↗ Hello Interview: Redis Deep Dive
- ↗ ByteByteGo: Why is Single-Threaded Redis So Fast?
- ↗ Hussein Nasser: Redis Pub-Sub vs Kafka
Covered by problems
📄 Read full notes →What to learn
Inverted index construction, full-text search (tokenization, stemming, relevance scoring with BM25/TF-IDF), index sharding and replication in Elasticsearch, near-real-time indexing, change data capture for sync.
Resources
- ↗ Hello Interview: Elasticsearch Deep Dive
- ↗ Arpit Bhayani: Inverted Index — Data Structure Behind Search Engines
- ↗ ByteByteGo: Elasticsearch Design Deep Dive
Covered by problems
📄 Read full notes →What to learn
Partition key selection for even distribution, clustering keys for ordering, tunable consistency (ONE, QUORUM, ALL), compaction strategies, modeling around access patterns (no joins).
Resources
- ↗ Hello Interview: Cassandra Deep Dive
- ↗ ByteByteGo: Wide Column NoSQL Database Deep Dive
- ↗ Gaurav Sen: What is Cassandra?
Covered by problems
📄 Read full notes →What to learn
Single-table design, partition key + sort key modeling, Global Secondary Indexes (GSIs), DynamoDB Streams, provisioned vs on-demand capacity, hot partition problem.
Resources
- ↗ Hello Interview: DynamoDB Deep Dive
- ↗ ByteByteGo: How Key-Value Stores Work (Redis, DynamoDB)
- ↗ Hussein Nasser: Designing a Highly Available KV Store — The Dynamo Paper
Covered by problems
📄 Read full notes →What to learn
Fan-out-on-write (push model — pre-populate each follower's feed) vs fan-out-on-read (pull model — compute feed at read time); hybrid approach for celebrities, tradeoffs in storage vs latency.
Resources
- ↗ Hello Interview: Scaling Writes
- ↗ Gaurav Sen: Designing Instagram — News Feed System Design
- ↗ System Design Interview: How Social Media News Feeds Work
Covered by problems
📄 Read full notes →What to learn
Cron-based scheduling, distributed job queues (Celery, Sidekiq), idempotent job design, at-least-once execution guarantees, failure retries with backoff, job deduplication, priority queues.
Resources
- ↗ Hello Interview: Long Running Tasks
- ↗ System Design Interview: Job Scheduler with FAANG Engineer
- ↗ Distributed Job Scheduler — System Design on Whiteboard
Covered by problems
📄 Read full notes →What to learn
Service decomposition principles, inter-service communication (REST vs gRPC), service discovery, API gateway responsibilities (routing, auth, rate limiting, circuit breaking), tradeoffs vs monolith.
Resources
- ↗ Hello Interview: API Gateway Deep Dive
- ↗ ByteByteGo: What Are Microservices Really All About?
- ↗ Gaurav Sen: Monolithic vs MicroServices Architecture
Covered by problems
What to learn
Kafka as an event log, Flink/Kinesis for stateful stream processing, windowed aggregations (tumbling, sliding, session windows), exactly-once semantics, watermarks for out-of-order events.
Resources
- ↗ Hello Interview: Flink Deep Dive
- ↗ ByteByteGo: Why is Kafka Fast?
- ↗ System Design: Kafka, Flink, Spark, Exactly-Once Semantics
Covered by problems
What to learn
Count-Min Sketch for approximate counting, lossy counting, Space-Saving algorithm, two-stage MapReduce approach for heavy hitters; tradeoffs between exactness and memory/throughput.
Resources
- ↗ Hello Interview: Data Structures for Big Data
- ↗ Gaurav Sen: Top-K Problem (Heavy Hitters)
- ↗ System Design Interview: Top K Heavy Hitters
Covered by problems
📄 Read full notes →What to learn
Geohashing (encoding lat/lng into a string prefix), quadtrees for dynamic data, PostGIS for polygon queries, radius search with grid cells, nearest-neighbor search.
Resources
- ↗ Hello Interview: Proximity Search Deep Dive
- ↗ ByteByteGo: Design A Location Based Service
- ↗ Gaurav Sen: Geohashing Algorithm — Proximity Search
Covered by problems
What to learn
Operational Transformation (OT) for collaborative text editing, Conflict-Free Replicated Data Types (CRDTs) as the modern alternative, cursor/selection sync, version vectors, merging concurrent edits.
Resources
- ↗ Hello Interview: Google Docs Breakdown
- ↗ System Design: Google Docs — OT, CRDT, Versioning
- ↗ Ex-Google SWE: Collaborative Text Editing — OT vs CRDT
Covered by problems
📄 Read full notes →What to learn
Append-only write patterns, compression techniques (delta encoding, Gorilla compression), downsampling and retention policies, InfluxDB/TimescaleDB internals, querying time-range aggregations efficiently.
Resources
- ↗ Hello Interview: Time Series Databases
- ↗ Arpit Bhayani: Compression Algorithm Powering Time-Series DBs
- ↗ Ex-Google SWE: How Are Time Series Databases SO FAST?
Covered by problems
📄 Read full notes →What to learn
Two-phase commit (2PC) and its limitations, Saga pattern (choreography vs orchestration), idempotency keys for safe retries, compensating transactions for rollback, outbox pattern for reliable event publishing.
Resources
- ↗ Hello Interview: Multi-step Processes
- ↗ ByteByteGo: Distributed Transactions — 2 Phase Commit vs Saga Pattern
- ↗ Arpit Bhayani: Two-Phase Commit in Distributed Transactions
Covered by problems
📄 Read full notes →What to learn
Leader election, distributed configuration management, service registry, ephemeral nodes, watch mechanisms; when ZooKeeper is overkill vs when it's necessary.
Resources
- ↗ Hello Interview: ZooKeeper Deep Dive
- ↗ Gaurav Sen: Introduction to Apache ZooKeeper
- ↗ Arpit Bhayani: GitHub Outage — How Databases Are Managed in Production
Covered by problems
📄 Read full notes →What to learn
Lambda architecture (batch layer + speed layer + serving layer), Kappa architecture (stream-only), batch processing with Spark/Hadoop, data lake vs data warehouse, compaction and partitioning for query efficiency.
Resources
- ↗ Hello Interview: Flink Deep Dive
- ↗ ByteByteGo: What is a Data Pipeline?
- ↗ ByteByteGo: Why is Kafka so Popular?
Covered by problems
📄 Read full notes →What to learn
URL frontier (priority queue + politeness delays), distributed fetch workers, deduplication via bloom filters or URL hashes, robots.txt compliance, re-crawl scheduling, DNS caching.
Resources
- ↗ Hello Interview: Web Crawler Breakdown
- ↗ System Design Interview: Web Crawler — URL Frontier, Robots.txt, Deduplication
- ↗ ByteByteGo: How Search Really Works (Crawling, Indexing, Ranking)
Covered by problems
📄 Read full notes →What to learn
High-throughput event ingestion, server-side click deduplication, windowed counting (hourly/daily rollups), fraud signal injection, lambda architecture for real-time + batch accuracy.
Resources
- ↗ Hello Interview: Ad Click Aggregator Breakdown
- ↗ Gaurav Sen: Realtime Advertisement Clicks Aggregator
- ↗ System Design Interview: Ad Click Aggregator (Kafka + Idempotency)
Covered by problems
📄 Read full notes →What to learn
Embeddings and semantic search, Approximate Nearest Neighbor (ANN) search algorithms (HNSW, IVF), vector database options (Pinecone, Weaviate, pgvector), serving LLM inference at scale with streaming token output.
Resources
Covered by problems
📄 Read full notes →