System design is fundamentally about making the right trade-offs that balance competing priorities such as simplicity, scalability, performance, and complexity. This guide thoroughly explores key architectural trade-offs to help build resilient, scalable, and efficient systems.

YouTube video: https://youtu.be/2g1G8Jr88xU?si=jaXr9njh_UUjsD-C


1. Vertical Scaling vs. Horizontal Scaling

Vertical Scaling (Scaling Up)

Horizontal Scaling (Scaling Out)

Summary:

Aspect Vertical Scaling Horizontal Scaling
Ease of management Easier More complex
Scalability Limited (hardware bound) Virtually unlimited
Cost Expensive upgrades Infrastructure & Dev efforts
Fault tolerance Lower Higher

Key Insight: The trade-off here is simplicity vs. scalability. Choose vertical scaling early on, then move to horizontal as growth requires.


2. REST APIs vs. GraphQL APIs

REST APIs