Вас просят спроектировать ленту новостей. С чего вы начнёте оценку и какие вопросы зададите до выбора архитектуры?
- С чего начать system design интервью?
- Какие уточняющие вопросы задать при проектировании ленты?
Сначала вопросы и допущения вслух, потом цепочка от аудитории к QPS, хранению и трафику, и обязательно вывод: где узкое место и что из этого следует для архитектуры.
- Вопросы: аудитория и активность, чтение/запись, свежесть ленты, хранение, география, медиа
- Лента — чтение доминирует (~100:1) — архитектуру определяет чтение
- Медиа определяют объём и трафик — их отдаёт CDN, метаданные малы
А ещё Число без архитектурного следствия не стоит ничего
Подробно
Уточняющие вопросы:
- сколько активных пользователей в день, сколько раз открывают ленту, сколько публикуют;
- соотношение чтения и записи — для ленты легко 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.
Что хотят услышать
- Уточняющие вопросы до решения.
- Расчёт с допущениями вслух.
- Архитектурные выводы из чисел.
Частые ошибки
- Сразу рисовать архитектуру без вопросов.
- Считать числа и не делать из них выводов.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Сразу выбрать базу и нарисовать схему сервисов
- ✗Посчитать точное число пользователей
- ✗Начать с выбора языка и фреймворка, затем оценить, сколько серверов понадобится на старте проекта
- ✓Уточняющие вопросы и допущения, расчёт QPS и хранения, вывод об узком месте
Что спросят дальше
- Fan-out на запись или на чтение и почему?
- Как изменится решение для пользователя с десятью миллионами подписчиков?
Разбор темы
- Оценка нагрузки и ресурсов
Как считать на салфетке: QPS из аудитории, пиковые коэффициенты, объём хранения и трафик, порядки задержек, узкое место и типичные ошибки оценки на интервью.
Связанные вопросы
- Спроектируйте ленту новостей социальной сети. Senior
- Сервисом пользуются 10 млн активных пользователей в сутки, каждый совершает около 20 целевых действий. Какой примерно QPS в пике при коэффициенте пиковости 3? Middle
- Сервис принимает 100 млн сообщений в сутки по 1 КБ. Сколько примерно места потребуется за год и какой множитель забывают чаще всего? Middle
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.