Разработка и внедрение php sdk mytarget. Василь Кулаков (dsl)

20
Василь Кулаков / SocialKey Ads РАЗРАБОТКА И ВНЕДРЕНИЕ PHP SDK myTarget

Upload: -

Post on 10-Jan-2017

85 views

Category:

Internet


7 download

TRANSCRIPT

Василь Кулаков / SocialKey Ads

РАЗРАБОТКА И ВНЕДРЕНИЕ PHP SDK myTarget

SocialKey Ads

• Централизуем управление таргетированной рекламой в разных соцсетях;

• предоставляем собственные сегменты, собранные аналитикой BigData;

• работаем с MyTarget как агентство;• тысячи новых активных баннеров в месяц.

Инструменты курильщика

• Примитивные примеры по работе с API из документации;

• небольшие библиотеки, не отвечающие требованиям сертификации;

• самописная логика на голом curl.

Что хотелось получить

• Полноценную объектную модель:– ресурсов с вложенной структурой зависимостей;– логики работы с API;

• авторизацию «из коробки»:– 4 способа авторизации;– sudo is deprecated;– правильный подход – получение клиентских

токенов;– но есть нюансы: лимиты на получение и обновление

токенов.

Что хотелось получить

• Удобную работу с лимитами API:– разные лимиты для разных клиентов;– throttling.json vs HTTP-headers.

• обработку ошибок:– 4хх в виде понятных и информативных

исключений.

Что хотелось получить

• Учет «особенностей»:– восприятие html-ответа как “нормального”

сообщения об ошибке;– 429 код – не обязательно говорит о превышении

лимита;– две версии API;

• работа с пакетными запросами;• логирование;• расширяемость, универсальность.

Архитектура SDK

• Основной действующий слой – операторы;• оператор использует:– клиент для работы с HTTP• запросы, парсинг ответа;• валидация ответа;

– маппер для преобразования json в объекты доменной модели;

Архитектура SDK

Архитектура SDK

Архитектура SDK

• Middleware-stack– каждый middleware получает запрос и передаёт

его следующему middleware по стеку;– внизу стека находится TerminatingMiddleware,

который совершает реальный запрос и передаёт ответ на выход;

– ответ также передается обратно по стеку;– порядок играет роль.

Ехал middleware через middleware

• Логирование;• контроль лимитов, DoctrineCache для

хранения где угодно;• проверка валидности ответа;• получение и обновление токенов.

Порядок имеет значение

Middleware для логирования

Архитектура SDK

• Mapper преобразует json в объекты:– Правила мапинга конфигурируются для

каждого объекта аннотациями;– если какой-то информации не хватает – пишем

null;

Архитектура SDK

Интеграция. Symfony Bundle.

• Несколько клиентов;• кеш токенов в redis;• возможность перегрузить client или http-

transport;• лёгкое подключение middleware.

Интеграция. Symfony Bundle.

Интеграция. SocialKeyAds.• Используем бандл;• асинхронно и многопоточно обрабатываем задания на

выгрузку:– Rabbitmq;– Event-band;

• «отложенные очереди» для повторов при ошибках;• для лимитов интервал повтора вычисляется в момент ошибки;• для ошибок сети со временем интервал повторов

увеличивается;• «мертвая очередь» для постоянных ошибок и терминальных

ошибок;• микросервис токенов.

Что хочется доделать

• Push-уведомления?• расширенная поддержка 2-й

версии:ремаркетинг;– загрузка html5-баннеров;– projection.json;– быстрая статистика и статистика по конверсиям;

• поддержка недокументированных ресурсов в виде отдельной библиотеки.