Cистема статистики баннерной рекламы

Описание проекта

Отзыв заказчика

Компания «Media-Net» с большим удовлетворением отмечает работу компании «Грамант» в проекте «Система статистики для баннерной рекламы». Хочется отметить высокий профессионализм и компетентность специалистов компании в комплексном решении задач, оперативность и качество выполнения работ. В лице компании «Грамант» мы видим надежного партнера, способного на высоком профессиональном уровне обеспечить решение задач любого уровня сложности и гарантировать высокое качество готового продукта, с технической и пользовательской точек зрения.

Директор по планированию ООО «Медиа Нэт» А. А. Новожилов

Описание проекта

Система статистики предназначена для анализа результатов рекламных кампаний в Интернете и разработана для компании «Двойной Клик», входящей в группу компаний «Видео Интернешнл». «Двойной Клик» – один из лидеров рынка интернет-рекламы в России.

Компания «Двойной Клик» отвечает за размещение и показ рекламных баннеров на крупнейших российских интернет-площадках, таких как yandex.ru, mail.ru, afisha.ru и др. Ежедневный объем регистрируемых в базе данных событий исчисляется десятками миллионов. Для анализа результатов проводимых рекламных кампаний, требовалась удобная система отображения статистики, позволяющая выявлять интересы и предпочтения пользователей различных интернет ресурсов. Подобная информация позволяет рекламодателям корректировать стратегию рекламных кампаний и тем самым повышать эффективность электронной рекламы.

Возможности

  • Анализ статистики рекламной кампании по различным критериям (площадке, баннеру и т.п.)
  • Анализ статистики уникальных посетителей, отображение динамики охвата пользователей
  • Генерация отчетов в фоновом режиме
  • Экспорт данных в MS Excel
  • Настраиваемая система ролей и прав доступа, предоставляющая возможность использования системы не только сотрудниками агентства, но и внешними пользователями

Технологии

  • Серверная платформа — Java
  • Используемая СУБД — Oracle
  • Операционные системы — Linux

 

 

Case study

Процесс

Проект: «Система статистики 1.0»
Заказчик: «Двойной Клик»
Сроки: апрель 2008 — июнь 2008
Технологии: J2SE, Oracle, Wicket

Заказчиком системы выступила компания «Двойной Клик». «Двойной Клик» – один из лидеров рынка интернет-рекламы в России. «Двойной Клик» предлагает рекламодателям услуги по размещению рекламных баннеров на крупнейших российских интернет-площадках.

Заказчик выразил желание создать систему статистики, позволяющую получать различные отчеты о результатах рекламной кампании. Для отображения рекламы компания «Двойной Клик» использует продукт DART Enterprise компании Doubleclick. Ежедневно система DART регистрирует более 6 миллионов событий.

Система DART содержит некоторый набор отчетов, однако они не полностью удовлетворяют заказчика с точки зрения анализа результатов рекламной кампании. Заказчик сформулировал желаемый набор отчетов, который предстояло реализовать. Данные для отчетов должны извлекаться из существующей инфраструктуры DART.

Примером простейшего отчета может служить «Количество показов баннера X и кликов на него на сайте Y за прошлую неделю». Пользователи системы статистики – сотрудники и клиенты компании «Двойной Клик». Клиенты-рекламодатели, заказавшие проведение рекламной кампании, используют систему статистики для аудита числа показов и кликов на баннеры и для анализа эффективности рекламных площадок, генерируя различные отчеты. Анализ эффективности рекламных площадок позволяет рекламодателям в будущем размещать рекламу наиболее выгодно.

Начало проекта

Совместно с заказчиком было создано техническое задание. Был утвержден список и содержание отчетов. Система должна иметь веб интерфейс, язык программирования – java, СУБД – Oracle. Дизайн и верстка макетов экранов системы были выполнены сторонним профессионалом, программирование и тестирование – нашей командой.

В начале проекта предстояло решить следующие важные задачи:

Задача 1. Придумать способ получения данных из системы DART.

В документации по DART не был описан механизм экспорта данных или API, с помощью которого можно было бы извлечь данные о кликах и показах баннеров. С точки зрения получения необработанных данных о кликах/показах DART представлял собой черный ящик. Совместно с техническими специалистами заказчика было найдено решение – извлекать данные напрямую из специальных таблиц в базе данных системы DART.

Задача 2. Убедится, что все предложенные заказчиком отчеты реализуемы.

Заказчик описал функциональность отчетов на языке бизнес логики. Команда разработчиков должна была убедится, что ей удастся реализовать каждый отчет. Для каждого отчета мы оценили возможность создания SQL запроса на выборку данных из БД. Используя опыт команды в создании отчетов для другой баннерной системы мы так же рекомендовали заказчику некоторый набор отчетов, который окажется полезным с точки зрения анализа рекламной кампании. Результатом этого вида деятельности явился утвержденный список отчетов с описанием их функциональности.

Команде удалось создать SQL запросы для всех отчетов, причем для построения каждого отчета использовался ровно один запрос. Была проведена работа по оптимизации запросов – для ускорения работы были созданы индексы в БД, некоторые запросы переписывались после анализа их стоимости.

Задача 3. Придумать способ, как организовать взаимодействие с системой DART в щадящем режиме.

Система статистики обращается к БД системе DART, необходимо было организовать это взаимодействие таким образом, чтобы не нарушить работу DART. Система DART отвечает за функциональность показа баннеров и сбора статистики, перебои в работе системы череваты финансовыми и репутационными убытками заказчика. В системе DART собирается два вида информации о кликах и показах — с информацией о пользователях и без нее. Информация о пользователе представляет собой уникальный идентификатор браузера пользователя. Все отчеты в системе можно разделить на 2 категории в зависимости от того, используется ли в них информация о пользователях.

Пример отчета, в котором используется информация о пользователях:

Для периода времени и рекламной кампании найти число разных пользователей, кто видел любой баннер из рекламной кампании.

Пример отчета, в котором не используется информация о пользователях:

Для периода времени и рекламной кампании найти общее число показов всех баннеров из рекламной кампании.

Оба вида данных (с информацией о пользователях и без нее) хранится в DART в отдельных таблицах. Объем данных без информации о пользователях существенно меньше (примерно в 2000 раз).

Соотношение объемов данных

За один день таблица с информацией о пользователях увеличивается на на 6-7 миллионов строк, таблица без информации о пользователях — на 30 тысяч строк. Соответственно, отличается и время выполнения запросов к таблицам. Запросы к таблице без пользователей выполняется быстро (меньше 5 секунд), запросы к таблице с пользователями выполняются долго (больше 10 минут). Долгое время выполнения запросов влечет за собой две проблемы:

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

— Существует риск нагрузить базу DART запросами от системы статистики и ухудшить функциональность системы DART

Для решения проблемы 1 был создан механизм выполнения отчетов в фоновом режиме. Отчет, в котором используется информация о пользователях получил название «оффлайн отчет». При заказе оффлайн отчета пользователь видит, что отчет попадает в список не готовых оффлайн отчетов. После выполнения отчета пользователь получает уведомление на почту, что отчет готов. После заказа оффлайн отчета работа пользователя не блокируется, он может пользоваться системой, генерировать онлайн отчеты (запросы к таблице без пользователей), просматривать результаты готовых оффлайн отчетов.

Для решения проблемы 2 была создана очередь оффлайн отчетов. Механизм выполнения отчетов в фоновом режиме выбирает первый оффлайн отчет из очереди не готовых отчетов. Выбор следующего отчета из очереди случится только после завершения выполнения предыдущего оффлайн отчета. Специальный пользователь с ролью «администратор очереди отчетов» может передвигать оффлайн отчеты в очереди.

Страница списка оффлайн отчетов

Разобравшись с ключевыми задачами команда могла приступать к разработке.

Одной из важнейших сущностей системы стал отчет. Архитектура отчета в системе статистики выглядит следующим образом:

Архитектура отчета

— Источник данных — хранит SQL запрос для отчета и обрабатывает результат ответа от БД

— Вид в интерфейсе — шаблоны экранов с результатами отчета, панелей фильтра

— Фильтр отчета — набор параметров фильтрации отчета

— Компонент экспорта в excel — отвечает за выгрузку результатов в excel файл

— Формат строки данных — описывает типы данных в строке результата отчета, нужен для сохранения результата выполнения оффлайн отчета на жесткий диск

Компонентная архитектура отчета позволяет относительно легко добавлять новые отчеты в систему, заставляя разработчика сосредотачиваться только на компонентах отчета и не затрагивать существующий код системы. В следующих версиях системы заказчик захотел добавить новые отчеты, и эта работа была успешно выполнена за счет удачно спроектированной архитектуры отчета. Благодаря продуманному интерфейсу системы, добавление новых отчетов так же не потребовало значительных затрат и переделок интерфейса при добавлении нового отчета.

В рамках требований был реализован механизм экспорта отчетов, который позволил сохранять результаты отчетов из веб интерфейса системы в формате электронной таблицы Microsoft excel.

Первая версия система была сдана в срок, заказчик остался доволен результатом (отзыв). Мы рады, что система оказалась востребованной заказчиком. Сотрудничество с компанией «Двойной Клик» продолжилось и продолжается до сих пор, создано несколько следующих версий системы статистики с новой функциональностью:

— Версия 1: Отчеты (онлайн/оффлайн), механизм очереди и выполнения оффлайн отчетов, экспорт в excel.

— Версия 1.1: Система ролей. Права доступа. Административный интерфейс. Резиновая верстка.

— Версия 1.2: Новые отчеты.

— Версия 1.3: Управление очередью оффлайн отчетов.

— Версия 2: Новый отчет, ui изменения.

— Версия 2.1: Колонка уникальные клики.

— Версия 2.2: PostClick отчеты.

— Версия 2.2: PostBuy отчеты.