About this project

This repository is a curated link collection for learning system design and preparing for system design interviews. It does not contain original software; it organizes free articles, videos, courses, books, newsletters, engineering blog posts, and distributed systems papers. Main sections include: - Core Concepts: scalability, availability, reliability, SPOF, latency vs throughput vs bandwidth, consistent hashing, CAP theorem, failover, fault tolerance. - Networking Fundamentals: OSI model, IP addresses, DNS, proxy vs reverse proxy, HTTP/HTTPS, TCP vs UDP, load balancing, checksums. - API Fundamentals: APIs, API gateway, REST vs GraphQL, WebSockets, webhooks, idempotency, rate limiting, API design. - Database Fundamentals: ACID transactions, SQL vs NoSQL, indexes, sharding, replication, scaling, database types, Bloom filters, architectures. - Caching Fundamentals: caching basics, strategies, eviction policies, distributed caching, CDN. - Asynchronous Communication: pub/sub, message queues, change data capture. - Distributed Systems and Microservices: heartbeats, service discovery, consensus algorithms, distributed locking, gossip protocol, circuit breaker, disaster recovery, distributed tracing. - Architectural Patterns: client-server, microservices, serverless, event-driven, peer-to-peer. - System Design Tradeoffs: vertical vs horizontal scaling, concurrency vs parallelism, long polling vs WebSockets, batch vs stream processing, stateful vs stateless, consistency models, cache strategies, push vs pull, REST vs RPC, sync vs async, latency vs throughput. - Interview Preparation: a framework for answering system design interview problems, plus categorized practice problems (easy, medium, hard) such as URL shortener, WhatsApp, Instagram, Uber, Google Docs, Dropbox, and distributed storage. - Additional Resources: courses, newsletters, books, YouTube channels, must-read engineering articles, and classic distributed systems papers (Paxos, MapReduce, GFS, Dynamo, Kafka, Spanner, Bigtable, ZooKeeper, LSM-Tree, Chubby). The repository is useful as a study roadmap and reference index for software engineers preparing for system design interviews or seeking to understand large-scale distributed system concepts.