تخمین ظرفیت (Back-of-Envelope)
تخمین سریع ظرفیت: QPS، فضای ذخیرهسازی و پهنای باند — با اعداد ۲ و ۱۰ و مثالهای واقعی
چرا تخمین؟
اولین سؤال مصاحبه: «چند سرور لازم داریم؟» — بدون تخمین ظرفیت، هیچ معماریای قابل دفاع نیست. خبر خوب: فقط چهار عمل ساده + چند عدد حفظی!
اعداد جادویی برای حفظ
| مقدار دقیق | تقریب |
|---|---|
| ۱ میلیون ثانیه در روز | ~10⁵ |
| ۱ میلیارد | ~10⁹ |
| ۱ GB | ~10⁹ بایت |
| QPS تخمینی سرور معمولی | ~۱۰۰۰ |
سه تخمین اصلی
۱. QPS (درخواست در ثانیه)
DAU = کاربر فعال روزانه
درخواست/کاربر = r
QPS = DAU × r / 86400 (ثانیه روز)
مثال: ۱M کاربر × ۱۰ درخواست = ~115 QPS میانگین
پیک = ۲ تا ۵ برابر میانگین → ~500 QPS
۲. فضای ذخیرهسازی
روزانه جدید = DAU × حجم هر آیتم × آیتم/کاربر
سالانه = × ۳۶۵ + ضریب رشد + نسخهها (Replica ×3)
مثال توییتر: ۱M کاربر × ۲ توییت × ۲۵۰ بایت
= ۵۰۰MB/روز = ~180GB/سال × 3 نسخه = ~0.5TB
۳. پهنای باند (Bandwidth)
دیتای ورودی/ثانیه = QPS × حجم متوسط پاسخ
مثال: 500 QPS × 10KB = 5MB/s = 40Mbps
قانون ۲ و ۱۰
- هر عدد را به توان نزدیک ۲ یا ۱۰ گرد کنید: ۹۸ → ۱۰۰، ۱۰۲۴ → ۱۰۰۰
- دقت لازم نیست — مرتبه بزرگی مهم است (۱۰ برابر اشتباه بحرانی، ۲۰٪ نه!)
مثال کامل: Instagram ساده
| فرض | مقدار |
|---|---|
| کاربر فعال روزانه | ۱۰۰ میلیون |
| عکس/کاربر/روز | ۲ |
| حجم عکس (فشرده) | ۲۰۰KB |
| خواندن/نوشتن | ۱۰۰:۱ |
محاسبه:
- آپلود: 200M × 200KB = 40TB/روز!
- QPS نوشتن: 200M/86400 ≈ 2,300
- QPS خواندن: × ۱۰۰ = 230,000! ← کش اجباری است
نکته مصاحبه: تخمینها را «بلند» انجام دهید — مصاحبهگر باید منطق شما را بشنود. اعداد را گرد کنید و فرضها را صریح بگویید: «فرض میکنم ۱۰۰ میلیون DAU...».
جمعبندی
- سه تخمین: QPS، Storage، Bandwidth
- اعداد کلیدی: 10⁵ ثانیه/روز، ~۱۰۰۰ QPS/سرور
- قانون ۲ و ۱۰: گرد کردن به مرتبه بزرگی
- فرضها را بلند و صریح بیان کنید
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.