Scaling Basics & Estimation in System Design

Scalability is one of the most important concerns in system design.
It defines whether a system can grow smoothly as usage increases or collapses under pressure.

Many engineers understand scalability in theory but struggle to reason about numbers.
This blog focuses on simple, practical scaling concepts and basic estimation techniques that are easy to apply in real systems and interviews.


What Is Scaling?

Scaling is the ability of a system to handle increased load without degrading functionality.

Load can increase in different forms:

  • More users
  • More requests
  • More data
  • More traffic

A scalable system adapts to growth with minimal architectural changes.


Vertical Scaling (Scale Up)

Vertical scaling means adding more power to a single machine.

Examples:

  • More CPU
  • More RAM
  • Faster disks

Pros

  • Simple to implement
  • No application-level changes

Cons

  • Hardware limits
  • Single point of failure
  • Expensive at higher scale

Vertical scaling works well for small to medium systems.


Horizontal Scaling (Scale Out)

Horizontal scaling means adding more machines.

Examples:

  • Multiple application servers
  • Database replicas
  • Distributed caches

Pros

  • High scalability
  • Better fault tolerance
  • Cost-efficient at scale

Cons

  • Increased complexity
  • Requires stateless design
  • Needs load balancing

Most large-scale systems rely on horizontal scaling.


Horizontal vs Vertical Scaling

Vertical scaling increases capacity of one node.
Horizontal scaling increases number of nodes.

As a rule of thumb:

  • Start with vertical scaling
  • Move to horizontal scaling as growth demands

Why Estimation Matters in System Design

In system design interviews, vague answers are not enough.

Interviewers expect:

  • Approximate numbers
  • Logical assumptions
  • Clear reasoning

Exact accuracy is not required.
Structured thinking is.


Back-of-the-Envelope Estimation

Back-of-the-envelope calculations help you:

  • Estimate scale quickly
  • Identify bottlenecks
  • Justify architectural choices

They are rough calculations meant to guide decisions.


Step 1: Estimate Users

Start with assumptions.

Example:

  • 1 million registered users
  • 10% daily active users
  • 10% concurrent users

That gives:

  • 100,000 daily active users
  • 10,000 concurrent users

Step 2: Estimate Traffic

Assume:

  • Each active user makes 10 requests per day

That results in:

  • 1 million requests per day
  • ~12 requests per second on average

Always consider peak traffic, not averages.


Step 3: Estimate Storage

Example:

  • Each user generates 1 KB of data per day
  • 1 million users

That equals:

  • 1 GB per day
  • ~365 GB per year

Storage grows silently and must be planned early.


Step 4: Estimate Bandwidth

Example:

  • Average response size: 5 KB
  • 1 million requests per day

That results in:

  • ~5 GB outbound traffic per day

Bandwidth matters for cost and performance.


How Estimation Influences Design

Estimation helps answer questions like:

  • Do we need caching?
  • Do we need sharding?
  • Do we need replication?
  • Will one database be enough?

Numbers drive architecture, not assumptions.


Common Scaling Mistakes

  • Designing for millions of users on day one
  • Ignoring peak traffic
  • Forgetting storage growth
  • Overcomplicating early architecture

Good scaling is incremental, not over-engineered.


Key Takeaways

  • Scaling is about handling growth
  • Vertical and horizontal scaling solve different problems
  • Estimation helps justify design decisions
  • Back-of-the-envelope calculations are essential
  • Simple assumptions are better than none

What’s Next?

In the next blog, we’ll cover:

👉 CAP Theorem, ACID & BASE
You’ll learn how consistency, availability, and partition tolerance influence system design decisions.

Leave a Comment

Your email address will not be published. Required fields are marked *