Технологии Retail Rocket
Команда разработчиков и аналитиков Retail Rocket стремится изменить мир Ecommerce и сделать его по-настоящему персонализированным с момента написания первой строки кода в 2012 году.
О Retail Rocket в цифрах:
• Более 80 серверов (в основном в Германии)
• В месяц обрабатывается более 100 миллионов уникальных посетителей (уникальных файлов cookie)
• Более 1 000 интернет-магазинов подключено к Retail Rocket по всему миру.
• Более 450 000 внешних запросов в минуту (в среднем)
• В разработку инвестировано 45 человеко-лет
Суть работы Retail Rocket – выявление потребностей посетителя магазина с помощью анализа поведения и товарной матрицы магазина. Для формирования персональных рекомендаций нам изначально обязательно был необходим математический фундамент, который бы легко масштабировался. Вот практически полный перечень подходов, используемых нами сегодня:
- Контентная фильтрация (content filtering).
- Коллаборативная фильтрация (colaborative filtering).
- Предсказательные модели (predictive analytics) на основе машинного обучения и цепей Маркова.
- Байесовская статистика.
- Алгортмы гибридной персонализации в режиме реального времени.
… и многие другие.

Наша команда разработчиков принимает активное участие в жизни научного сообщества. Они выступают на значимых в индустрии конференциях, получают награды в соревнованиях Data Science. Помимо этого, можно увидеть публикации наших разработчиков в специализированных интернет-изданиях.


Для машинного обучения мы используем Spark на базе платформы Hadoop Yarn – это система кластерных вычислений, которая лучше всего подходит для наших текущих задач. Из родных компонентов Hadoop у нас работает Apache Flume для доставки данных, библиотека распределенного Machine Learning Mahout и планировщик задач Oozie.
У команды Retail Rocket есть репозиторий на GitHub с множеством интересных проектов: Движок для A/B-тестов на JavaScript, Библиотека Spark MultiTool на Scala, скрипты для развертывания кластера Hadoop с помощью Puppet.

Почти все, что видит пользователь, обрабатывается на win-машинах с веб-сервером IIS, код написан на C#, Asp.Net MVC. Все данные хранятся и раздаются в трех СУБД: Redis, MongoDB, PostgreSQL.
Когда нам надо обеспечить взаимодействие распределенных компонентов, к примеру, при вычислении сегмента пользователя по User-Agent для профилирования аудитории, используется Thrift. А для того, чтобы различные подсистемы могли получать поток данных для этого от интернет-магазинов, применяется упомянутый выше транспорт Flume.

В разработке наша команда придерживается методологии непрерывной доставки новой функциональности клиентам (на сегодняшний день к нам подключено более 1000 магазинов).
Для этого мы применяем цепочку технологий Git + GitLab + TeamCity с прохождением юнит-тестов (по состоянию на начало 2017 года проведено более 1 200 тестов), приемочных тестов и code review.