SlideShare une entreprise Scribd logo
1  sur  25
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
Как «скачать»
весь myTarget
и не лопнуть
Иванков Михаил
Product Director & CTO
Plarin
APIШНИК
myTarget
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Немного статистики
Ежедневно мы «скачиваем» очень много из myTarget
~650 Gb
Данных в день
(без учета проекций)
>3000
Клиентов myTarget
в “realtime”
~19 млн.
Запросов к АПИ
ежедневно
(без учета проекций)
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
А вот и RPS
RPS – request per second (количество запросов в секунду)
227 RPS*
В декабре 2014 года (полтора года назад) это было всего 29 RPS
3 секунды
Среднее регулярное обновление одного клиента
* При этом мы не нарушаем ни одного правила по RPS в соответствии с /api/v1/throttling.json
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это было
Python и восстание процессоров
Сначала был Python 2.7
Amazon r3.2xlarge
8 vCPU, 61 Gb Memory
50-70 Load Average*
* Число блокирующих процессов в очереди на исполнение в определенный временной
интервал. Блокирующий процесс — это процесс, который ожидает ресурсов для
продолжения работы.
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это было
Потоки рождают новые потоки
Немножко Python
for tm_client in user._tm_clients:
if tm_client.is_blocked or not tm_client.is_active:
continue
if tm_client._id not in self.threads:
if tm_client.is_agency:
target_method = self.agency_cycle
else:
target_method = self.client_cycle
thread = threading.Thread(target=target_method, args=[tm_client._id])
thread.name = tm_client.username
thread.daemon = True
thread.start()
self.threads[tm_client._id] = thread
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это было
С увеличением клиентов это превращалось в бардак
Теория и практика мультипоточного программирования
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это стало
Разум прояснился, наступил мир
Java, Vert.X, ReactiveX, AsyncHttp
MongoDB 3.x, WiredTiger*
*Кстати, в этом году мы перешли на MongoDB Professional с коммерческой поддержкой и улучшили в целом инфраструктуру баз
данных, бэкапы, репликацию и шардинг
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это стало
Всего один сервер!
Результаты Java
Amazon c3.xlarge
4 vCPU, 7,5 Gb Memory
0.75 Load Average
Это всего один сервер из 20, который
обрабатывает 3000 клиентов myTarget
с запасом прочности в 300-500%
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это стало
Графики всегда полезны
Мы очень волновались перед запуском нового апдейтера и попросили коллег из myTarget
последить за результатами
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Как это стало
Кстати, в детстве у Тома Круза были кривые зубы
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Что еще можно улучшить?
Ну, кроме того, что бы переписать все «с нуля»
Использовать новые фильтры myTarget для Banners
В начале декабря появились новые фильтры, позволяющие более точно выбирать баннеры, которые
необходимо обновить.
GET /api/v1/banners/{banner_id}.json
1. Получение баннеров, в которых изменились свойства:
updated__gte=YYYY-MM-DD HH:MM:SS
2. Получение баннеров, в которых изменилась статистика:
last_stats_updated__gte=YY-MM-DD HH:MM:SS
с фильтром fields=id
С полученными ID в GET /api/v1/statistics/{object_type}/{object_id}/{stat_type}/{date_from}-{date_to}.json
Подробнее: https://target.my.com/doc/api/detailed/#resource_banners
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Что еще можно улучшить?
Ну, кроме того, что бы использовать Java
Использовать триггеры в Campaigns
GET /api/v1/campaigns/{campaign_id}.json
Поле last_stats_updated сигнализирует о том, нужно ли опрашивать новую статистику или нет.
P.S. Учтите, это поле полезно при отставшем «чаржинге» myTarget
Подробнее: https://target.my.com/doc/api/detailed/#object_campaignstat
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Что еще можно улучшить?
Для некоторых методов можно настроить Nginx
Если вы делаете очень много запросов и не хотите их контролировать самостоятельно, можно
настроить Nginx как прокси с ограничениями, а так же это даст хорошие возможности для логирования
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
...
server {
...
location /statistics {
proxy_pass https://target.my.com/$request_uri;
limit_req zone=one burst=200;
}
}
}
Подробнее: http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Какие результаты?
Быстрее, выше, сильнее
Все это привело к тому, что 1 клиент myTarget обновляется в
среднем 3 секунды с минимальным количеством запросов (ранее
было 40 секунд)
Полная загрузка данных (full update) по агентскому кабинету с 100
клиентами, в каждом по 100 кампаний (включая всю доступную
статистику за все время, внешний вид баннеров, настройки РК и
т.д.) – от 3 до 5 минут.
Один сервер с 4 vCPU и 8 GB MEM!
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Немного полезного
Сравнительная таблица запросов к /api/v1/statistics/banners/
Запросы полной статистики к /api/v1/statistics/banners/
Количество баннеров
(в 1 запросе)
Почасовая статистика
(скорость ответа в секундах)
Дневная статистика
(скорость ответа в секундах)
Вся 30
дней
14
дней
5
дней
1
день
Вся 30
дней
14
дней
5
дней
1
день
3000 - - - - - - - - 20 18
1500 - - - - - 16 - 16 11 10
750 - - - - 12 9 13 8 6 4
500 - - - - 8 7 8 5 4 4
100 14 14 9 3 2 1 2 1 1 1
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Немного полезного
Сравнительная таблица запросов к /api/v1/statistics/campaigns/
Запросы полной статистики к /api/v1/statistics/campaigns/
Количество кампаний
(в 1 запросе)
Почасовая статистика
(скорость ответа в секундах)
Дневная статистика
(скорость ответа в секундах)
Вся 30
дней
14
дней
5
дней
1
день
Вся 30
дней
14
дней
5
дней
1
день
150 - - - 10 4 3 2 2 1 1
75 19 20 13 5 2 1 1 1 1 1
50 14 14 9 4 2 1 1 1 1 1
25 7 7 5 2 1 1 1 1 1 1
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Что бы хотелось по улучшениям в API
Лучшее не всегда враг хорошего
1. Добавить в кампании такие же фильтры, как и в баннеры
Сократит объем данных и нагрузку
2. Push статистики сразу же, после ее изменения
Идеальный случай, количество запросов упадет к нулю
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Работаем с проекциями
Теперь это отдельный сервис внутри Plarin
~84 GB
Данных в день
>15 000
Кампаний, которым
требуются
актуальные цены
~1 150 000
Запросов к АПИ
ежедневно
(примерно 13 кампаний
в секунду)
При этом около 90% запросов проекций только для получения оптимальной цены.
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Работаем с проекциями
Сервис отселили отдельно
Раньше это было частью основного апдейтера, но часто обновления блокировали таймауты по 15 минут,
ошибки 500 и т.д.
Мы этот сервис вынесли в отдельный.
Java, AsyncHttp
MongoDB 3.x, WiredTiger
Amazon c3.xlarge
4 vCPU, 7,5 Gb Memory
0.105 Load Average
Запас прочности – 1000-2000%
15 000 кампаний по 13 в секунду это 20
минут на полный цикл.
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Работаем с проекциями
И тут математика
Исходные 84 Gb в день на самом деле оказывается больше, так как ответы приходят
запакованными в gzip, в среднем по 40кб.
Каждый ответ распаковывается примерно в 400кб и содержит в себе > 2000 точек.
Итого: 6 Gb хранения на 15 000 кампаний.
Что мы делаем:
1) Урезаем количество точек, оставляя из повторяющихся охватов только один с
минимальной ценой
2) Отдельно вычисляем и храним минимальную и максимальную цены, а так же
оптимальную цену для каждой рекламной кампании
В итоге в каждой проекции остается 12 кб, и 51 точка вместо 2 000+
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Что бы хотелось по улучшениям в API
Лучшее не всегда враг хорошего
1. Ограничить количество точек в ответе, оставив по 1 точке на каждый % охвата
2. Возвращать верные лимиты для запрашиваемого пакета, не менее минимальной цены
и не более максимальной цены
3. Сделать доступным в запросах передачу только ID существующей кампании, без
указания всего таргетинга
4. Расширить метод, когда для нескольких кампаний можно получить только оптимальную
цену одним запросом, а лучше вынести оптимальную цену в объект Campaign (90%
запросов к проекциям только для получения оптимальной цены)
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Проблемные места
Лучшее не всегда враг хорошего
User.json
Часто забираем, другой возможности нет определить остатки бюджетов на аккаунте и статус клиента
(активный, заблокированный)
Конверсии
Сейчас не забираем, и по прежнему не можем определить у какой кампании есть конверсии, а у какой
нет. При добавления запроса на все кампании в день прибавится 3-5 млн запросов.
В самом ответе конверсий не хватает ID целей т.к. они могут поменяться, не к чему привязаться.
Ремаркетинг
Часто забираем, т.к. не можем определить когда любой из списков изменился, а когда нет (6 списков,
16 запросов в секунду, более 8 млн запросов в день) - 42% от всех запросов.
Мы делаем это в цикле группой по 10 клиентов и обновление всех клиентов за один цикл – 10 минут.
99.9% ответов ремаркетинг списков без изменений по сравнению с предыдущим.
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Решение
Лучшее не всегда враг хорошего
Новый метод - updated_objects, который решит все проблемы
Может содержать в себе информацию о времени последнего изменения:
1. Свойств кампаний или статистики кампаний
2. Свойств баннеров или статистики баннеров
3. Списков ремаркетинг групп
4. Наличие конверсий в РК
Это позволит фактически дергать только один метод и существенно сократить запросы к другим
методам, совершая их только тогда, когда это действительно актуально.
P.S. Ну или, хотя бы, новый метод для ремаркетинг групп и вынос количества конверсий в Campaigns.
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
APIШНИК
Немного статистики в сравнении с прошлым
Рост показателей
4,400
11,000
4,000
15,000
2014 ДЕКАБРЬ 2016 МАРТ
АКТИВНЫЕ КАМПАНИИ
Остановленные Запущенные
25,000
90,000
2015 ИЮЛЬ 2016 МАРТ
POSTBACK КОНВЕРСИИ
Всего конверсий в день
Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016
Спасибо за внимание
Иванков Михаил
Product Director & CTO, Plarin
Plarin
Единая система управления таргетированной рекламой
ВКонтакте и myTarget
Все презентации Plarin в Facebook
https://www.facebook.com/plarin.net

Contenu connexe

Tendances

Наука в таргетированной рекламе
Наука в таргетированной рекламеНаука в таргетированной рекламе
Наука в таргетированной рекламеMihail Ivankov
 
Как устроен рынок CPI в России
Как устроен рынок CPI в РоссииКак устроен рынок CPI в России
Как устроен рынок CPI в РоссииKirill Makarov
 
Старая добрая математика в современном интернет-маркетинге
Старая добрая математика в современном интернет-маркетингеСтарая добрая математика в современном интернет-маркетинге
Старая добрая математика в современном интернет-маркетингеDmitry Shkolnikov
 
Как снизить Cost-per-Install в MyTarget на практике
Как снизить Cost-per-Install в MyTarget на практикеКак снизить Cost-per-Install в MyTarget на практике
Как снизить Cost-per-Install в MyTarget на практикеKirill Makarov
 
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...Дмитрий Шахов
 
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламы
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламыМаксим Уваров. Введение в планирование и контроль KPI контекстной рекламы
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламыOctopus Events
 
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...Octopus Events
 
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы Octopus Events
 
Константин Найчуков. Управление маркетингом на основе точных данных
Константин Найчуков. Управление маркетингом на основе точных данныхКонстантин Найчуков. Управление маркетингом на основе точных данных
Константин Найчуков. Управление маркетингом на основе точных данныхДмитрий Шахов
 
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"Осенняя Сессия по контекстной рекламе
 
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...eLama.ru
 
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.Эффективная контекстная реклама. Инструменты, аналитика, кейсы.
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.Netpeak
 
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)Автоматизация контекстной рекламы в инструментах и кейсах (eLama)
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)NetCampus
 
Мобильная реклама в MyTarget: от настройки до выхода на KPI.
Мобильная реклама в MyTarget: от настройки до выхода на KPI. Мобильная реклама в MyTarget: от настройки до выхода на KPI.
Мобильная реклама в MyTarget: от настройки до выхода на KPI. Hiconversion
 
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...Alisa Vasilkova
 

Tendances (20)

Наука в таргетированной рекламе
Наука в таргетированной рекламеНаука в таргетированной рекламе
Наука в таргетированной рекламе
 
Как устроен рынок CPI в России
Как устроен рынок CPI в РоссииКак устроен рынок CPI в России
Как устроен рынок CPI в России
 
Старая добрая математика в современном интернет-маркетинге
Старая добрая математика в современном интернет-маркетингеСтарая добрая математика в современном интернет-маркетинге
Старая добрая математика в современном интернет-маркетинге
 
Как снизить Cost-per-Install в MyTarget на практике
Как снизить Cost-per-Install в MyTarget на практикеКак снизить Cost-per-Install в MyTarget на практике
Как снизить Cost-per-Install в MyTarget на практике
 
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...
Найчуков Константин. Как бороться с недобросовестной конкуренцией в контекстн...
 
Михаил Иванков (Plarin) - "Влияние различных факторов на ставку в кампании"
Михаил Иванков (Plarin) - "Влияние различных факторов на ставку в кампании"Михаил Иванков (Plarin) - "Влияние различных факторов на ставку в кампании"
Михаил Иванков (Plarin) - "Влияние различных факторов на ставку в кампании"
 
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламы
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламыМаксим Уваров. Введение в планирование и контроль KPI контекстной рекламы
Максим Уваров. Введение в планирование и контроль KPI контекстной рекламы
 
Как устроен CPA оффер QUELLE.ru
Как устроен CPA оффер QUELLE.ru Как устроен CPA оффер QUELLE.ru
Как устроен CPA оффер QUELLE.ru
 
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...
Константин Найчуков. Как специалисту по платному трафику выжить в мире тоталь...
 
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы
Дмитрий Тумайкин. Продвинутые метрики эффективности контекстной рекламы
 
Ольга Суворова и Анна Маслова (nebo.ru) - "Как убить 5 рабочих мест за 2 меся...
Ольга Суворова и Анна Маслова (nebo.ru) - "Как убить 5 рабочих мест за 2 меся...Ольга Суворова и Анна Маслова (nebo.ru) - "Как убить 5 рабочих мест за 2 меся...
Ольга Суворова и Анна Маслова (nebo.ru) - "Как убить 5 рабочих мест за 2 меся...
 
Константин Найчуков. Управление маркетингом на основе точных данных
Константин Найчуков. Управление маркетингом на основе точных данныхКонстантин Найчуков. Управление маркетингом на основе точных данных
Константин Найчуков. Управление маркетингом на основе точных данных
 
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"
Евгений Курышев (Ostrovok.ru) - "Глубокие закопки в мультиканальную атрибуцию"
 
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...
Вебинар «Анализируем рекламу и повышаем ее эффективность с помощью Google Ana...
 
Эдгард Гомез (Starcom Mediavest Group) - "Другая сторона Google Tag Manager"
Эдгард Гомез (Starcom Mediavest Group) - "Другая сторона Google Tag Manager"Эдгард Гомез (Starcom Mediavest Group) - "Другая сторона Google Tag Manager"
Эдгард Гомез (Starcom Mediavest Group) - "Другая сторона Google Tag Manager"
 
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.Эффективная контекстная реклама. Инструменты, аналитика, кейсы.
Эффективная контекстная реклама. Инструменты, аналитика, кейсы.
 
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)Автоматизация контекстной рекламы в инструментах и кейсах (eLama)
Автоматизация контекстной рекламы в инструментах и кейсах (eLama)
 
Мобильная реклама в MyTarget: от настройки до выхода на KPI.
Мобильная реклама в MyTarget: от настройки до выхода на KPI. Мобильная реклама в MyTarget: от настройки до выхода на KPI.
Мобильная реклама в MyTarget: от настройки до выхода на KPI.
 
Олег Рудаков (AdLabs) - "Моделирование атрибуции на коленке"
Олег Рудаков (AdLabs) - "Моделирование атрибуции на коленке"Олег Рудаков (AdLabs) - "Моделирование атрибуции на коленке"
Олег Рудаков (AdLabs) - "Моделирование атрибуции на коленке"
 
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...
«Раскрываем секреты таргетинга. Правила создания успешной рекламной кампании»...
 

En vedette

Mail.ru АПИшник - Разработка высоконагруженного клиента для API
Mail.ru АПИшник - Разработка высоконагруженного клиента для APIMail.ru АПИшник - Разработка высоконагруженного клиента для API
Mail.ru АПИшник - Разработка высоконагруженного клиента для APIMihail Ivankov
 
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем Мире
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем МиреТаргет@Mail.ru – контекстная реклама в Одноклассниках и Моем Мире
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем МиреДиджитал агентство "Мир Рекламы"
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 

En vedette (11)

реклама в My target
реклама в My targetреклама в My target
реклама в My target
 
Mail.ru АПИшник - Разработка высоконагруженного клиента для API
Mail.ru АПИшник - Разработка высоконагруженного клиента для APIMail.ru АПИшник - Разработка высоконагруженного клиента для API
Mail.ru АПИшник - Разработка высоконагруженного клиента для API
 
Установка GTM
Установка GTMУстановка GTM
Установка GTM
 
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем Мире
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем МиреТаргет@Mail.ru – контекстная реклама в Одноклассниках и Моем Мире
Таргет@Mail.ru – контекстная реклама в Одноклассниках и Моем Мире
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

Similaire à Plarin - АПИшник myTarget - Как "скачать" весь myTarget и не лопнуть

Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)
Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)
Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)Егор Тютюников
 
Продвижение интернет-магазина // eTargeting
Продвижение интернет-магазина // eTargetingПродвижение интернет-магазина // eTargeting
Продвижение интернет-магазина // eTargetingeTargeting
 
Влияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиВлияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиJulia Yakovleva
 
Влияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиВлияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиМедведев Маркетинг
 
Cpa ex общая клиентская презентация_04072017
Cpa ex общая клиентская презентация_04072017Cpa ex общая клиентская презентация_04072017
Cpa ex общая клиентская презентация_04072017CPAex
 
Комплексный интернет-маркетинг
Комплексный интернет-маркетингКомплексный интернет-маркетинг
Комплексный интернет-маркетингАндрей Брагин
 
Perfomance-маркетинг мобильных приложений
Perfomance-маркетинг мобильных приложенийPerfomance-маркетинг мобильных приложений
Perfomance-маркетинг мобильных приложенийNetpeak
 
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для Raketa
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для RaketaАндрей Осипов. Олег Любарец. О том, как построить систему аналитики для Raketa
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для RaketaOctopus Events
 
Динамический ремаркетинг в myTarget
Динамический ремаркетинг в myTargetДинамический ремаркетинг в myTarget
Динамический ремаркетинг в myTargetАнна Караулова
 
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...i-Media рекламное агентство
 
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуции
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуцииДмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуции
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуцииOctopus Events
 
Монетизация приложений при помощи рекламы Яндекса
Монетизация приложений при помощи рекламы Яндекса Монетизация приложений при помощи рекламы Яндекса
Монетизация приложений при помощи рекламы Яндекса Dmitry Konstantinov
 
Что такое контекстная реклама и как она работает?
Что такое контекстная реклама и как она работает?Что такое контекстная реклама и как она работает?
Что такое контекстная реклама и как она работает?Netpeak
 
Автоматизация рекламы. Взгляд в будущее!
Автоматизация рекламы. Взгляд в будущее!Автоматизация рекламы. Взгляд в будущее!
Автоматизация рекламы. Взгляд в будущее!Александр Алаев
 
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...Daniil Zabolotny
 
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"ArrowMedia
 

Similaire à Plarin - АПИшник myTarget - Как "скачать" весь myTarget и не лопнуть (20)

Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)
Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)
Как «скачать» весь myTarget и не лопнуть. Михаил Иванков (Plarin)
 
AdvertOne
AdvertOneAdvertOne
AdvertOne
 
Продвижение интернет-магазина // eTargeting
Продвижение интернет-магазина // eTargetingПродвижение интернет-магазина // eTargeting
Продвижение интернет-магазина // eTargeting
 
Влияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиВлияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органики
 
Влияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органикиВлияние контекстной рекламы на трафик из органики
Влияние контекстной рекламы на трафик из органики
 
Cpa ex общая клиентская презентация_04072017
Cpa ex общая клиентская презентация_04072017Cpa ex общая клиентская презентация_04072017
Cpa ex общая клиентская презентация_04072017
 
"Влияние контекстной рекламы на трафик из органической выдачи". Вебинар WebPr...
"Влияние контекстной рекламы на трафик из органической выдачи". Вебинар WebPr..."Влияние контекстной рекламы на трафик из органической выдачи". Вебинар WebPr...
"Влияние контекстной рекламы на трафик из органической выдачи". Вебинар WebPr...
 
Комплексный интернет-маркетинг
Комплексный интернет-маркетингКомплексный интернет-маркетинг
Комплексный интернет-маркетинг
 
Registratura.ru
Registratura.ruRegistratura.ru
Registratura.ru
 
Perfomance-маркетинг мобильных приложений
Perfomance-маркетинг мобильных приложенийPerfomance-маркетинг мобильных приложений
Perfomance-маркетинг мобильных приложений
 
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для Raketa
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для RaketaАндрей Осипов. Олег Любарец. О том, как построить систему аналитики для Raketa
Андрей Осипов. Олег Любарец. О том, как построить систему аналитики для Raketa
 
Динамический ремаркетинг в myTarget
Динамический ремаркетинг в myTargetДинамический ремаркетинг в myTarget
Динамический ремаркетинг в myTarget
 
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...
Динамический ремаркетинг в My target: практическое применение, Aнна Караулова...
 
Продвижение записей ВКонтакте
Продвижение записей ВКонтактеПродвижение записей ВКонтакте
Продвижение записей ВКонтакте
 
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуции
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуцииДмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуции
Дмитрий Осиюк. Инкрементальный анализ вместо перебора моделей атрибуции
 
Монетизация приложений при помощи рекламы Яндекса
Монетизация приложений при помощи рекламы Яндекса Монетизация приложений при помощи рекламы Яндекса
Монетизация приложений при помощи рекламы Яндекса
 
Что такое контекстная реклама и как она работает?
Что такое контекстная реклама и как она работает?Что такое контекстная реклама и как она работает?
Что такое контекстная реклама и как она работает?
 
Автоматизация рекламы. Взгляд в будущее!
Автоматизация рекламы. Взгляд в будущее!Автоматизация рекламы. Взгляд в будущее!
Автоматизация рекламы. Взгляд в будущее!
 
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...
Ретаргетинг и суперклик на тизерном трафике. Примеры и анализ размещений за а...
 
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
 

Plarin - АПИшник myTarget - Как "скачать" весь myTarget и не лопнуть

  • 1. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 Как «скачать» весь myTarget и не лопнуть Иванков Михаил Product Director & CTO Plarin APIШНИК myTarget
  • 2. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Немного статистики Ежедневно мы «скачиваем» очень много из myTarget ~650 Gb Данных в день (без учета проекций) >3000 Клиентов myTarget в “realtime” ~19 млн. Запросов к АПИ ежедневно (без учета проекций)
  • 3. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК А вот и RPS RPS – request per second (количество запросов в секунду) 227 RPS* В декабре 2014 года (полтора года назад) это было всего 29 RPS 3 секунды Среднее регулярное обновление одного клиента * При этом мы не нарушаем ни одного правила по RPS в соответствии с /api/v1/throttling.json
  • 4. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это было Python и восстание процессоров Сначала был Python 2.7 Amazon r3.2xlarge 8 vCPU, 61 Gb Memory 50-70 Load Average* * Число блокирующих процессов в очереди на исполнение в определенный временной интервал. Блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы.
  • 5. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это было Потоки рождают новые потоки Немножко Python for tm_client in user._tm_clients: if tm_client.is_blocked or not tm_client.is_active: continue if tm_client._id not in self.threads: if tm_client.is_agency: target_method = self.agency_cycle else: target_method = self.client_cycle thread = threading.Thread(target=target_method, args=[tm_client._id]) thread.name = tm_client.username thread.daemon = True thread.start() self.threads[tm_client._id] = thread
  • 6. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это было С увеличением клиентов это превращалось в бардак Теория и практика мультипоточного программирования
  • 7. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это стало Разум прояснился, наступил мир Java, Vert.X, ReactiveX, AsyncHttp MongoDB 3.x, WiredTiger* *Кстати, в этом году мы перешли на MongoDB Professional с коммерческой поддержкой и улучшили в целом инфраструктуру баз данных, бэкапы, репликацию и шардинг
  • 8. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это стало Всего один сервер! Результаты Java Amazon c3.xlarge 4 vCPU, 7,5 Gb Memory 0.75 Load Average Это всего один сервер из 20, который обрабатывает 3000 клиентов myTarget с запасом прочности в 300-500%
  • 9. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это стало Графики всегда полезны Мы очень волновались перед запуском нового апдейтера и попросили коллег из myTarget последить за результатами
  • 10. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Как это стало Кстати, в детстве у Тома Круза были кривые зубы
  • 11. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Что еще можно улучшить? Ну, кроме того, что бы переписать все «с нуля» Использовать новые фильтры myTarget для Banners В начале декабря появились новые фильтры, позволяющие более точно выбирать баннеры, которые необходимо обновить. GET /api/v1/banners/{banner_id}.json 1. Получение баннеров, в которых изменились свойства: updated__gte=YYYY-MM-DD HH:MM:SS 2. Получение баннеров, в которых изменилась статистика: last_stats_updated__gte=YY-MM-DD HH:MM:SS с фильтром fields=id С полученными ID в GET /api/v1/statistics/{object_type}/{object_id}/{stat_type}/{date_from}-{date_to}.json Подробнее: https://target.my.com/doc/api/detailed/#resource_banners
  • 12. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Что еще можно улучшить? Ну, кроме того, что бы использовать Java Использовать триггеры в Campaigns GET /api/v1/campaigns/{campaign_id}.json Поле last_stats_updated сигнализирует о том, нужно ли опрашивать новую статистику или нет. P.S. Учтите, это поле полезно при отставшем «чаржинге» myTarget Подробнее: https://target.my.com/doc/api/detailed/#object_campaignstat
  • 13. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Что еще можно улучшить? Для некоторых методов можно настроить Nginx Если вы делаете очень много запросов и не хотите их контролировать самостоятельно, можно настроить Nginx как прокси с ограничениями, а так же это даст хорошие возможности для логирования http { limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s; ... server { ... location /statistics { proxy_pass https://target.my.com/$request_uri; limit_req zone=one burst=200; } } } Подробнее: http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
  • 14. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Какие результаты? Быстрее, выше, сильнее Все это привело к тому, что 1 клиент myTarget обновляется в среднем 3 секунды с минимальным количеством запросов (ранее было 40 секунд) Полная загрузка данных (full update) по агентскому кабинету с 100 клиентами, в каждом по 100 кампаний (включая всю доступную статистику за все время, внешний вид баннеров, настройки РК и т.д.) – от 3 до 5 минут. Один сервер с 4 vCPU и 8 GB MEM!
  • 15. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Немного полезного Сравнительная таблица запросов к /api/v1/statistics/banners/ Запросы полной статистики к /api/v1/statistics/banners/ Количество баннеров (в 1 запросе) Почасовая статистика (скорость ответа в секундах) Дневная статистика (скорость ответа в секундах) Вся 30 дней 14 дней 5 дней 1 день Вся 30 дней 14 дней 5 дней 1 день 3000 - - - - - - - - 20 18 1500 - - - - - 16 - 16 11 10 750 - - - - 12 9 13 8 6 4 500 - - - - 8 7 8 5 4 4 100 14 14 9 3 2 1 2 1 1 1
  • 16. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Немного полезного Сравнительная таблица запросов к /api/v1/statistics/campaigns/ Запросы полной статистики к /api/v1/statistics/campaigns/ Количество кампаний (в 1 запросе) Почасовая статистика (скорость ответа в секундах) Дневная статистика (скорость ответа в секундах) Вся 30 дней 14 дней 5 дней 1 день Вся 30 дней 14 дней 5 дней 1 день 150 - - - 10 4 3 2 2 1 1 75 19 20 13 5 2 1 1 1 1 1 50 14 14 9 4 2 1 1 1 1 1 25 7 7 5 2 1 1 1 1 1 1
  • 17. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Что бы хотелось по улучшениям в API Лучшее не всегда враг хорошего 1. Добавить в кампании такие же фильтры, как и в баннеры Сократит объем данных и нагрузку 2. Push статистики сразу же, после ее изменения Идеальный случай, количество запросов упадет к нулю
  • 18. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Работаем с проекциями Теперь это отдельный сервис внутри Plarin ~84 GB Данных в день >15 000 Кампаний, которым требуются актуальные цены ~1 150 000 Запросов к АПИ ежедневно (примерно 13 кампаний в секунду) При этом около 90% запросов проекций только для получения оптимальной цены.
  • 19. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Работаем с проекциями Сервис отселили отдельно Раньше это было частью основного апдейтера, но часто обновления блокировали таймауты по 15 минут, ошибки 500 и т.д. Мы этот сервис вынесли в отдельный. Java, AsyncHttp MongoDB 3.x, WiredTiger Amazon c3.xlarge 4 vCPU, 7,5 Gb Memory 0.105 Load Average Запас прочности – 1000-2000% 15 000 кампаний по 13 в секунду это 20 минут на полный цикл.
  • 20. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Работаем с проекциями И тут математика Исходные 84 Gb в день на самом деле оказывается больше, так как ответы приходят запакованными в gzip, в среднем по 40кб. Каждый ответ распаковывается примерно в 400кб и содержит в себе > 2000 точек. Итого: 6 Gb хранения на 15 000 кампаний. Что мы делаем: 1) Урезаем количество точек, оставляя из повторяющихся охватов только один с минимальной ценой 2) Отдельно вычисляем и храним минимальную и максимальную цены, а так же оптимальную цену для каждой рекламной кампании В итоге в каждой проекции остается 12 кб, и 51 точка вместо 2 000+
  • 21. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Что бы хотелось по улучшениям в API Лучшее не всегда враг хорошего 1. Ограничить количество точек в ответе, оставив по 1 точке на каждый % охвата 2. Возвращать верные лимиты для запрашиваемого пакета, не менее минимальной цены и не более максимальной цены 3. Сделать доступным в запросах передачу только ID существующей кампании, без указания всего таргетинга 4. Расширить метод, когда для нескольких кампаний можно получить только оптимальную цену одним запросом, а лучше вынести оптимальную цену в объект Campaign (90% запросов к проекциям только для получения оптимальной цены)
  • 22. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Проблемные места Лучшее не всегда враг хорошего User.json Часто забираем, другой возможности нет определить остатки бюджетов на аккаунте и статус клиента (активный, заблокированный) Конверсии Сейчас не забираем, и по прежнему не можем определить у какой кампании есть конверсии, а у какой нет. При добавления запроса на все кампании в день прибавится 3-5 млн запросов. В самом ответе конверсий не хватает ID целей т.к. они могут поменяться, не к чему привязаться. Ремаркетинг Часто забираем, т.к. не можем определить когда любой из списков изменился, а когда нет (6 списков, 16 запросов в секунду, более 8 млн запросов в день) - 42% от всех запросов. Мы делаем это в цикле группой по 10 клиентов и обновление всех клиентов за один цикл – 10 минут. 99.9% ответов ремаркетинг списков без изменений по сравнению с предыдущим.
  • 23. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Решение Лучшее не всегда враг хорошего Новый метод - updated_objects, который решит все проблемы Может содержать в себе информацию о времени последнего изменения: 1. Свойств кампаний или статистики кампаний 2. Свойств баннеров или статистики баннеров 3. Списков ремаркетинг групп 4. Наличие конверсий в РК Это позволит фактически дергать только один метод и существенно сократить запросы к другим методам, совершая их только тогда, когда это действительно актуально. P.S. Ну или, хотя бы, новый метод для ремаркетинг групп и вынос количества конверсий в Campaigns.
  • 24. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 APIШНИК Немного статистики в сравнении с прошлым Рост показателей 4,400 11,000 4,000 15,000 2014 ДЕКАБРЬ 2016 МАРТ АКТИВНЫЕ КАМПАНИИ Остановленные Запущенные 25,000 90,000 2015 ИЮЛЬ 2016 МАРТ POSTBACK КОНВЕРСИИ Всего конверсий в день
  • 25. Plarin – единая система управления рекламой ВКонтакте и myTarget Михаил Иванков, 2016 Спасибо за внимание Иванков Михаил Product Director & CTO, Plarin Plarin Единая система управления таргетированной рекламой ВКонтакте и myTarget Все презентации Plarin в Facebook https://www.facebook.com/plarin.net