Как это работает: Ozonru.kz (часть 2)

Сегодня я расскажу о том, как товары попадают в каталог, который мы прокачали в прошлой статье.

В настоящее время емкость базы товаров - около 400 000 позиций. Невозможно внести вручную и поддерживать в актуальном состоянии каталог с таким количеством товаров.

Будучи серьезным ресурсом, у которого есть мобильные приложения и партнерские магазины, OZON разработал свой REST API с основным функционалом получения каталога и товаров, фасетными фильтрами, процедурами аутентификации пользователей и управления заказами.

Мы проанализировали и отбросили возможность работы сайта регионального представительства по принципу тонкого клиента:
1. Мы боролись за быструю загрузку страниц. API - потенциально слабое место в высоконагруженном проекте.
2. Предполагалось наличие товаров, которых нет в основном каталоге OZON.

Для обеспечения актуальности торговых предложений мы разбили синхронизацию на два направления: импорт информации и отслеживание состояний при критически важных операциях.

Остановимся поподробнее на процессе импорта категорий и товаров.

Мы ввели два режима:
1. ручной (через администраторский раздел),
2. автоматический (задания CRON).

Ручной режим позволяет:
• получать список доступных веток каталога для импорта или обновления,
• получать список товаров со статусами наличия, цены, скидок в локальном каталоге товаров,
• управлять опциональными характеристиками для локального каталога.

Рис.1. Начальная страница управления товарами
ozon2_1

 

Рис.2. Развернутый список доступных веток каталога
ozon2_2

 

Рис.3. Выбор необходимых характеристик товаров для фасетного фильтра перед загрузкой товаров
ozon2_3

 

Рис.4. Процесс импорта (с отладочной информацией)
ozon2_4_1

 

Рис.5. Теперь наша ветка каталога загружена, кнопка «Загрузить» изменилась на «Обновить».
ozon2_5

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

В рамках бета-версии сайта скорость обновления товаров не очень высокая - от 0,1 до 0,4 сек на товар, поэтому мы получаем данные в несколько потоков (multi_curl), что оставляет потенциальные возможности для сокращения сроков импорта за счет оптимизации серверной логики в будущем. Сейчас суммарное время обновления всего каталога составляет около 4-х часов.

Для исключения недоразумений с покупкой недоступных товаров, для операций, связанных с корзиной и оформлением заказов, мы ввели он-лайн проверку статусов для товаров Ozon с основного сайта.

Например, вы неделю назад положили товар в корзину. При возвращении на сайт вы увидите сообщение, если цена на товар изменилась или товар был снят с продажи.

Чтобы разгрузить сервер API, был внедрен механизм кеширования запросов к этому серверу.

Для уменьшения нагрузки на сервер API, совместно со специалистами компании OZON был разработан механизм кеширования запросов для редко обновляемых данных (например, фотографии к товарам).

По завершению работ и запуска beta-версии, мы получили готовое решение, которое можно масштабировать и тиражировать для региональных представительств OZON в других странах.

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

Координационный
совет SPECIA