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

Вас просят спроектировать ленту новостей. С чего вы начнёте оценку и какие вопросы зададите до выбора архитектуры?

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

Сначала вопросы и допущения вслух, потом цепочка от аудитории к QPS, хранению и трафику, и обязательно вывод: где узкое место и что из этого следует для архитектуры.

  • Вопросы: аудитория и активность, чтение/запись, свежесть ленты, хранение, география, медиа
  • Лента — чтение доминирует (~100:1) — архитектуру определяет чтение
  • Медиа определяют объём и трафик — их отдаёт CDN, метаданные малы

А ещё Число без архитектурного следствия не стоит ничего

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

Подробно

Уточняющие вопросы:

  • сколько активных пользователей в день, сколько раз открывают ленту, сколько публикуют;
  • соотношение чтения и записи — для ленты легко 100:1;
  • сколько подписок в среднем и максимум (знаменитости с миллионами подписчиков);
  • насколько свежей должна быть лента: секунды или минуты задержки допустимы;
  • хронологическая или ранжированная;
  • сколько хранить, где пользователи, есть ли фото и видео.

Цепочка расчёта (вслух, с округлением): 100 млн DAU × 10 открытий = 10⁹ чтений в сутки ≈ 10 000 QPS, пик ×3 ≈ 30 000; публикаций 10⁷ в сутки ≈ 100 QPS. Хранение постов: 10⁷ × 1 КБ = 10 ГБ в сутки (× репликация). Трафик: 30 000 × 20 КБ = 600 МБ/с метаданных; медиа — на порядки больше, их отдаёт CDN.

Выводы:

  • чтение доминирует — нужна предвычисленная лента (fan-out on write) в кэше и денормализованная модель чтения;
  • знаменитости ломают fan-out on write — гибрид;
  • хранение растёт — партиционирование по времени, холодное хранилище для старых постов;
  • медиа — объектное хранилище и CDN.

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

  • Уточняющие вопросы до решения.
  • Расчёт с допущениями вслух.
  • Архитектурные выводы из чисел.

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

  • Сразу рисовать архитектуру без вопросов.
  • Считать числа и не делать из них выводов.

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

  • Fan-out на запись или на чтение и почему?
  • Как изменится решение для пользователя с десятью миллионами подписчиков?

Разбор темы

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

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

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

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

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