Нагрузочное тестирование системы WMS крупнейшего интернет-гипермаркета
- Заказчик:
- ВсеИнструменты.ру
- Руководитель проекта со стороны заказчика
- Поставщик
- Перфоманс Лаб
- Год завершения проекта
- 2023
- Сроки выполнения проекта
- Апрель, 2023 - Июль, 2023
- Масштаб проекта
- 1140 человеко-часов
- Цели
-
- Определение максимальной производительности cистемы WMS.
- Проведение тестирования на выделенном продуктовом стенде и анализ результатов.
- Выявление «узких мест» — факторов, ограничивающих производительность системы.
- Передача компетенций заказчику и обогащение опыта штатной команды. Построение зрелых процессов QA и работа с отказоустойчивостью корпоративных систем.
- Результаты
-
Тесты показали, что система выдерживает нагрузку выше, чем 200%. Потолок производительности системы управления складом был ограничен рядом дефектов, которые могли быть обнаружены только под воздействием аномально высоких нагрузок, выше текущих промышленных объемов.
Были обнаружены следующие дефекты:
— некорректные настройки сценария поиска максимальной производительности (решено командой «Перфоманс Лаб»);
— увеличение времени отклика у ручки shipmentOrderProducts под нагрузкой выше 100%;
— редиректы при отправке запросов из скриптов нагрузочного тестирования;
— важный дефект интерфейса: некорректная работа кнопок в разных регионах из-за отличий в организации работы складов.
По итогу работы команда «Перфоманс Лаб» разработала рекомендации для клиента:
— провести дополнительные исследования ручки shipmentOrderProducts, чтобы найти причины аномального поведения во время тестирования;
— перед проведением следующей итерации тестирования изменить подход выполнения ручки shipmentOrderProducts, чтобы создать более реалистичный сценарий. В данный момент в рамках одного заказа происходит увеличение количества товаров в резерве;
— провести новую итерацию поиска максимальной производительности системы WMS, используя обновленный сценарий от «Перфоманс Лаб». В нем учтены некорректные настройки, но не исправлена обнаруженная проблема с редиректами.
Верхняя граница при поиске максимальной производительности системы также осталась равна 200%;
— после получения результатов об уровне максимальной производительности WMS провести тестирование стабильности (надежности) длительностью не менее 6 часов, чтобы получить полноценную информацию о возможностях системы.
Специалисты передали заказчику результаты работ, скрипты и провели обучение сотрудников: команда приобрела компетенции в создании скриптов и профиля нагрузки.
Онлайн-гипермаркет «ВсеИнструменты.ру» убедился, что его система и инфраструктура справится с кратным увеличением нагрузки без необходимости закупки дополнительного оборудования. Имея статистику по приросту новых клиентов, заказчик смог спрогнозировать продолжительность комфортной работы на текущих мощностях, а также получил список «узких мест» и инструменты для проверки и усовершенствования инфраструктуры. Так команда «Перфоманс Лаб» помогла ему решить критичную проблему для бизнеса: подготовиться к масштабированию.
Уникальность проекта
Нагрузочное тестирование складской системы WMS для крупнейшего российского интернет-гипермаркета (более миллиона позиций). Тестирование проводилось в уникальных условиях:
-
Работы проводились на промышленном стенде и без страховки. Отсутствовала возможность построить выделенный тестовый контур в силу больших объемов системы, сложности интеграций и невозможности воссоздать идентичную архитектуру. Высокие риски: ошибки могли привести к огромным финансовым потерям.
-
Высокий спрос на продукцию компании ограничивал количество попыток для успешного завершения проекта. Заказчик смог предоставить только две попытки в определенные дни года.
- Использованное ПО
-
Apache JMeter — инструмент для проведения нагрузочного тестирования. В проекте применялся для моделирования сценариев пользовательского поведения и подачи нагрузки.
Grafana — инструмент для визуализации, мониторинга и анализа данных.
InfluxDB — система управления базами данных.
- Сложность реализации
-
-
Из-за того, что у «ВсеИнструменты.ру» не было тестовых стендов, команде пришлось работать на базе продуктивного стенда. В связи с этим сроки тестирования были максимально сжаты, а количество тестовых «стрельб» –– ограничено. Кроме того, на инженеров легла ответственность за правильную изоляцию контуров друг от друга и максимально бережный процесс тестирования: слишком резкое увеличение порога нагрузки или неверные скрипты могли нарушить работу всей WMS и привести к огромным убыткам.
-
Еще одна сложность –– создание профиля нагрузки. Важно было учесть все бизнес-процессы для воссоздания реалистичных сценариев. Чтобы система работала корректно, инженерам потребовалось изучить активность в смежных подразделениях, учесть логистику и порядок действий сотрудников склада.
-
Для «ВсеИнструменты.ру» это был первый опыт нагрузочных тестов такого масштаба –– поэтому инженеры столкнулись с недостатком технической информации. Например, в расчетах был заложен кейс: 40 тысяч товаров разгружаются 40 минут. На продакшне оказалось, что кейс выполняется за 9 минут –– приходилось многое прогнозировать и корректировать.
-
- Описание проекта
-
Строительный онлайн-гипермаркет «ВсеИнструменты.ру» имеет высокие показатели прироста клиентов и выручки. Была поставлена задача спрогнозировать расширение бизнеса и подготовить ключевые системы и инфраструктуру к новым нагрузкам. Чтобы оценить текущую производительность системы и найти узкие места, заказчик обратился к команде тестирования «Перфоманс Лаб». Работать предстояло с системой управления складом WMS, которая автоматизирует прием, хранение и отправку заказов клиентам. В случае сбоев хотя в пределах одного рабочего дня заказчик рисковал потерять огромные суммы и понести репутационный ущерб.
Из-за отсутствия тестового стенда на стороне клиента команда «Перфоманс Лаб» проводила работы на базе продуктивного контура. Для этих целей онлайн-гипермаркет выделил часть инфраструктуры и предложил тестировать систему в ночные часы определенных дней — таким образом риски сбоев были минимальными. Однако действия в рамках WMS, пусть система и служебная, сложно обратить в силу ее функционала.
Специалисты «Перфоманс Лаб» провели подготовку к работе: настроили инструменты тестирования, проанализировали систему, собрали прогнозы и статистику для бизнес-операций и сформировали профиль нагрузки. Затем команда приступила к разработке методики нагрузочного тестирования, настройке мониторинга с использованием InfluxDB и Grafana, разработке скриптов с помощью Apache JMeter и генерации пулов данных для тестирования. Для корректной работы сценария необходимо было учесть логистику компании и последовательность действий сотрудников на складе. Например, предусмотреть порядок приезда машины, ее разгрузки и распределения товара по полкам. Сложность поставленной задачи заключалась также в том, что в логике работы принимали участие еще две смежные системы. Команде была поставлена задача изучить бизнес процессы и воспроизвести интеграционные взаимодействия с промышленной интенсивностью.
После согласования с «ВсеИнструменты.ру» в определенные часы была произведена подача нагрузки на продуктивную среду. Продуктивный стенд состоял из трех дублирующих контуров, для работы команды в ночь с субботы на воскресенье, когда нагрузка на все системы была минимальна, онлайн отключал один из этих контуров на 8–10 часов, а остальные контуры забирали трафик на себя.
- География проекта
- ЦФО и Сибирский ФО