# KodeKloud: Beta Courses System Design For Beginners

## System Design For Beginners

### Foundations & One Server

- [Introduction](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Introduction/page.md): Practical step-by-step system design course for beginners building a scalable application while introducing load balancing, caching, indexing, replication and sharding with hands-on labs.
- [What is System Design Actually](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/What-is-System-Design-Actually/page.md): Explains system design principles for scaling web applications, identifying failure modes and pragmatic mitigations like load balancers, caching, replication, and operational trade-offs.
- [HLD vs LLD Where This Course Lives](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/HLD-vs-LLD-Where-This-Course-Lives/page.md): Explains differences between high-level and low-level system design, focusing on HLD concepts, components, data flow, scaling, and contrasting with LLD implementation details.
- [Interview Byte Answer at the Right Altitude](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Interview-Byte-Answer-at-the-Right-Altitude/page.md): Advice for system design interviews recommending stating the desired level of detail up front and outlining high level architecture, trade offs, and when to drill into low level design
- [Functional vs Non Functional Requirements](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Functional-vs-Non-Functional-Requirements/page.md): Explains functional versus nonfunctional requirements and how latency, scalability, availability, durability, and cost influence app design and architecture decisions
- [Requirements Before Boxes](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Requirements-Before-Boxes/page.md): A guide to five core system questions—users and growth, read versus write balance, data durability, latency tolerances, and cost—before designing scalable photo app architecture
- [Interview Byte The First Five Minutes](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Interview-Byte-The-First-Five-Minutes/page.md): How to use the first five minutes of a system design interview to clarify requirements and justify architectural decisions
- [Monolithic vs Microservices](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Monolithic-vs-Microservices/page.md): Comparison of monolithic and microservices architectures, their trade-offs, when to start with a monolith, and when splitting into services makes sense.
- [Vertical vs Horizontal Scaling](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Vertical-vs-Horizontal-Scaling/page.md): Comparison of vertical and horizontal scaling strategies for web apps, explaining trade-offs, operational considerations, and when to scale up versus scale out for capacity and reliability.
- [Interview Byte Why Not Just Buy a Bigger Server](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Interview-Byte-Why-Not-Just-Buy-a-Bigger-Server/page.md): Compares vertical and horizontal scaling, explaining trade-offs, operational impacts, and guidance on when to scale up or scale out for different application sizes and availability needs
- [How a Request Actually Travels](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/How-a-Request-Actually-Travels/page.md): How a user request travels from device to server covering DNS resolution, IP addressing, HTTPS and TLS, caching, CDNs, and latency effects on performance.
- [Load Balancers](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Load-Balancers/page.md): Explains how load balancers act as reverse proxies to distribute traffic across servers, perform health checks, choose backends, and provide redundancy to avoid single points of failure.
- [Stateless vs Stateful](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Stateless-vs-Stateful/page.md): Explains stateless versus stateful servers and how to centralize sessions for scalable, disposable servers.
- [Interview Byte The Random Logout Question](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Interview-Byte-The-Random-Logout-Question/page.md): Explains random user logouts after horizontal scaling caused by in-memory sessions and recommends using shared session stores or stateless tokens with trade-offs and operational guidance
- [Two Containers Behind a Load Balancer](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Foundations-One-Server/Two-Containers-Behind-a-Load-Balancer/page.md): Demonstrates running two backend containers behind an NGINX load balancer to observe request distribution and failover when one container stops.

### Data: Reads and Writes

- [Data Modeling](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Data-Modeling/page.md): Guidance on designing data models and indexing for a photo sharing app emphasizing access patterns, entity relationships, storing images in object storage, and SQL versus NoSQL tradeoffs.
- [SQL vs NoSQL](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/SQL-vs-NoSQL/page.md): Comparing SQL and NoSQL databases, their trade offs, use cases, and guidance for choosing between relational and schema-less stores with examples and polyglot persistence recommendations
- [Interview Byte Which DB and Why](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Interview-Byte-Which-DB-and-Why/page.md): Guidelines and a checklist for choosing SQL or NoSQL based on data model, access patterns, consistency needs, transactions, scaling and operational tradeoffs, with interview examples.
- [Indexes](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Indexes/page.md): Describes database indexes, how they speed queries, when to add them, and trade offs like write latency and storage cost.
- [Fix the Slow Query](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Fix-the-Slow-Query/page.md): Hands-on lab demonstrating how adding an index to a PostgreSQL table transforms a slow query on five million rows into a fast one using EXPLAIN ANALYZE
- [Zoom Out and Revisit](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Zoom-Out-and-Revisit/page.md): Overview of a photo app system architecture detailing stateless servers, load balancing, Redis sessions and cache, Postgres primary with read replicas, MongoDB, and scaling and operational strategies
- [Caching](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Caching/page.md): Explains caching concepts, patterns, trade-offs, and best practices for using Redis to speed reads, manage consistency, and handle invalidation in distributed systems.
- [Cache Invalidation TTLs](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Cache-Invalidation-TTLs/page.md): Strategies for keeping caches consistent with databases, comparing TTL expiration and active invalidation plus mitigations for stampedes and race conditions
- [Interview ByteTwo Caching Questions](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Interview-ByteTwo-Caching-Questions/page.md): Concise interview guide covering cache eviction policies, stampede defenses, and consistency strategies with tradeoffs and short examples.
- [Cache Aside with Redis](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Cache-Aside-with-Redis/page.md): Demonstrates Redis cache-aside pattern to accelerate reads, show cache hits and misses, and illustrate stale data when the database is updated without cache invalidation.
- [Replication](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Replication/page.md): Explains database replication, read scaling, replication lag and consistency trade offs, read routing and failover, and why backups remain essential.
- [Sharding](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Sharding/page.md): Explains database sharding, shard key strategies, hot shard and resharding problems, and solutions like consistent hashing plus tradeoffs and operational considerations
- [Replication Failover](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Replication-Failover/page.md): Guide to configuring primary-replica database replication, observing lag, simulating primary failure, and promoting a replica to primary with best practices and engine-specific considerations.
- [Zoom Out and Revisit](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Data-Reads-and-Writes/Zoom-Out-and-Revisit/page.md): Overview of a photo app system architecture detailing stateless servers, load balancing, Redis sessions and cache, Postgres primary with read replicas, MongoDB, and scaling and operational strategies

### Media, APIs, and Async Work

- [The Upload Path](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/The-Upload-Path/page.md): Explains storing photo metadata in a database and image binaries in object storage, using pre-signed uploads and background workers for resizing to optimize uploads and serving
- [CDNs and Object Storage](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/CDNs-and-Object-Storage/page.md): Explains using CDNs to cache object storage assets worldwide to reduce latency, lower origin bandwidth and costs, and manage cache invalidation for static media like photos and videos.
- [APIs in Plain Words](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/APIs-in-Plain-Words/page.md): Explains APIs as contracts enabling communication between distributed software, illustrating HTTP REST calls, request/response flow, pagination, and practical photo app end-to-end interactions.
- [Real Time Polling vs WebSockets](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/Real-Time-Polling-vs-WebSockets/page.md): Comparison of real-time notification methods like polling, long polling, SSE, WebSockets, and push services, explaining trade-offs, scaling, and mobile background considerations.
- [Message Queues](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/Message-Queues/page.md): Explains message queues and how they decouple producers and consumers to handle background tasks, buffer spikes, ensure reliability, and require idempotency for at-least-once delivery.
- [PubSub and Fan Out](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/PubSub-and-Fan-Out/page.md): Explains pub/sub and fan-out for decoupling photo upload events so multiple independent services like thumbnails, feeds, indexing, and scanners process their own copies.
- [Interview Byte How Does the Feed Get Built](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Media-APIs-and-Async-Work/Interview-Byte-How-Does-the-Feed-Get-Built/page.md): Explains push, pull, and hybrid feed strategies for social apps, comparing tradeoffs and operational mitigations like batching, queues, caching, and celebrity thresholding

### Failure, Protection, and Operations

- [Single Points of Failure](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/Single-Points-of-Failure/page.md): Explains identifying and mitigating single points of failure using redundancy, failover, backups, RPO/RTO, and operational practices to ensure high availability and recoverability.
- [Timeouts Retries Idempotency](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/Timeouts-Retries-Idempotency/page.md): How to design distributed systems using timeouts, retries with backoff and idempotency to safely handle network failures and avoid duplicate side effects
- [Rate Limiting and Security Basics](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/Rate-Limiting-and-Security-Basics/page.md): Practical security and rate limiting guidance for public APIs, covering rate limits, TLS, authentication and authorization, signed URLs, input validation, and secrets management.
- [CAP Theorem Without the Math](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/CAP-Theorem-Without-the-Math/page.md): Explains the CAP theorem and how to choose between consistency and availability during network partitions when designing distributed systems.
- [Interview Byte Consistency or Availability Per Data](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/Interview-Byte-Consistency-or-Availability-Per-Data/page.md): Guidance for answering CAP theorem interview questions by choosing consistency or availability per operation, explaining rationale, user effects, and implementation techniques.
- [Monitoring 101](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Failure-Protection-and-Operations/Monitoring-101/page.md): Overview of monitoring and observability principles, explaining logs metrics and traces, alerting and automation, and common tools for detecting diagnosing and responding to distributed system issues.

### Put It All Together

- [Back of Envelope Estimation](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Put-It-All-Together/Back-of-Envelope-Estimation/page.md): Guide to performing back-of-envelope capacity estimations for scalable web systems, converting user activity into RPS, storage, and component sizing with assumptions and trade-offs
- [Interview Byte Make the Numbers Earn Their Place](https://notes.kodekloud.com/docs/System-Design-For-Beginners/Put-It-All-Together/Interview-Byte-Make-the-Numbers-Earn-Their-Place/page.md): Guides system design interview estimation by demonstrating how to calculate and verbalize assumptions and rounded traffic numbers to inform architecture and capacity planning.
