📄️Introduction to System Design
System design is the process of defining the architecture, components and data flow of a system so that it meets its requirements at the required scale.
📄️Scalability and Load Balancing
Scaling strategies
📄️Caching
Caching stores copies of data in a faster location to cut latency and load.
📄️Databases, Replication and Sharding
SQL vs NoSQL
📄️Message Queues and Asynchronous Processing
Queues decouple producers from consumers so work can be buffered, retried and scaled independently.
📄️API Design and Rate Limiting
REST API basics
📄️Reliability and Observability
Designing for failure
📄️Case Study: Design a URL Shortener
A classic problem that exercises most building blocks.