Learning Materials
Resources to help you master system design interviews.
General Preparation Guidelines
Essential guides and strategies for preparing for system design interviews
Learn Fundamental Concepts
Fundamental concepts and building blocks of system design
How to make full-text search lightning fast
What is an inverted index? How Elasticsearch and Solr make full-text search fast across millions of documents. Simple explanation with examples.
Lessons on Building Scalable Search
Why you should separate search from your database: real-world lessons from Amazon. When search needs its own service and how to avoid overloading OLTP.
Decoupling search index: the essentials
Keep search index in sync with your database: CDC vs dual writes, versioning, resilience, and reconciliation. Quick reference for Elasticsearch and OpenSearch.
Keeping your search index in sync with your primary database (Part 1)
How to sync search index with database using CDC: DynamoDB Streams, PostgreSQL WAL, Debezium, Kafka. Versioning, backpressure, and dead letter queues.
Keeping your search index in sync with your primary database (Part 2)
Search index reconciliation, backfill strategy, and AWS Zero-ETL: DynamoDB export to S3, PostgreSQL replication slots, Aurora CDC to OpenSearch.
Common Misconceptions
Clarifying misconceptions that often come up in system design interviews and bootcamp Q&A.
Storage engine vs. caching layer: two different dimensions of system design
Elasticsearch for search and cache for reads—they're not either/or. How storage engine (data structure, query pattern) and caching (access frequency) work together in scalable systems.
Managing Traffic Growth: Increasing and Protecting Capacity
Autoscaling alone is incomplete. How to increase capacity with pre-scaling and autoscaling, and protect it with rate limiting and load shedding.
Practical System Design Tips
Hands-on tips for building and operating systems—beyond interview prep.
We're always adding new content. Please check back for more resources.