System Design
Understand how real-world software systems are designed.
Beginner
- What is System Design?: Planning how the different parts of a real software system fit together and work at scale.
- Client and Server: The basic relationship between the app you use and the machine that does the real work behind it.
- HTTP: The common language that lets clients and servers talk to each other over the web.
- REST APIs: A common, predictable way to structure requests so different apps can talk to a server the same way.
- Proxy & Reverse Proxy: A middle server that sits between a client and the real destination, on behalf of one side or the other.
- Authentication & Sessions: How a server remembers who you are across multiple requests, even though HTTP itself doesn't.
Intermediate
- Databases: Where an application's data actually lives, safely, between requests.
- SQL vs NoSQL: Two different philosophies for organizing and storing data, each suited to different problems.
- Caching: Keeping a copy of frequently-needed data somewhere much faster to access, so you don't redo expensive work every time.
- Database Replication: Keeping multiple copies of the same database in sync, so no single database is a single point of failure.
- Database Sharding: Splitting one huge dataset across multiple databases, so no single database has to hold all of it.
- Consistency Models: How quickly, and how strictly, every copy of your data has to agree with every other copy.
- Rate Limiting: Deliberately capping how many requests a client can make in a given time window.
- Microservices vs Monolith: Two different ways to structure an application's codebase and deployment — as one unit, or as many independent pieces.
- Publish/Subscribe (Pub/Sub): Letting one event be broadcast to many interested listeners, without the sender needing to know who they are.
Advanced
- Load Balancing: Spreading incoming requests across multiple servers so no single one gets overwhelmed.
- Queues: Letting one part of a system hand off work to be done later, without waiting around for it.
- CDN: A network of servers around the world that deliver content from the location closest to each user.
- Scalability: A system's ability to keep working well as usage grows — more users, more data, more requests.
- CAP Theorem: A rule that says a distributed system can't fully guarantee consistency and availability at the same time during a network problem.
- Consistent Hashing: A hashing technique that keeps most data in place even when servers are added or removed.
- API Gateway: A single entry point in front of many backend services, handling shared concerns so each service doesn't have to.
- 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.
- Circuit Breaker & Retries: Protecting a system from a failing dependency, instead of letting that failure cascade everywhere.
- Idempotency: Designing an operation so that doing it more than once has the exact same effect as doing it once.
- Monitoring & Observability: Being able to tell what your system is actually doing, and why something went wrong, without guessing.