Получить доступ

Сервис принимает 100 млн сообщений в сутки по 1 КБ. Сколько примерно места потребуется за год и какой множитель забывают чаще всего?

MiddleОценка нагрузки
Ещё спрашивают так:
  • Как оценить объём хранения на год?
  • Какие множители учитывать при оценке хранилища?
Коротко

10⁸ × 1 КБ = 100 ГБ в сутки → ~36 ТБ в год → ~100 ТБ с тройной репликацией. Чаще всего забывают множитель репликации.

  • Формула: записей в сутки × размер × срок хранения × репликация × накладные расходы
  • Индексы могут добавить столько же, сколько сами данные; сжатие — уменьшить в разы
  • Из ответа — следствия: партиционирование по времени, холодное хранилище, срок жизни данных

А ещё Бэкапы — ещё одна копия, обычно в отдельном хранилище

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Расчёт: 100 млн сообщений × 1 КБ = 10¹¹ байт = 100 ГБ в сутки. За год × 365 ≈ 36,5 ТБ. Реплик обычно три (Kafka, Cassandra, HDFS, облачные диски) — ~110 ТБ.

Множители, которые забывают:

  • репликация — ×2–3;
  • индексы — для активно индексируемых таблиц сопоставимы с данными;
  • служебные данные — заголовки строк, метаданные, фрагментация;
  • бэкапы и снимки;
  • рост — нагрузка через год не та же, что сейчас.

И один уменьшающий: сжатие — текст и JSON сжимаются в 3–10 раз, колоночные хранилища — ещё лучше.

Что делать с ответом:

  • 100 ТБ в год не помещаются в одну базу — нужно партиционирование по времени и, вероятно, шардирование;
  • старые данные читают редко — переносить в дешёвое объектное хранилище (S3-совместимое) или колоночный формат;
  • определить срок жизни данных (TTL): часто сообщения старше 90 дней никому не нужны;
  • оценить пропускную способность записи: 100 ГБ в сутки ≈ 1,2 МБ/с в среднем — немного, но пики выше.

Что хотят услышать

  • Формула и расчёт с округлением.
  • Репликация, индексы, бэкапы как множители; сжатие как делитель.
  • Архитектурные следствия: партиционирование, холодное хранилище, TTL.

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

  • Не учесть репликацию.
  • Остановиться на числе без выводов.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Около 36 ТБ данных, а с тройной репликацией — порядка 100 ТБ; чаще всего забывают именно репликацию
  • ✗Около 36 ТБ — репликация на объём хранения не влияет
  • ✗Около 100 ГБ — сжатие уменьшает объём на три порядка
  • ✗Около 3,6 ПБ — нужно умножать на число реплик и на число регионов

Что спросят дальше

  • Как срок жизни данных меняет эту оценку?
  • Когда имеет смысл выносить холодные данные в объектное хранилище?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем