О чем эта история

Look for sale помогает продавцам на маркетплейсах сократить путь от выбора товара до выручки, понимать, какие товары пользуются спросом, и быстрее принимать решения, больше и понятнее зарабатывать.

Благодаря преимуществам сервисов Платформы данных у Look for sale получилось очень быстро вырасти — после горизонтального масштабирования баз данных они начали стабильно обрабатывать постоянно растущий сайт популярного маркетплейса: с 4,3 млн артикулов товаров в сутки в ноябре и 6,5 млн в марте до 8,1 млн в апреле.

Задача компании

Look for sale помогает своим клиентам эффективно использовать маркетплейсы — рассказывает, что продают конкуренты и сколько они зарабатывают на продажах. А также показывает, что происходит с товаром поставщиков сейчас: на каких позициях он расположен и сколько продаж генерирует тот или иной артикул. Эти данные дают возможность эффективно выстраивать стратегию продаж на маркетплейсах, что позволяет экономить деньги на тестах гипотез — ведь они основаны на данных. Вся эта информация предоставляется по подписке.

Рынок маркетплейсов и поставщиков активно начал развиваться с начала пандемии. Например, один популярный маркетплейс увеличился за последний год в четыре раза и продолжает свой рост. Соответственно, растет количество данных, обрабатываемых Look for sale. Чтобы предоставлять своим клиентам подробную статистику по остаткам товаров, брендам, оборотам за день и за неделю, им нужно регулярно парсить всю базу данных маркетплейса и сохранять позиции каждого артикула в категории на момент прохода — это около 8,1 млн артикулов на более чем 15 000 категорий фрактальной вложенности. Плюс информация о продажах.

Перед командой Look for sale стояла задача сделать не просто быструю, гибкую и удобную систему аналитики для поставщиков, но и обеспечить ее стабильную работу при любых условиях.

Сервис аналитики на Платформе данных

Предсказать необходимые мощности очень сложно, но закупать, обслуживать и настраивать избыточную инфраструктуру, способную выдержать большие нагрузки, еще сложнее и значительно дороже. Если разворачивать кластер баз данных самостоятельно, то сразу же встал бы вопрос с администрированием, резервным копированием и т. д. А настройка кластера заняла бы целый месяц.

Поэтому было решено разрабатывать новый сервис аналитики Look for sale, опираясь на управляемые базы данных и сервисы облачной платформы. Такой подход позволял получить рабочую и правильно настроенную базу данных всего за несколько минут, но при этом не тратить ресурсы на ее поддержку — не заниматься мониторингом, созданием резервных копий и реплик базы данных, обеспечением аварийного переключения, а также установкой обновлений.

Команда Look for sale изучала рынок облачных платформ. Обращали внимание на возможности управляемых сервисов, уровень поддержки пользователей, безопасность и многое другое. Было принято решение остановиться на платформе Yandex Cloud. Она отвечала всем требованиям безопасности, а управляемый сервис Yandex Managed Service for MongoDB поддерживал кластеры серверов MongoDB 3.6, 4.0, 4.2 и 4.4 и предоставлялся с поддержкой вендора. Это было очень важным для развития сервиса.

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

Сервис Look for sale построили на платформе Node.js, базах данных MongoDB и программного брокера сообщений RabbitMQ. Для начала работы в инфраструктуре Yandex Cloud был поднят один сервер с Yandex Managed Service for MongoDB. Туда сгружался слепок всего маркетплейса:

  • 2 раза в сутки полностью.
  • Каждые 4 часа — товары с продажами от 2 до 4 в сутки.
  • Каждый час — товары 5+ продаж.
  • Один раз в сутки запускается парсер, который проходит все 13 000 категорий и снимает позиции товаров в них (фрактальная структура превращает 8 млн артикулов в 20—25 млн записей).

Но кратный рост самого маркетплейса привел к очень быстрому заполнению хранилища базы данных. Чтобы обойти ограничение в 605 ГБ для одной базы, Look for sale решили включить шардирование. Такой способ горизонтального масштабирования позволяет существенно улучшить производительность СУБД и доступность данных. Шардирование доступно только для кластеров с версией MongoDB не ниже 4.0, и Yandex Cloud (как эксклюзивный партнер MongoDB в России) предоставляет такую возможность в рамках управляемого сервиса Yandex Managed Service for MongoDB. Для реализации проекта был привлечен партнер облачной платформы Hilbert Team. В процессе перехода на шарды появились сложности с MongoDB, которые удалось решить совместными усилиями поддержки облака и партнера. А их решения были отправлены в официальную поддержку MongoDB.

Шардирование баз данных на 12 серверов полностью решило проблему с масштабированием. В случае увеличения нагрузки добавить и настроить новые шарды для повышения производительности кластера можно быстро и легко.

Также на были задействованы и другие управляемые сервисы платформы данных:

  • Yandex Managed Service for Redis — для кеширования неуникальных запросов и последующей их для передачи в базу данных MongoDB.
  • Yandex Managed Service for PostgreSQL — для бэкенда, в этой базе данных хранится транзакционная база по пользователям.

Для работы с высоконагруженными веб-приложениями в Yandex Cloud был взят сервис Yandex Managed Service for Kubernetes® и балансировщик нагрузки Yandex Network Load Balancer.

Что дальше

Благодаря преимуществам сервисов платформы данных у Look for sale получилось очень быстро вырасти — после шардирования баз данных Look for sale начали стабильно обрабатывать постоянно растущий сайт маркетплейса: с 4,3 млн в сутки в ноябре и 6,5 млн в марте до 8,1 млн в апреле. В планах компании развитие как внутри одного маркетплейса (например, учет товаров), так и подключение новых площадок. При этом планируется очень большой рост нагрузки, но на облачной платформе Look for sale не нужно заниматься постоянным развитием и администрированием инфраструктуры, а можно сосредоточиться только на задачах бизнеса.

В Yandex Cloud идет активно развитие сервиса, в том числе за счет использования других сервисов платформы данных. Уже сейчас активно применяется быстрая аналитическая СУБД Yandex Managed Service for ClickHouse.