Уменьшение количества запросов в api с помощью...
TRANSCRIPT
УМЕНЬШЕНИЕ КОЛИЧЕСТВА ЗАПРОСОВ В APIС ПОМОЩЬЮ PUSH-УВЕДОМЛЕНИЙ
Дмитрий СамировIskander
23.09.2016
Синхронизация с myTarget
• Запрос к user.json
• Запрос к campaigns.json/banners.json
• Запрос к remarketing_*.json (все ремаркетинговые списки)
• Запрос к remarketings.json
• Запрос к sharing_keys
PUSH-уведомления. Документация
PUSH-уведомления. Документация
PUSH-уведомления. «Секретная» документация
Новая синхронизация с myTarget
• Запрос к user.json
• Запрос к campaigns.json/banners.json
• Запрос к remarketing_*.json (все ремаркетинговые списки)
• Запрос к remarketings.json
• Запрос к sharing_keys
• Подписка на PUSH-уведомления на изменения кампаний и баннеров
Работа с PUSH-подписками
Создание
POST /api/v2/subscriptions.json
BODY EXAMPLE: {"callback_url": "https://mysuperhost.com/callback", "resource": "CAMPAIGN"}BODY EXAMPLE: {"callback_url": "https://mysuperhost.com/callback", "resource": "BANNER"}
Текущие подписки
GET /api/v2/subscriptions.json
RESPONSE EXAMPLE: [{"resource": "BANNER", "resource_id": null, "created": "2016-09-20 13:41:34", "user": {"agency": null, "id": 1111111}, "callback_url": "https://mysuperhost.com/callback", "id": 11111}, {"resource": "CAMPAIGN", "resource_id": null, "created": "2016-09-20 13:41:35", "user": {"agency": null, "id": 2222222}, "callback_url": " https://mysuperhost.com/callback ", "id": 22222}]
Удаление подписки
DELETE /api/v2/subscriptions/ID.json
Примеры «простых» PUSH-уведомлений
Выбор города «Санкт-Петербург»
{ "resource":"CAMPAIGN", "created":"2016-09-20 19:43:40.848699", "resource_id":6752541, "diff":{ "updated":{"---":"2016-09-20 19:43:19","+++":"2016-09-20 19:43:40"}, "last_updated":{"---":"2016-09-20 19:43:19","+++":"2016-09-20 19:43:40"}, "targetings":{ "user_geo":{"107":{"+++":["\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433"]}} } }, "id":"fd651bf142cc4195b0f723ddd8101509"}
Примеры «простых» PUSH-уведомлений
Остановка кампании
{ "resource":"CAMPAIGN", "created":"2016-09-20 19:46:26.028813", "resource_id":6752541, "diff":{ "status":{"---":"active","+++":"blocked"}, "updated":{"---":"2016-09-20 19:43:40","+++":"2016-09-20 19:46:26"}, "last_updated":{"---":"2016-09-20 19:43:40","+++":"2016-09-20 19:46:26"} }, "id":"a41b689cdbb2471295e23b28482a6cca"}
Применение PUSH-уведомлений
• Получение подробной информации об изменениях в кампаниях и баннерах в течение нескольких секунд (например, можно настроить мгновенные оповещения о результатах модерации)
• Полный лог создания/изменения по всем кампаниям и баннерам
• Использование информации из PUSH-уведомлений для отладки проблем с МТ
• Снижение количества GET-запросов к /api/v1/campaigns.json и /api/v1/banners.json практически до нуля (снижение нагрузки на свои сервера и сервера МТ)
PULL-модель. 1000 аккаунтов MTПри синхронизации каждые 5 минут в час будет генерироваться примерно 24000 GET-запросовв /api/v1/campaigns.json и /api/v1/banners.json.
PUSH-модель. 1000 аккаунтов MTВсе изменения приходят по мере их возникновения. Ничего лишнего.Количество GET-запросов можно сократить до 2000 в час (если синхронизировать каждый час).
Как меняются кампании
Ставка Статус Таргетинги Общий бюджет Название Дневной бюджет0
5
10
15
20
25
30
Количество изменений, %
Количество изменений, %
ИтогоПри наличии 1000 активных аккаунтов количество GET-запросов можно сократить примерно в 10 раз.Более 40% изменений – это ставка статус.
Подводные камни
• Доходит не 100% PUSH-уведомлений, а всего лишь (sarcasm) 99.7%. Приходится иногда использовать /api/v1/campaigns.json и /api/v1/banners.json
• Применение изменений из диффа не всегда является тривиальной задачей (например, в случае изменений в regions и user_geo)
• В случае поломки PUSH-уведомлений надо включать «старый» способ синхронизации
• Надо настроить демон, который готов к некоторому количеству входящего трафика PUSH-уведомлений
ПожеланияМечты
• Более подробная документация
• 100% доставка PUSH-уведомлений
• PUSH-уведомления об изменениях в аудиториях, ремаркетинговых группах, приложениях, списках, …
• PUSH-уведомления об изменениях баланса аккаунта
• Информация об источнике изменения (интерфейс МТ, боты МТ, API)