К тренажеру
ВопросMediumsystem-designРеальный собес

Как посчитать поток событий для CTR dashboard

Нужно построить систему, где рекламодатель смотрит CTR кампаний. Дано 200 млрд показов в день и CTR около 1%. Как начать system design с чисел?

Короткий ответ

200 млрд показов в день - это примерно 2.3 млн impression events/sec в среднем, плюс около 23 тыс click events/sec при CTR 1%. Дальше закладываем peak multiplier.

Полный разбор

Старт system design - уточнить требования и посчитать порядок нагрузки. 200 млрд показов в день делим на 86400 секунд: получается около 2.3 млн impressions/sec в среднем. Если CTR около 1%, кликов около 2 млрд в день, то есть примерно 23 тыс clicks/sec.

Средняя нагрузка не равна peak. Для рекламы обычно есть суточная сезонность, кампании, регионы, всплески. Поэтому добавляем peak multiplier, например 3-5x, и отдельно обсуждаем задержку обновления dashboard: 30-60 секунд, минуты или near real-time.

После чисел фиксируем сущности: advertiser, campaign, ad, impression, click, timestamp, region/device, cost. Основной output - временные ряды CTR по campaign_id и bucket времени.

Теория

Capacity planning показывает интервьюеру, что архитектура выбирается не абстрактно, а под нагрузку, latency и granularity метрик.

Типичные ошибки

  • Не перевести events/day в events/sec.
  • Забыть peak multiplier.
  • Не разделить impression и click events.

Как отвечать на собеседовании

  • Всегда начинай с QPS/events/sec и latency requirement.
  • Пиши формулу вслух: 200B / 86400 ~= 2.3M/sec.