В конце августа этого года заработала экспресс-доставка продуктов из «Магнита» через сервис Delivery Club.

С тех пор ритейлер успел провести интеграцию с Яндекс.Едой, запустить собственное мобильное приложение, количество подключенных магазинов увеличилось с десяти до 800, а система на пике обрабатывает более 20 000 запросов в секунду.

Николай Карлов, руководитель отдела архитектуры «Mail.ru Цифровые технологии», рассказывает, как запустить такую систему, когда от постановки задачи до старта всего месяц.

Задачи и сложности на старте проекта

В июле «Магнит» инициировал запуск нового канала продаж — экспресс-доставку продуктов. Первым на очереди стал сервис Delivery Club: партнеры договорились, что уже к осени курьеры DC начнут развозить продукты из первых «Магнитов». Далее компания планировала подключиться к Яндекс.Еде и запустить собственный сервис доставки. Сеть «Магнит» – это десятки тысяч магазинов по всей России. При этом часть данных — об ассортименте конкретного магазина, остатках на складах, актуальных ценах — хранится в самих точках. А, например, каталог товаров, в котором более миллиона позиций, находится в центральной базе данных.

Для интеграции с сервисами, компании требовалась универсальная система, которая позволяет собирать данные из этих разрозненных источников и передавать партнерам по доставке. Техническую часть интеграции было решено сделать на платформе in-memory вычислений Tarantool — собственной разработке Mail.ru Group для работы с высоконагруженными приложениями.

Начиная работу над этим проектом, мы столкнулись с несколькими сложностями.

Проблема №1. Сжатые сроки

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

Проблема №2. Актуальность информации

Информация об остатках в системе «Магнита» обновляется раз в несколько часов. Этого более чем достаточно для офлайн бизнеса, однако, для организации дистанционной торговли нужно, чтобы обмен данными происходил раз в пять минут. В противном случае существует большая вероятность того, что на онлайн-витрине товар будет и пользователь его положит в корзину, а в конкретном магазине его не окажется. Это репутационные риски для сервиса, отвечающего за доставку.

Проблема №3. Ориентация на офлайн

В процессе выяснилось, что в системе «Магнита» не хватает информации о товарах и категориях, которая была нужна для корректной работы системы. Отсутствовала квантовка товаров. Квант — это минимальная порция конкретного товара, которую можно купить в данном магазине (например, для арбузов квант — это 3 кг, для мяса — 400 г). Без этой информации организовать торговлю через онлайн-сервисы было невозможно.

Как мы построили систему работы с данными для подключения неограниченного количества магазинов

Из-за сжатых сроков некоторые этапы работы мы делали параллельно. Одновременно с первичной оценкой мы прорабатывали модели данных и спецификации проекта. Информацию об отдельных товарах, нужно было обогатить или модифицировать, для чего мы выработали правила трансформации внутри Tarantool.

Нам предстояло построить систему, которая бы получала потоки данных из магазинов, из центральной базы данных «Магнита», объединяла их, обрабатывала — и выдавала актуальную информацию об остатках, ценах и т. д. Она должна была стать связующим звеном между информационными системами «Магнита» и сервисами экспресс-доставки.

У нас не было времени даже на подготовку ТЗ. Пришлось пропустить этот этап и сразу перейти к разработке.

Отдельные необходимые для запуска проекта бизнес-процессы занимают больше времени, чем у нас было на всю реализацию. Разворачивание традиционной инфраструктуры — длительный процесс. Можно, например, заказать серверы — и ждать их поставку до девяти месяцев, хотя все уже готово. Мы не могли позволить себе такую роскошь, поэтому решили разворачивать систему в облаке Mail.ru Cloud Solutions

. Для этого нам пришлось решать вопрос с безопасной и корректной передачей данных из «Магнита» в облако по VPN-туннелю.

Сначала мы создали имитацию ИТ-инфраструктуры «Магнита» и реализовали некое подобие системы на платформе Tarantool, чтобы протестировать решение. Затем, когда был настроен VPN-туннель, мы провели тесты на реальных данных: коллеги из Delivery Club пробовали оформлять заказы. Каталоги товаров при этом мы загрузили вручную. Первые курьеры и магазины были подключены, когда некоторые вещи были еще не до конца автоматизированы, за счет чего мы смогли получить первую обратную связь о работе системы и вовремя внести коррективы. При таких сроках было важно вести разработку параллельно с анализом результатов внедрения.

Готовую систему мы запустили на базе Tarantool Data Grid. В этой версии платформы вопросы настройки и развертывания платформы решены «из коробки», что существенно повлияло на скорость запуска. Tarantool хорошо подходит для сбора и обработки данных в режиме реального времени, обеспечивает высокую производительность. А еще позволяет быстро масштабировать систему. При подключении новых магазинов просто начинают поступать данные из них, система не нуждается в каких-либо модификациях.

Если на старте работала доставка всего из 10 «Магнитов» и только через Delivery Club, то на момент написания статьи, продукты уже можно заказать из более чем 800 магазинов в том числе с помощью Яндекс.Еды и собственного приложения компании. И количество подключенных супермаркетов продолжает продолжает расти.

От Delivery Club к Яндекс.Еде и другим каналам

С точки зрения системы, нет необходимости в доработке или модификации, сервисы доставки просто подключаются и начинают считывать данные из Tarantool. Система обрабатывает до 20 000 запросов в секунду. Если точек станет не тысяча, а десятки тысяч, нам нужно будет только заранее об этом узнать и подключить дополнительные мощности.

Например, практически бесшовной получилась интеграция с Яндекс.Едой. Мы ориентировались на спецификацию, которую разработали в Delivery Club. У Яндекс.Еды были определенные требования к контенту. Например, для фотографий товаров необходим белый фон. Оказалось, что у некоторых продуктов, которые есть только в региональных магазинах, отсутствуют изображения. Однако ничего настраивать и разрабатывать для интеграции с Tarantool не потребовалось.

Результат

Мы помогли «Магниту» запустить новый канал продаж на имеющейся инфраструктуре без необходимости перестраивать или дорабатывать ее компоненты. Благодаря глубокому пониманию возможностей и архитектуры платформы Tarantool Data Grid, интеграция решения заняла около месяца. При этом новое направление бизнеса можно масштабировать, подключая новых партнеров и укрепляя позиции на рынке экспресс-доставки продуктов и товаров первой необходимости.

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

Оригинал статьи на VC.ru.