Оценки «на салфетке»: QPS, объём данных, хранилище

Грубая оценка за минуту важнее точной за час: она показывает, упрётся ли система и во что.

Оценка «на салфетке» (back-of-the-envelope) — быстрый расчёт нагрузки и объёмов по порядку величины, чтобы понять, какие компоненты вообще нужны.

Цель — не точность до запятой, а порядок величины. 1000 QPS или 1 000 000 QPS — это разные архитектуры. Округляйте смело: в году ≈ 31,5 млн секунд, но для прикидок берут 10⁵ секунд в сутки (точнее 86 400) и считают в уме.

Шаг 1. Считаем QPS

QPS (queries per second) — запросов в секунду. Идём от числа активных пользователей. Пусть 10 млн DAU, каждый делает 20 действий в день:

Запросов в сутки = 10 000 000 * 20 = 200 000 000
Секунд в сутках  ≈ 86 400 (округляем до 10^5)
Средний QPS      = 200 000 000 / 100 000 = 2 000 QPS

Но трафик неравномерен. Пиковый QPS обычно в 2–3 раза выше среднего, поэтому проектируем под ~5 000 QPS. Это уже подсказывает: один сервер не справится, нужен балансировщик и несколько инстансов.

Шаг 2. Степени двойки и единицы данных

Чтобы прикидывать объёмы, держите в голове таблицу степеней двойки. Она же — шпаргалка по размерам данных.

СтепеньПримерноИмя
2¹⁰тысяча (10³)1 KB
2²⁰миллион (10⁶)1 MB
2³⁰миллиард (10⁹)1 GB
2⁴⁰триллион (10¹²)1 TB
2⁵⁰10¹⁵1 PB

Шаг 3. Объём хранилища

Пример: сервис пишет 500 млн новых записей в сутки, каждая ≈ 1 KB. Сколько хранилища нужно на 5 лет?

В сутки = 500 000 000 * 1 KB = 500 GB / день
В год   = 500 GB * 365 ≈ 180 TB / год
За 5 лет ≈ 900 TB ≈ 1 PB

Вывод мгновенный: на одном диске это не поместится — нужно шардирование и план роста. Заодно прикиньте репликацию: с тройной репликацией умножайте на 3.

Шаг 4. Пропускная способность (полоса)

Если каждый из 5000 QPS отдаёт ответ по 10 KB:

Полоса = 5 000 * 10 KB = 50 MB/с ≈ 400 Mbit/с

Это нагрузка на сеть и подсказка, что тяжёлую статику (картинки, видео) стоит вынести на CDN, а не гонять через свои серверы.

Удобные числа для запоминания

ВеличинаОкругление для счёта в уме
Секунд в сутках~10⁵ (86 400)
Секунд в месяце~2,5 млн
Чтение из памяти~100 нс
Чтение с SSD~100 мкс (в 1000 раз медленнее памяти)
Round-trip внутри ЦОД~0,5 мс
Round-trip между континентами~100–150 мс

Итог

  • QPS считают от DAU; пиковый берут в 2–3 раза выше среднего.
  • Степени двойки и «10⁵ секунд в сутки» позволяют считать объёмы в уме.
  • Оценки сразу подсказывают: нужен ли шардинг, CDN, сколько серверов.
Проверьте себя
1. 10 млн DAU, по 20 запросов в день. Каков примерный средний QPS?
Aоколо 200
Bоколо 2 000
Cоколо 20 000
Dоколо 200 000
2. Зачем при оценке QPS умножать средний на 2–3?
AЧтобы перестраховаться без причины
BТрафик неравномерен — нужно держать пиковую нагрузку, а не среднюю
CТак требует стандарт
DЧтобы занизить требования
3. Чему примерно равно 2³⁰ в десятичной системе?
Aмиллиону (10⁶)
Bмиллиарду (10⁹)
Cтысяче (10³)
Dтриллиону (10¹²)
Поддержать проект