Back to course
Module 1 · Day 3

Back-of-the-Envelope Estimation

খামের পেছনের হিসাব — box আঁকার আগে দুই লাইনের ভাগ-গুণে system-এর আকার বোঝা: data-size-এর মই, QPS-এর recipe, storage সময়ের সাথে কীভাবে বাড়ে, আর cache size করার 80/20 rule।

~120 min read5 learning objectives
What you'll learn
  • back-of-the-envelope estimation কী, আর design আঁকার আগে কেন এটা system-এর আকার ঠিক করে দেয় — বলতে পারা।
  • data-size-এর মই (KB → MB → GB → TB → PB) সাবলীলভাবে পড়া; একটা tweet/photo/video মোটামুটি কত — জানা।
  • aggressive rounding: 86,400 ≈ 10⁵ ধরে মাথায় এক লাইনে QPS কষা — exact নয়, order of magnitude।
  • QPS recipe: DAU × actions ÷ 86,400 → average; × peak factor → peak; read/write ratio দিয়ে আলাদা করা।
  • storage = write QPS × payload × time × replication, আর cache size করতে 80/20 rule (hot working set)।
Before this
  • Day 1 — system design কী, latency vs throughput, ৫-ধাপি framework (estimation ছিল ২ নম্বর ধাপ)।
  • Day 2 — requirements ও scope; DAU, read/write ratio-র ধারণা।
  • স্কুলের ভাগ-গুণ আর powers of ten (10³, 10⁶) চেনা — এর বেশি কোনো math লাগবে না।
1

Why Estimate First

design আঁকার আগে system-এর আকার জানা।

"একটা Twitter design করো" শুনে box আঁকা শুরু করার আগে একটা প্রশ্ন: system-টা আসলে কত বড়? এক machine-এ হবে, নাকি অনেক machine + cache + sharding লাগবে? উত্তরটা দেয় back-of-the-envelope estimation — দুই লাইনের ভাগ-গুণ।

ভয়ের কিছু নেই — এ কোনো কঠিন math নয়। আসল কৌশল হলো round aggressively: 86,400-কে 10⁵ ধরো, তাহলে মাথায় এক লাইনেই QPS বেরিয়ে আসে। estimation নিখুঁততার খেলা নয়, order of magnitude-এর খেলা।

আজ পাঁচটা জিনিস হাতে-কলমে: data-size-এর মই, rounding-এর অভ্যাস, QPS-এর recipe, storage সময়ের সাথে কীভাবে বাড়ে, আর cache size করার 80/20 rule।

estimationbefore you draw a single box

design আঁকার আগে দুই লাইনের ভাগ-গুণে system-এর আকার বের করা — এক machine-এ হবে, নাকি অনেক machine + cache + sharding লাগবে। এই order-of-magnitude-টাই পরের সব সিদ্ধান্ত ঠিক করে। under-estimate করলে outage, over-estimate করলে সারা বছরের সার্ভার-বিল গচ্চা।

Why it matters

৫০০ জনের বিয়ের রান্নায় বাবুর্চি আগে চাল-মাংস ওজন করে নেয় — হিসাব না করলে হয় কম পড়বে (অতিথি না খেয়ে ফিরবে), নয় দ্বিগুণ কিনে টাকা নষ্ট।

2

Size Language and Rounding

powers of two, আর aggressive rounding-এর অভ্যাস।

powers of twoKB · MB · GB · TB · PB

data-size-এর মই: প্রতি ধাপে প্রায় ×১০০০ — KB (~একটা tweet), MB (~একটা photo), GB (~১০০০ photo / সিনেমার অংশ), TB (~বড় database), PB (বিশাল)। এই sizes মাথায় থাকলে storage estimate চটজলদি হয়। (binary-তে ১০২৪, কিন্তু estimation-এ ~১০০০ ধরো।)

Why it matters

বাজারে গ্রাম-কিলো-মণ না জানলে যেমন হিসাব হয় না, byte → KB → MB → GB না জানলে storage estimate হয় না। আগে size-এর ভাষা শেখো।

order of magnituderound aggressively

মাথায় নিখুঁত গুণ (86,400 × 5,000,000) কষতে যেও না — আগে round করো: 86,400 ≈ 10⁵, এক বছরের সেকেন্ড 31,536,000 ≈ 3×10⁷। তারপর powers of ten মেলাও। estimation নিখুঁততার নয়, order of magnitude-এর খেলা।

Why it matters

"১৫০ kg চাল নাকি ১৪৭.৩ kg" — বিয়ের বাজারে কেউ জিজ্ঞেস করে না। কাছাকাছিটাই কাজ চালায়, আর মাথায় এক লাইনে কষা যায়।

3

The QPS Recipe

DAU → average → peak → read/write split।

QPSqueries per second

average QPS = DAU × actions/user ÷ 86,400। এটাই estimation-এর প্রথম সংখ্যা। মনে রাখার কৌশল: 86,400-কে 10⁵ ধরো, বাকিটা powers of ten-এ ভাঙো — calculator লাগবে না।

Why it matters

৫M DAU, জনপ্রতি ১০ action ⇒ 5×10⁷ ÷ 10⁵ = ~500 QPS — এক লাইনে। এই একটা সংখ্যা দিয়েই design-এর আকার আঁচ করা যায়।

peak factorread-to-write ratio

দুটো সংখ্যা পুরো design ঘোরায়। peak QPS = average × peak factor (সাধারণত 2–5×, sale/ঈদে ১০–২০×) — সবসময় peak ধরে provision করো, average ধরে নয়। আর read/write ratio: read-heavy → cache + read replica + CDN; write-heavy → queue/partition।

Why it matters

Daraz ১১.১১-তে স্বাভাবিকের ১০×+ traffic, আর ভীষণ read-heavy (দেখে অনেক, কেনে কম)। peak + read-heavy — এই দুটো জানলেই বোঝা যায় cache আর extra server লাগবে।

4

Storage Grows Over Time

payload × time × replication।

replication factorstorage over time

storage = write QPS × payload size × সময় × replication factor (সাধারণত ৩ কপি durability-র জন্য)। per-second সংখ্যাটা ছোট দেখায়, কিন্তু ১ বা ৫ বছরে গুণ করলে এটাই এক disk ছাড়িয়ে storage cluster বা sharding-এ ঠেলে দেয়।

Why it matters

দিনে ১ টাকা জমানো তুচ্ছ, কিন্তু ৫ বছরে ~১৮০০ টাকা। storage-ও তেমন — সময় আর ৩ কপি দিয়ে গুণ করলেই আসল আকার বেরোয়।

5

Cache Size — the 80/20 Rule

hot working set, আর কখন estimate skip করবে।

the 80/20 ruleworking set

পুরো data cache করার দরকার নেই: ২০% hot data সাধারণত ৮০% read সামলায় (Pareto)। শুধু সেই hot working set-টা RAM-এ cache করলে অল্প খরচে বড় লাভ — পুরোটা cache করা টাকা ও RAM-এর অপচয়।

Why it matters

দোকানের সামনের তাকে শুধু best-selling জিনিস রাখা হয়; সব stock সামনে রাখার দরকার নেই। যেগুলো বেশি বিকোয় (hot) সেগুলোই হাতের কাছে।

when to skipestimation as a tool

সব সময় estimate করতেই হবে না। সংখ্যাটা যদি কোনো সিদ্ধান্ত না বদলায় (এক node-এ হবে, নাকি shard লাগবে — উত্তর যাই হোক একই), তাহলে estimation শুধু সময় নষ্ট। যেখানে সংখ্যা design বদলায়, ঠিক সেখানেই কষো।

Why it matters

১০ জনের রান্নায় কেউ গ্রাম ধরে ওজন করে না — চোখের আন্দাজই যথেষ্ট। হিসাব তখনই দরকার, যখন সংখ্যাটা সিদ্ধান্ত পাল্টে দেয়।

6

Check Your Understanding

ভুল করলেও সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।

Misconception check

Estimation মানে নিখুঁত, সঠিক সংখ্যা বের করা।

Misconception check

মাথায় বড় গুণ (86,400 × 5,000,000) কষতে হবে।

Misconception check

Average QPS দিয়ে provision করলেই হবে।

Misconception check

Storage মানে শুধু payload × QPS।

Misconception check

ভালো performance-এর জন্য পুরো dataset cache করতে হবে।

Misconception check

Read আর write QPS এক, আলাদা করার দরকার নেই।

Misconception check

Interview-এ সবসময় estimation করতেই হবে।

Quick check

৫ মিলিয়ন DAU, জনপ্রতি দিনে ১০ action — average QPS মোটামুটি কত (round করে)?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Estimation-এ "round aggressively" কেন?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

average QPS 500, peak factor 3× — কোন সংখ্যায় provision করবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Storage estimate-এ beginners কোন দুটো জিনিস ভুলে যায়?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

powers of two-র মই কীভাবে ওঠে, আর 1 GB ≈ কত MB?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

80/20 rule cache-এ কী বলে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

read-to-write ratio estimate-এ কেন জরুরি?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

কখন estimation skip করা ঠিক?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Note

চারটে idea মনে রাখো — design আঁকার আগে দুই লাইনের ÷ আর × কষো, এটাই বলে এক machine না অনেক machine লাগবে; estimation order of magnitude-এর খেলা, precision-এর নয় — 86,400 ≈ 10⁵ ধরে round করে এক লাইনে কষো; সবসময় peak QPS (average × peak factor) ধরে provision করো, average ধরলে ভেঙে পড়বে; আর storage-এর আসল বিস্ফোরণ লুকিয়ে থাকে time horizon × replication factor-এ — per-second ছোট সংখ্যাই বছর আর ৩ কপি দিয়ে গুণ হয়ে sharding-forcing হয়ে যায়।

Glossary

শব্দার্থ — পরে ফিরে দেখার জন্য

একনজরে সব key term। কোনো শব্দ ভুলে গেলে এখানে এসে খুঁজে নিও।

80/20 rule (Pareto)
~২০% hot data ~৮০% read সামলায়; cache size করার ভিত্তি।
Average QPS
DAU × actions/user ÷ 86,400 — গড় load।
Back-of-the-envelope estimation
design আঁকার আগে দুই লাইনের rough ভাগ-গুণে system-এর আকার বের করা।
Bandwidth
সময়ের একক প্রতি কত data যায় — QPS × response size দিয়ে আন্দাজ।
Order of magnitude
১০-এর কোন ঘরে সংখ্যাটা (10², 10³…); estimation-এ exact digit নয়, এটাই আসল।
Payload size
একটা request/record-এর data আকার (bytes/KB)।
Peak factor
peak কত গুণ average (সাধারণত 2–5×, sale/ঈদে 10–20×)।
Peak QPS
average × peak factor — ব্যস্ততম মুহূর্তের load; এটা দিয়েই provision করো।
Powers of two
data-size-এর মই; প্রতি ধাপে ~×১০০০: KB → MB → GB → TB → PB।
QPS / RPS
Queries / Requests Per Second — সেকেন্ডে কতগুলো request।
Read-to-write ratio
কত read বনাম কত write; read-heavy → cache/replica, write-heavy → queue/partition।
Replication factor
data-র কত কপি রাখা হয় (durability-র জন্য সাধারণত ৩)।
Round aggressively
কষার আগে মোটাভাবে round করা (86,400 ≈ 10⁵) — মাথায় এক লাইনে কষতে।
Seconds in a day
24 × 3600 = 86,400 ≈ 10⁵ — QPS কষার মূল ভাজক।
Working set
data-র যে অংশ আসলে নিয়মিত ব্যবহার হয় (hot data)।
References

Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.

  • The System Design Primer — Back-of-the-envelope calculations & AppendixDonne Martin (2023)
  • Back-of-the-Envelope Estimation (System Design Interview, Ch. 2)Alex Xu (ByteByteGo) (2023)
  • System Design Delivery — when to estimateHello Interview (2024)
  • Numbers Every Programmer Should Know (interactive)Jeff Dean / Peter Norvig; Colin Scott (2020)
Exit check

দুই বাক্যে নিজের ভাষায় লেখো

একটা photo-sharing app: 2M DAU, জনপ্রতি দিনে ~5টা upload, প্রতি photo ~1MB। দু'বাক্যে — (১) round করে peak write QPS-এর একটা আন্দাজ দাও, আর (২) ৫ বছরে storage মোটামুটি কোন order-of-magnitude-এ যাবে (replication ×3 ধরে)।

0 chars
Back to course