fundamentals 25
- Case Study: Designing a URL Shortener
- System Design Is a Way of Thinking
- A System Design Walkthrough (Putting It All Together)
- Authentication vs Authorization (Trust Comes Before Permission)
- Synchronous vs Asynchronous Systems (Why Waiting Is a Design Choice)
- API Design (Contracts Over Code)
- Monolith vs Microservices (Why This Question Usually Shows Up at the Wrong Time)
- Sharding (How Systems Split Data — and Why It’s Harder Than It Looks)
- Replication (Why Copying Data Improves Resilience — and Introduces Disagreement)
- Read-Heavy vs Write-Heavy Systems (Why Optimizing One Often Hurts the Other)
- Databases vs Caches (Why Some Systems Decide — and Others Just Remember)
- CDN (How Caching Goes Global — and Why Geography Matters)
- Consistency Models (Why Different Users See Different Truths - and Why That’s Sometimes Okay)
- Cache Invalidation (Why Making Things Fast Is Easy — Keeping It Correct Is Hard)
- Caching (Why Some Requests Never Reach Your Servers at All)
- Reverse Proxy (The Silent Middle Layer Most Systems Rely On)
- Load Balancing (How the System Decides Who Handles Your Request)
- System Design Foundations — How the Pieces Fit Together
- Client–Server Model (Who Does What, Really?)
- Stateless vs Stateful Systems (Why Memory Changes Everything)
- Single Point of Failure (How One Small Thing Can Bring Everything Down)
- Horizontal vs Vertical Scaling (Growing Out vs Growing Up)
- Scalability vs Performance (Why Faster Isn’t Always Bigger)
- Latency vs Throughput (Why Fast Systems Still Feel Slow)
- What Is System Design? (First Principles)