System Design
Modules
Reading the Problem
Learn to identify the real constraints: cost, latency, scale, before designing a solution.
Layers and Responsibilities
Separation of concerns: presentation, business logic, data access, and their interactions.
Data Modeling
SQL vs NoSQL, normalization, denormalization, relationships, and storage choices.
Monoliths vs Microservices
When to choose a monolith, when to switch to microservices, and how to orchestrate services.
Scalability
Horizontal vs vertical scaling, load balancing, replication, and sharding.
Caching Strategies
Distributed cache, client-side cache, invalidation, and caching patterns.
Message Queues
Synchronous and asynchronous queues, producer/consumer patterns, error handling and retries.
Observability
Monitoring, logging, tracing, and metrics to understand your system in production.
Tradeoffs and Decisions
CAP theorem, consistency vs availability, performance vs cost, and decision making.