49
Анатомия RTB Владимир Климонтович

Rtb

Embed Size (px)

Citation preview

Page 1: Rtb

Анатомия RTB

Владимир Климонтович

Page 2: Rtb

Real time biding

Page 3: Rtb

Old school

Page 4: Rtb

Проблемы• Финальный исход зависит от порядка ad

networks в цепочке • Большой размер цепочки замедляет

загрузку страницы

Page 5: Rtb

RTB! (new school)

Page 6: Rtb

Аукцион второй цены• Выигравший участник платит вторую цену +

delta (1 цент, 1 копейка)• Если участник один, оплачивается

минимальная цена (floor cpm) + delta• Аукцион второй цены стимулирует

участников называть реальную цену• Время ответа: 100ms

Page 7: Rtb

Основные субъекты рынка• SSP (Sell Side Platform) – обслуживает

интересы площадок• DSP (Demand Side Platform) – обслуживает

интересы рекламодателей• DMP (Data Management Platforms/Data

Exchange) – собирает данные о пользователе

Page 8: Rtb

SSP• Обслуживает интересы площадок

размещения (сайтов)• Технологически проще DSP• По сути, одинаковая бизнес-модель у всех

SSP

Page 9: Rtb

DSP• Обслуживает рекламодателей• Сложнее чем SSP• Разные бизнес модели: retargeting, search

retargeting, audience targeting• Разные модели оплаты: pay-per-click, pay-

per-conversion

Page 10: Rtb

Retargeting• Показываем рекламу только тем

пользователям, которые уже были на сайте рекламодателя

• По статистике, вероятность конверсии может вырасти с 0.005% до 0.9%

Page 11: Rtb

Audience targeting• Показываем объявления только

заинтересованной аудитории• Например, показываем рекламу новой

Honda посетителям автомобильных сайтов• Данные можно брать свои, можно покупать

у DMP

Page 12: Rtb

Pay-per-click/pay-per-conversion• Рекламодатель платит DSP только в случае

совершения пользователем целевого действия (клик, конверсия)

• DSP всегда платит SSP за показы• Вывод: DSP должна хорошо уметь

оценивать вероятность клика/конверсии

Page 13: Rtb

Cookie sync

Page 14: Rtb

Cookie sync – проблема• До RTB-эры пользователей

идентифицировали по cookie• Но DSP и SSP “живут в разных доменах”

Page 15: Rtb

Cookie sync – проблема

Page 16: Rtb

Cookie sync – решение (sync pixel)

Page 17: Rtb

Match table

• Порядок: 10-100 млн строк• В идеале хранится на стороне SSP, но не

всегда

SSP User Id DSP User ID

10:22741675 03goMw3rI64

Page 18: Rtb

Виды cookie sync• Инициированный SSP• Инициированный DSP

Page 19: Rtb

Что еще?• До RTB-эры данные о пользователе (частота

показов, посещенные сайты) хранились в cookie

• Cookie sync обеспечивает только синхронизацию ID. Остальное нужно хранить в БД на стороне DSP (NoSQL )

Page 20: Rtb

Под капотом RTB

Page 21: Rtb

Основные проблемы• HTTP-нагрузка (тысячи входящих и

исходящий HTTP-запросов в секунду)• Хранение и анализ логов (10-100Gb в день)• Online хранилища (match table, user table)• Machine learning: алгоритмы предсказания

кликов/конверсий

Page 22: Rtb

HTTP-нагрузка• Средняя SSP: 5 000 входящих, 20 000

исходящих запросов в секунду• Средняя DSP: 10 000 входящих запросов в

секунду

Page 23: Rtb

HTTP-нагрузка, что делать?• Не боятся!• Использовать Java/C++, остерегаться Python

и PHP• Использовать event-driven подход, lock-free

синхронизацию и т.д.

Page 24: Rtb

HTTP-нагрузка: библиотеки• Java: akka, NIO, Netty• C++: libevent, libev

Page 25: Rtb

И последнее: RAM и только RAM!

Page 26: Rtb

Храним в памяти• Все рекламные кампании, таргетинги,

настройки и т.д.• На диск пишем только логи, ничего не

читаем

Page 27: Rtb

Online хранение пользователей

Page 28: Rtb

Что храним?

SSP USER ID SSP INTERNAL USER ID

10:22741675 adfox 03goMw3rI64

USER ID USER DATA

03goMw3rI64 Частота показов по кампаниям и т.д.

Cookie sync table (100 млн записей)

User data (100 млн записей)

Page 29: Rtb

Требование к хранилищу• Ответ на чтение: 10ms (помним, timeout

всего аукциона 100ms)• Хранение всех данных в RAM• Цена! И еще раз цена!• Легкое масштабирование

Page 30: Rtb

Чего требовать не надо• Надежности• 99,99% availability – более, чем достаточно

Page 31: Rtb

Варианты• Терпимые: Mongo, Redis, Cassandra,

Tarantool• Плохие: Hbase• Неясные: MySQL/PostgreSQL

Page 32: Rtb

Offline данные оно же Big Data

Page 33: Rtb

Проблемы• Данных много: 10-100Gb в день• Люди хотят быстро получать ответы на

сложные вопросы: сколько у нас есть показов в Киеве людям в возрасте 20-25 лет, которые до этого искали билеты на самолет в Яндексе

Page 34: Rtb

Философия данных

Page 35: Rtb

Философия данных• Там где идет речь об аналитике, как

правило, скорость ответа важнее точности• Там, где идет речь о деньгах, как правило,

точность важнее скорости

Page 36: Rtb

Как пожертвовать точностью?date domain city impressions (показы)

2013-01-14 12:12 a.com Moscow 1

Считаем показы в Москве за один день:SELECT sum(impressions) WHERE

city=‘Moscow’ and date=‘2013-01-14’

Page 37: Rtb

Sampling

• Выбросим случайны 9 строчек из 10• Для оставшихся строчке умножим

impressions на 10• SELECT sum(impressions) WHERE

city=‘Moscow’ and date=‘2013-01-14’

date domain city impressions (показы)2013-01-14 12:12 a.com Moscow 10

Page 38: Rtb

Sampling – считаем ошибку• Пусть в ответе на запрос мы получили

число N• Тогда оценка ошибки: • При N=1 000 000, ошибка: 0.6%

Page 39: Rtb

Sampling

1,000,000

800,000

600,000

400,000

400,000

100,000

40,000

10,0003,000

1,000400

0.00%

10.00%

20.00%

30.00%

40.00%

50.00%

Статистическая ошибка

Page 40: Rtb

Уникальные пользователи

• SELECT count (distinct user_id) WHERE city=‘Moscow’ and date=‘2013-01-14’

• Как оптимизировать?

date domain city user_id impressions (показы)

2013-01-14 12:12 a.com Moscow 6VdckZtTUkN 1

Page 41: Rtb

Вероятностные алгоритмы• Наглядные: K-minimum values, linear counter• Другие: LogLog counters

Page 42: Rtb

Что использовать?• Apache Hadoop – лучшее из худших

решений• Storm (from Twitter) – потоковый

“MapReduce”. Для некоторых задач заменяет Hadoop

• Колоночные БД

Page 43: Rtb

Колоночные БД

Page 44: Rtb

Колоночные БД• Важно! Hbase, Cassandra – не колоночные• Пример: SELECT sum(impressions) WHERE

city=‘Moscow’ and date=‘2013-01-14’ • Будут прочитаны только файлы для с

данными impressions и city

Page 45: Rtb

Колоночные БД – преимущества• Данные хорошо сжимаются (данные в

колонках однородные)• Скорость агрегирующих запросов в разы

выше• Недостатки: сложность загрузки данных

Page 46: Rtb

Machine learning

Page 47: Rtb

Machine learning• Предсказание вероятности клика• Предсказание вероятности конверсии• Look-alike (предсказание пола, возраста,

поведения пользователя)

Page 48: Rtb

Несколько фактов• На рынке есть хорошие open-source

решения• Лучше плохой алгоритм, чем никакой• Алгоритм важен, но еще важнее параметры

обучений (features) и настройки

Page 49: Rtb

Вопросы?• [email protected]• Skype: klimontovich