System Design CourseSystem Design Course1

Capacity Estimation in System Design



What is Capacity Estimation?

Capacity estimation is the process of calculating how much load your system needs to handle. It helps you estimate the required hardware, bandwidth, database size, and other resources based on expected usage.

This step is typically performed early in the system design phase, especially in interviews and real-world system architecture planning. It ensures that the system will be scalable, responsive, and cost-effective.

Why is Capacity Estimation Important?

Without proper capacity estimation, a system might crash under high traffic or overuse resources unnecessarily. It helps in:

Example 1: Designing a URL Shortener - Estimating Capacity

Let’s say we are designing a URL shortener like Bit.ly. First, we must understand the usage pattern.

Assumptions:

Step-by-Step Estimation:

Question:

If we wanted to support the service for 3 years without archiving any data, how much storage would we need?

Answer:

3 years = 36 months → 162 GB × 36 = 5.8 TB approximately

What Else Do We Estimate in Capacity Planning?

Example 2: Estimating Capacity for a Video Streaming Service

Imagine you’re designing a basic video streaming service.

Assumptions:

Step-by-Step Estimation:

Question:

How many CDN servers would we need if each server can handle 5 Gbps of traffic?

Answer:

How to Approach Capacity Estimation in Interviews

Always follow a logical, layered approach:

  1. Start with user base
  2. Estimate daily active users (DAU)
  3. Calculate requests per second (QPS)
  4. Estimate data size and storage needs
  5. Project bandwidth and compute capacity

Quick Tip:

Assume 1 month = 30 days and 1 year = 365 days unless specified otherwise.

Practice Question:

You are building a chat app. If 2 million users each send 20 messages per day (average message size 200 bytes), how much storage is needed per day?

Answer:

Key Takeaways



Welcome to ProgramGuru

Sign up to start your journey with us

Support ProgramGuru.org

Mention your name, and programguru.org in the message. Your name shall be displayed in the sponsers list.

PayPal

UPI

PhonePe QR

MALLIKARJUNA M