Оценка и планирование мощности — расчёт ожидаемой нагрузки, объёма данных и потребности в ресурсах — важная часть проектирования систем. Приблизительные расчёты «на обороте конверта» информируют решения по проектированию (как масштабировать, какие ресурсы нужны) и часто встречаются на собеседованиях по проектированию.
Почему это важно
Estimating scale informs DESIGN decisions:
→ how many servers? how much storage? what database? do you need sharding/caching?
→ understanding the SCALE (small vs massive) shapes the whole design
→ rough numbers guide whether/how to scale (don't over- or under-engineer)
Что оценивать (расчёты на обороте конверта)
✓ TRAFFIC → users, requests/sec (QPS); read vs write ratio (e.g. 100:1 reads:writes)
→ peak vs average (design for peak); daily active users → requests
✓ STORAGE → data size per item × volume × growth over time → total storage (and growth rate)
✓ BANDWIDTH → data transferred per second (request size × QPS)
✓ MEMORY → cache size needed (e.g. cache the hot 20% of data)
→ rough estimates (order of magnitude) → good enough to inform design
Полезные числа и подход
→ Know rough "latency numbers": memory ~ns, SSD ~µs, network/disk ~ms, cross-region ~100ms
→ Round numbers; use powers of 10; estimate, don't seek precision
→ Example: 1M daily users × 10 requests = 10M/day ≈ ~115 req/sec average (× peak factor)
→ derive resource needs from the estimates → justify the architecture
→ CAPACITY PLANNING → provision for expected load + growth + headroom; plan to scale
Почему это важно
Понимание того, как оценивать масштаб и проводить планирование мощности, — это ценное знание уровня senior, потому что оценка информирует решения по проектированию систем и является распространённой частью работы по проектированию и собеседований, поэтому это практический и полезный навык.
Оценка масштаба — расчёт ожидаемой нагрузки, объёма данных и потребности в ресурсах посредством приблизительных расчётов «на обороте конверта» — важна, потому что понимание масштаба определяет весь проект: знание того, обрабатывает ли система тысячи или миллиарды запросов, определяет, насколько масштабировать, какие базы данных использовать и нужны ли шардирование и кеширование, помогая избежать как избыточного инжиниринга (ненужная сложность для малого масштаба), так и недостаточного инжиниринга (проект, не справляющийся с реальной нагрузкой).
Понимание что оценивать — трафик (пользователи, запросы/сек, соотношение чтения/записи, пиковая vs средняя нагрузка), хранилище (размер данных и рост), пропускная способность и потребности в памяти/кеше — обеспечивает основу для определения размеров системы.
Понимание подхода — знание приблизительных чисел задержки (память vs SSD vs сеть vs кросс-регион), использование круглых чисел и степеней 10, оценка порядка величины вместо поиска точности, вывод потребности в ресурсах из оценок для обоснования архитектуры и планирование мощности (провизионирование для ожидаемой нагрузки плюс рост и запас) — отражает практический навык быстрого создания полезных оценок.
Это распространённый, ожидаемый навык на собеседованиях по проектированию систем (где расчёты на обороте конверта демонстрируют, что вы можете рассуждать о масштабе) и в реальном планировании мощности.
Поскольку оценка масштаба информирует ключевые решения по проектированию (как масштабировать, какие ресурсы нужны, избегая избыточного/недостаточного инжиниринга) и является частью работы по проектированию систем и собеседований, и поскольку понимание того, что оценивать и как (расчёты на обороте конверта, числа задержки, планирование мощности), — практический навык, понимание того, как оценивать масштаб и проводить планирование мощности, — это ценное знание уровня senior, полезный и ожидаемый навык для проектирования систем, который информирует архитектурные решения через приблизительное количественное рассуждение, распространённый как в реальном планировании мощности, так и на собеседованиях по проектированию, и отражающий способность обосновывать проекты реалистичными оценками масштаба и потребности в ресурсах.
