Оценка хранилища и пропускной способности

Вторая половина оценки: сколько данных накопится за год и какой нужен канал.

Пропускная способность (bandwidth) — объём данных в секунду, который система должна передавать; считается как QPS × средний размер ответа.

Объём хранилища

Берём число записей в сутки и умножаем на размер одной записи, затем экстраполируем на год. Для сократителя ссылок: 100M новых ссылок в месяц, на запись ~500 байт (короткий код, оригинал, метаданные).

в месяц  = 100_000_000 записей
размер   = 500 байт
за месяц = 100M * 500B = 50 ГБ
за 5 лет = 50 ГБ * 12 * 5 = 3 ТБ

Вывод: 3 ТБ за пять лет — это много для оперативной памяти, но немного для дисковой БД. Шардирование пока не обязательно, но об этом стоит упомянуть как о точке роста.

Пропускная способность

Если редиректов 3000 QPS, а ответ — лёгкий HTTP-редирект (~500 байт с заголовками), то исходящий трафик:

bandwidth = 3000 QPS * 500 B = 1.5 МБ/с
          = ~12 Мбит/с

Для фотосервиса картина другая: ответ — изображение по 1–2 МБ, и тот же QPS даёт гигабиты в секунду, откуда сразу следует необходимость CDN.

Как работает под капотом

Эти оценки нужны, чтобы обосновать компоненты. Большой объём хранилища -> шардирование и/или объектное хранилище. Высокая пропускная способность на статике -> CDN и кэш у границы. Дешёвый редирект -> можно держать горячие ссылки прямо в кэше в памяти. Цифры превращаются в стрелки на вашей схеме.

Степени двойки для памяти

ЕдиницаПримерно
КБ10^3 байт
МБ10^6 байт
ГБ10^9 байт
ТБ10^12 байт

Частые ошибки

  • Путать биты и байты при оценке канала (×8).
  • Забыть про заголовки и метаданные в размере записи.
  • Не связать цифры с компонентами — оценка ради оценки.

Итог

  • Хранилище = записей/сутки × размер × горизонт (год/5 лет).
  • Пропускная способность = QPS × размер ответа; помните про ×8 для бит.
  • Большой объём -> шардирование/объектное хранилище; тяжёлый трафик -> CDN.
Проверьте себя
1. Как оценивается требуемая пропускная способность?
ADAU делить на число серверов
BQPS умножить на средний размер ответа
CЧисло записей умножить на 86400
DРазмер БД делить на год
2. Почему для фотосервиса почти сразу нужен CDN, а для сократителя ссылок — нет?
AФото нельзя кэшировать в БД
BОтвет-картинка в тысячи раз тяжелее ответа-редиректа, и трафик достигает гигабит
CСократитель ссылок не использует HTTP
DCDN работает только с изображениями