System Design

Understand how real-world software systems are designed.

Beginner

  1. What is System Design?: Planning how the different parts of a real software system fit together and work at scale.
  2. Client and Server: The basic relationship between the app you use and the machine that does the real work behind it.
  3. HTTP: The common language that lets clients and servers talk to each other over the web.
  4. REST APIs: A common, predictable way to structure requests so different apps can talk to a server the same way.
  5. Proxy & Reverse Proxy: A middle server that sits between a client and the real destination, on behalf of one side or the other.
  6. Authentication & Sessions: How a server remembers who you are across multiple requests, even though HTTP itself doesn't.

Intermediate

  1. Databases: Where an application's data actually lives, safely, between requests.
  2. SQL vs NoSQL: Two different philosophies for organizing and storing data, each suited to different problems.
  3. Caching: Keeping a copy of frequently-needed data somewhere much faster to access, so you don't redo expensive work every time.
  4. Database Replication: Keeping multiple copies of the same database in sync, so no single database is a single point of failure.
  5. Database Sharding: Splitting one huge dataset across multiple databases, so no single database has to hold all of it.
  6. Consistency Models: How quickly, and how strictly, every copy of your data has to agree with every other copy.
  7. Rate Limiting: Deliberately capping how many requests a client can make in a given time window.
  8. Microservices vs Monolith: Two different ways to structure an application's codebase and deployment — as one unit, or as many independent pieces.
  9. Publish/Subscribe (Pub/Sub): Letting one event be broadcast to many interested listeners, without the sender needing to know who they are.

Advanced

  1. Load Balancing: Spreading incoming requests across multiple servers so no single one gets overwhelmed.
  2. Queues: Letting one part of a system hand off work to be done later, without waiting around for it.
  3. CDN: A network of servers around the world that deliver content from the location closest to each user.
  4. Scalability: A system's ability to keep working well as usage grows — more users, more data, more requests.
  5. CAP Theorem: A rule that says a distributed system can't fully guarantee consistency and availability at the same time during a network problem.
  6. Consistent Hashing: A hashing technique that keeps most data in place even when servers are added or removed.
  7. API Gateway: A single entry point in front of many backend services, handling shared concerns so each service doesn't have to.
  8. WebSockets & Real-Time Communication: A way for a server to push data to a client the moment something happens, instead of waiting for the client to ask.
  9. Circuit Breaker & Retries: Protecting a system from a failing dependency, instead of letting that failure cascade everywhere.
  10. Idempotency: Designing an operation so that doing it more than once has the exact same effect as doing it once.
  11. Monitoring & Observability: Being able to tell what your system is actually doing, and why something went wrong, without guessing.