Персонализация в электронной коммерции

    Привет, Хабр!

    Сегодня мы начинаем цикл статей о том, как мы строим сервис Retail Rocket. За без малого три года работы, мы собрали солидный технологический стек, разочаровались в большом количестве «модных» технологий и построили очень сложную систему.

    Вкратце, Retail Rocket – платформа для мультиканальной персонализации интернет­-магазина на основе Big Data. Наш сервис анализирует поведение посетителей интернет-магазина, выявляет потребности и в нужный момент показывает интересные именно им предложения на сайте, в email и display кампаниях, увеличивая доход интернет­-магазина за счет роста конверсии, среднего чека и частоты повторных покупок.

    Этой статьей мы открываем инженерный блог Retail Rocket (маркетинговый блог мы ведем почти два года) с рассказом об используемых подходах в области анализа данных и кратким перечнем используемых технологий. Ко всему описанному в статье мы пришли итеративно и в следующих статьях постараемся подробно описать наш путь в каждой из областей.

    Несколько цифр, коротко описывающих наш сервис:

    Более 70 обрабатывающих серверов (в основном – Hetzner).
    Около 100 млн. уникальных пользователей (уникальных кук) в месяц.
    360 000 внешних запросов в минуту (в среднем).
    35 человеко-лет, вложенных в разработку.
    10 инженеров (разработчики, аналитики, системные администраторы).

    Подходы к анализу данных


    Суть работы Retail Rocket – выявление потребностей посетителя магазина с помощью анализа поведения и товарной матрицы магазина. Для формирования персональных рекомендаций нам изначально обязательно был необходим математический фундамент, который бы легко масштабировался. Вот практически полный перечень подходов, используемых нами сегодня:

    • Контентная фильтрация (content filtering).
    • Коллаборативная фильтрация (colaborative filtering).
    • Предсказательные модели (predictive analytics) на основе машинного обучения и цепей Маркова.
    • Байесовская статистика.

    По каждой из этих тем можно написать серии статей или даже книги :) Уверен, когда-нибудь мы в деталях расскажем, как реализовали подсистему вычисления персональных рекомендаций (user-item), работающую в реальном времени, а пока коротко расскажем про технологии, которыми пользуемся для этого.

    Аналитическая платформа


    SparkДля машинного обучения мы используем Spark на базе платформы Hadoop Yarn – это система кластерных вычислений, которая лучше всего подходит для наших текущих задач.

    В настоящее время мы практически полностью перевели всю систему анализа данных на Spark с использованием функционального языка программирования Scala. До этого мы много писали на Pig, Hive, Python и Java. Из родных компонентов Hadoop у нас работает Apache Flume для доставки данных, библиотека распределенного Machine Learning Mahout и планировщик задач Oozie.

    В качестве централизованного решения для запуска периодических задач расчета рекомендаций (на момент написания статьи их чуть меньше 100) выбрали Jenkins. Несмотря на то, что это довольно странное применение такого инструмента, за год работы мы остались им довольны.

    Кстати, у нас есть репозиторий на GitHub, где наша команда поддерживает несколько проектов:

    • Движок для A/B-тестов на JavaScript.
    • Библиотека Spark MultiTool на Scala.
    • Скрипты для развертывания кластера Hadoop с помощью Puppet.

    Фронтэнд


    IISПочти все, что видит пользователь, обрабатывается на win-машинах с веб-сервером IIS, код написан на C#, Asp.Net MVC.
    Все данные хранятся и раздаются в трех СУБД: Redis, MongoDB, PostgreSQL.

    Когда нам надо обеспечить взаимодействие распределенных компонентов, к примеру, при вычислении сегмента пользователя по User-Agent для профилирования аудитории, используется Thrift. А для того, чтобы различные подсистемы могли получать поток данных для этого от интернет-магазинов, применяется упомянутый выше транспорт Flume.

    Процесс разработки


    git, team cityВ разработке наша команда придерживается методологии непрерывной доставки новой функциональности клиентам (на сегодняшний день к нам подключено более 500 магазинов). Для этого мы применяем цепочку технологий Git + GitLab + TeamCity с прохождением юнит-тестов, приемочных тестов и code review. Такой подход – минимальный производственный стандарт, позволяющий
    нам обеспечивать заданное качество продукта и развертывание production с нулевым простоем.

    Чем мы будем делиться


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

    Мы также будем рады узнать от читателей Хабра о том, какие вопросы в области персонализации вызывают наибольший интерес. Обязательно учтем ваши пожелания в следующих статьях!
    Retail Rocket 38,84
    Платформа для персонализации интернет-магазинов
    Поделиться публикацией
    Комментарии 1
    • 0
      Было бы прикольно пообщаться, если можете не только чистый екоммерс.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое