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

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

Сьогодні ми розпочинаємо цикл статей про те, як ми будуємо сервіс 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. У нас є невеликий план тем, які ми хотіли висвітлити у нашому блозі, та які, як нам здається, допоможуть спільноти з рішеннями інженерних завдань, на які ми витратили не один день свого життя.

Ми також будемо раді дізнатися від читачів Хабра про те, які питання в області персоналізації викликають найбільший інтерес. Обов'язково врахуємо ваші побажання у наступних статтях!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.