ПАО Магнит
Потребительские товары
Россия
Ноябрь 2022
Центральными задачами для команды Lenvendo стали структурная переработка и развитие интернет-магазина товаров повседневного спроса для масштабирования проекта.
Мы выдели несколько основных производственных задач для сегментации проекта:
1. Аудит архитектуры программного кода, структур баз данных, индексов ElasticSearch, кэширования и программного кода с выведением рекомендаций по модернизации программного кода и серверной архитектуры.
2. Рефакторинг для упрощения обслуживания систем и получения возможности поддержания целевых нагрузок.
3. Доработка системы для обеспечения простоты и комфорта при выборе, покупке и доставке товаров покупателями интернет-магазинов. Для этого необходима автоматическая синхронизация каталога товаров в интернет-магазине с:
- остатками на складах;
- изменениями в ценах на товары;
- платежными сервисами;
- службами сборки заказа;
- сервисами доставки;
Команда Lenvendo стартовала работы по проекту над онлайн-сервисами «Магнит» в апреле 2021 г. Работы ведутся по системе Time & Material. В среднем над проектом работают около 30 специалистов: это программисты-разработчики, тестировщики, аналитики, тех- и тимлиды, специалисты техподдержки и менеджеры.
Проектирование системы мы начинали не с нуля, а уже после года работ, проведенных другим подрядчиком, качество которых не устроили бизнес-оунера. В связи с этим, специалисты имели ряд вводных ограничений. В частности, одна из основных сложностей для разработчиков проекта стала работа с «технологическим сплавом».
Проект находится на стыке трех технологий: Bitrix, Symfony и связующие библиотеки стороннего подрядчика. Работа происходит в условиях постоянной высокой нагрузки с использованием брокеров очередей RabbitMQ, Kafka и репликации баз данных.
Выполняется адаптация коробочного решения Битрикс к специфичным нуждам бизнеса и обеспечение желаемой суточной нагрузки на нем: создание сущности возврата, богатая статусная модель, оркестрация заказа и движение заказа с использованием сторонних сервисов.
Программирование выполняется на Go. Frontend-разработка с помощью Vue. Контроль качества проводится как автоматическими системами, так и методами ручного тестирования.
Наша команда активно участвует в переводе монолита на сервисную архитектуру.
Мониторинги системы проводятся с использованием Prometheus, Grafana, Sentry и AppDynamics.
В рамках проведенного аудита, проведенного для проекта, были:
1. исследована кодовая база существующих контуров,
2. составлен список узких мест для рефакторинга и оптимизации проекта к существенному повышению нагрузок,
3. проанализированы результаты нагрузочных тестов Performance Lab,
4. составлены рекомендации по настройкам серверной архитектуры,
5. сформированы рекомендации по доработке текущего программного кода для достижения целевых показателей,
6. сформированы рекомендации по целевой архитектуре системы.
Чтобы проанализировать исходную и перспективную нагрузку, которую способен выдерживать контур, мы проанализировали результаты ряда нагрузочных тестов, проверяющих контуры e-com системы.
Первичный рефакторинг был направлен на то, чтобы монолит выдерживал нагрузку минимум 100 тысяч заказов ежемесячно.
После первичной оценки и внесения рекомендаций по модернизации приоритетными направлениями для команды стали высоконагруженные системы онлайн-магазинов «Магнит.Экспресс» и «Магнит.Аптека», которые мы реализовали «под ключ».
«Магнит.Экспресс» (или «Доставка») – это сервис доставки продуктов питания и других товаров ежедневной необходимости из ближайшего к клиенту офлайн-магазина торговой марки или выделенных складов (дарксторов). В основном каталоге находится более 5000 позиций. Непосредственная доставка заказов осуществляется партнерами сервиса.
В рамках высоконагруженной коммерческой системы реализованы следующие функциональные возможности:
• Синхронизация основного каталога товаров с базами данных остатков в офлайн-магазинах и на складах, а также изменениями в ценах;
• Реализация личного кабинета пользователя: двухфакторная аутентификация возможна с помощью мобильного телефона + смс код или e-mail + пароль.
• Интеграция с программами лояльности (для проектов продукты, аптека и косметика) – в личном кабинете интернет-магазина можно подключить персональную карту, скидки и бонусы по которой будут учитываться при онлайн-покупках.
• Интеграция с онлайн-картами и системами расчета логистики доставок: оффлайн-точки и дарксторы «Магнита» имеют площадь покрытия в рамках которых принимают и комплектуют заказы.
• Возможность выбора типа оплаты для клиентов магазина: онлайн посредством платежного сервиса и при получении товаров;
• Передача данных о составе заказа в точку сборки заказа;
• Передача данных по заказу в партнерский сервис доставки;
• Возможность осуществления возвратов;
• Квалифицированное хранение и передача персональных данных клиентов в соответствии с действующим законодательством на всех этапах процесса.
Проект «Магнит.Аптека» в связи с действующим законодательством России подразумевает только бронирование и самовывоз товаров без осуществления доставки и, соответственно, внедрения связанных с этим процессом интеграций.
«Аптека», как и вся система торговой марки, представляет из себя монолит выносными модулями сборки и оплаты заказа (интегрирована с платежными системами «Сбера»), где команда специалистов также доработала и оптимизировала системы, обеспечивающие оптимальный доступ к выбору товаров и оформлению заказа, а также интеграции с сопутствующими модулями.
В экосистему торговой сети входит также «Магнит.Косметик», работы которому проходили в рамках доработок и модернизации основного контура системы, но не являлись приоритетными для команды Lenvendo.
Интернет-магазины всех подпроектов реализованы как в десктопной, так и в мобильной версиях.
На ноябрь 2022 г. мы можем говорить о достижении первичных целевых показателей проекта: система онлайн-коммерции «Магнит» поддерживает желаемый уровень ежедневной нагрузки и держит резерв мощностей для пиковых моментов и
увеличение скорости загрузки страниц интернет-магазина.
За счет оптимизация БД MySQ:
1. Увеличена скорость выполнения запросов по каталогу в 3 раза.
2. Увеличена скорость индексации ElasticSearch в 3 раза.
3. Уменьшено использования трафика.
4. Улучшена отказоустойчивость при больших нагрузках.
За счет доработки кэширования:
1. Снижен используемый трафик и нагрузки на tarantool.
2. Увеличена производительность.
3. Снижена нагрузка на backend.
За счет оптимизации кода:
1. Ускорены запросы для работы с корзиной
2. Улучшена производительность запросов API на 12%
3. Уменьшена потребляемая оперативная память
Благодаря корректно выстроенным интеграциям каталог товаров автоматически обновляется, корректно и оперативно предлагая покупателям товары, находящиеся в наличии по релевантной цене.
Сейчас система электронной коммерции обеспечивает ежедневную бесперебойную поддержку и сопровождение более 15 тысяч заказов и готова к расширению торговой сети. Специалисты Lenvendo продолжают работы над усовершенствованиями системы электронной коммерции.
Lenvendo с удовольствием обсудит вашу задачу