Уменьшение количества запросов в api с помощью...

17
УМЕНЬШЕНИЕ КОЛИЧЕСТВА ЗАПРОСОВ В API С ПОМОЩЬЮ PUSH-УВЕДОМЛЕНИЙ Дмитрий Самиров Iskander 23.09.2016

Upload: -

Post on 10-Jan-2017

46 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

УМЕНЬШЕНИЕ КОЛИЧЕСТВА ЗАПРОСОВ В APIС ПОМОЩЬЮ PUSH-УВЕДОМЛЕНИЙ

Дмитрий СамировIskander

23.09.2016

Page 2: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Синхронизация с myTarget

• Запрос к user.json

• Запрос к campaigns.json/banners.json

• Запрос к remarketing_*.json (все ремаркетинговые списки)

• Запрос к remarketings.json

• Запрос к sharing_keys

Page 3: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

PUSH-уведомления. Документация

Page 4: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

PUSH-уведомления. Документация

Page 5: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

PUSH-уведомления. «Секретная» документация

Page 6: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Новая синхронизация с myTarget

• Запрос к user.json

• Запрос к campaigns.json/banners.json

• Запрос к remarketing_*.json (все ремаркетинговые списки)

• Запрос к remarketings.json

• Запрос к sharing_keys

• Подписка на PUSH-уведомления на изменения кампаний и баннеров

Page 7: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Работа с 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

Page 8: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Примеры «простых» 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"}

Page 9: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Примеры «простых» 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"}

Page 10: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Применение PUSH-уведомлений

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

• Полный лог создания/изменения по всем кампаниям и баннерам

• Использование информации из PUSH-уведомлений для отладки проблем с МТ

• Снижение количества GET-запросов к /api/v1/campaigns.json и /api/v1/banners.json практически до нуля (снижение нагрузки на свои сервера и сервера МТ)

Page 11: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

PULL-модель. 1000 аккаунтов MTПри синхронизации каждые 5 минут в час будет генерироваться примерно 24000 GET-запросовв /api/v1/campaigns.json и /api/v1/banners.json.

Page 12: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

PUSH-модель. 1000 аккаунтов MTВсе изменения приходят по мере их возникновения. Ничего лишнего.Количество GET-запросов можно сократить до 2000 в час (если синхронизировать каждый час).

Page 13: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Как меняются кампании

Ставка Статус Таргетинги Общий бюджет Название Дневной бюджет0

5

10

15

20

25

30

Количество изменений, %

Количество изменений, %

Page 14: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

ИтогоПри наличии 1000 активных аккаунтов количество GET-запросов можно сократить примерно в 10 раз.Более 40% изменений – это ставка статус.

Page 15: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Подводные камни

• Доходит не 100% PUSH-уведомлений, а всего лишь (sarcasm) 99.7%. Приходится иногда использовать /api/v1/campaigns.json и /api/v1/banners.json

• Применение изменений из диффа не всегда является тривиальной задачей (например, в случае изменений в regions и user_geo)

• В случае поломки PUSH-уведомлений надо включать «старый» способ синхронизации

• Надо настроить демон, который готов к некоторому количеству входящего трафика PUSH-уведомлений

Page 16: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

ПожеланияМечты

• Более подробная документация

• 100% доставка PUSH-уведомлений

• PUSH-уведомления об изменениях в аудиториях, ремаркетинговых группах, приложениях, списках, …

• PUSH-уведомления об изменениях баланса аккаунта

• Информация об источнике изменения (интерфейс МТ, боты МТ, API)

Page 17: Уменьшение количества запросов в API с помощью настройки PUSH-уведомлений. Дмитрий Самиров (Iskander)

Спасибо за внимание!

https://www.facebook.com/dmitri.samirov

[email protected]