Все статьи

Распродажа начнётся по расписанию. Что проверить, чтобы магазин её пережил

Что ломается на пике продаж, как прикинуть реальную нагрузку и что ещё можно успеть перед Чёрной пятницей и Новым годом

11 ноября 2023 года покупатели Ozon оформили больше 5,4 млн заказов и потратили 30 млрд рублей. Это на 64% больше, чем годом раньше. Такие пики случаются несколько раз за сезон: 11.11, Чёрная пятница, предновогодняя неделя. И каждый раз основная нагрузка приходится на первые минуты после старта акции.

 

Скорость в эти минуты напрямую превращается в деньги. По данным Akamai за 2017 год, задержка загрузки в 100 миллисекунд снижает конверсию до 7%, а задержка в две секунды увеличивает число отказов на 103%. Google ещё в 2016 году посчитал, что 53% посетителей мобильного сайта уходят, если страница не загрузилась за три секунды.

 

Самый известный пример того, чем это заканчивается, — Amazon Prime Day 2018. Сразу после старта распродажи главная страница не открывалась, ссылки вели на страницы ошибок, поиск по товарам не работал около шести часов, оформление заказа периодически выдавало ошибку. Amazon сам признал, что часть покупателей временно не могла ничего купить. Если такое случилось у компании с одной из самых больших инфраструктур в мире, проверять свой магазин перед пиком точно стоит.

Что ломается на пике

Серверы со статикой и главная страница обычно держат нагрузку: их проверяют чаще всего, и они хорошо кэшируются. Чаще отказывают места, которые в обычные дни работают с большим запасом и поэтому никогда не тестировались под нагрузкой.

 

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

 

Остатки. Популярный товар со скидкой заканчивается за минуты. Если резерв происходит только при оплате, двое покупателей одновременно оформляют последнюю единицу, и одному из них потом звонит поддержка. Показательный случай с той же распродажи 2023 года: покупательница хотела купить PlayStation 5 по акционной цене, через три минуты увидела, что товара по этой цене нет, и получила страницу с ценой на 10 тысяч дороже. Для покупателя это выглядит как обман, даже если система сработала по правилам.

 

Внешние сервисы и их лимиты. Платёжный шлюз, сервис СМС-кодов, подсказки адресов, расчёт доставки — у каждого есть ограничение на число запросов в секунду. Своя инфраструктура может выдержать любой пик, но если провайдер СМС отвечает на сотый запрос в секунду ошибкой, покупатели не смогут войти в аккаунт.

 

Сброс кэша в момент старта. Ровно в 00:00 меняются цены у тысяч товаров. Кэш с прежними ценами становится недействительным, и все запросы одновременно идут в базу данных. Это происходит в ту самую минуту, когда на сайт приходит больше всего людей.

 

Поиск и фильтры. Запрос «все смартфоны со скидкой больше 30%, в наличии, с доставкой завтра» — один из самых тяжёлых для базы. На распродаже его выполняют тысячи людей одновременно.

 

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

 

Админка и выгрузки. На пике с системой работают не только покупатели. Менеджеры правят цены, склад выгружает заказы, аналитики строят отчёты. Тяжёлая выгрузка в 00:05 может отнять ресурсы у оформления заказов.

Как прикинуть реальную нагрузку

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

 

Начинать стоит с данных прошлого года. В системе аналитики находят пиковый час прошлой распродажи, а внутри него самые нагруженные 5–15 минут. Обычно это первые минуты после старта акции. К этому значению добавляют ожидаемый рост (по рекламному бюджету, размеру базы рассылки, динамике трафика за год) и запас на непредвиденное. Запас в 1,5–2 раза — разумный минимум.

 

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

 

И отдельно проверяют форму всплеска. Нагрузка, которая растёт плавно за час, и нагрузка, которая за минуту вырастает в десять раз, ломают систему по-разному. На распродаже со стартом в полночь случается второй вариант.

 

Для самих тестов подходят открытые инструменты: Apache JMeter, k6, Gatling, Яндекс.Танк. Тестовый стенд должен быть максимально близок к продакшену по железу и объёму данных. Если стенд в несколько раз слабее, результаты нельзя просто умножить: узкие места на нём и на проде могут оказаться разными.

Что можно успеть за две-три недели

Первая неделя: найти узкие места.

 

• Посчитать целевую нагрузку и профиль по данным прошлого года.

• Составить список внешних сервисов, без которых не завершается заказ, и узнать у каждого провайдера лимиты и готовность к пику. Платёжные провайдеры и сервисы СМС обычно сами просят крупных клиентов предупреждать о распродажах.

• Прогнать нагрузочный тест по ключевым сценариям: поиск, корзина с промокодом, оформление, оплата.

• Отдельно проверить сценарий «последняя единица товара»: два покупателя одновременно оформляют одну позицию.

• Проверить, что происходит при массовой смене цен: кэш, поиск, отображение старой и новой цены.

 

Вторая неделя: исправить и закрепить.

 

• Исправить найденное и прогнать тест повторно.

• Заранее определить, что можно отключить на пике без потери заказов: рекомендации, блок отзывов, тяжёлые виджеты, обновление счётчиков просмотров. Каждое отключение проверить заранее, а не впервые в 00:05.

• Перенести тяжёлые выгрузки и отчёты на время после пика.

• Настроить мониторинг бизнес-метрик: заказы в минуту, доля успешных оплат, время ответа на шаге оплаты. Падение числа заказов при растущем трафике — первый сигнал проблемы, и он появляется раньше, чем жалобы.

• Ввести заморозку релизов за несколько дней до старта распродажи.

• Назначить дежурных и того, кто принимает решение отключить функцию или откатить изменение.

 

Что за две недели делать уже поздно. Менять архитектуру, переезжать на другой платёжный сервис, запускать новый чекаут или новую систему расчёта скидок. Любое крупное изменение перед пиком добавляет риск, который не успеют проверить. Такие задачи лучше запланировать на январь, по итогам этого сезона.

В день распродажи

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

 

После распродажи нужно сохранить данные о нагрузке: пиковые значения, время ответа по каждому шагу, все инциденты. Именно с этих цифр начнётся подготовка к следующему пику.

Проверьте свою готовность

Ответьте «да» или «нет»:

 

1. Вы знаете пиковую нагрузку прошлой распродажи с точностью до минуты?

2. Нагрузочный тест в этом сезоне проводили по сценариям покупателя, включая промокоды и оплату?

3. Есть список внешних сервисов с их лимитами, и провайдеры предупреждены о пике?

4. Проверено, что последнюю единицу товара не могут купить два человека?

5. Известно, что произойдёт с кэшем и поиском при массовой смене цен в момент старта?

6. Определено, что можно отключить на пике, и это отключение проверено?

7. Есть мониторинг заказов в минуту и доли успешных оплат с оповещениями?

8. Назначена дата заморозки релизов?

9. Известно, кто дежурит и кто принимает решение об отключении функций и откате?

 

Если «нет» набралось три и больше, пик распродажи станет нагрузочным тестом на реальных покупателях.

Мы в IT Test помогаем подготовить магазин к пиковым продажам: считаем профиль нагрузки по данным прошлых распродаж, проводим нагрузочное тестирование ключевых сценариев и проверяем, как система ведёт себя при отказе внешних сервисов. Если до вашей распродажи осталось мало времени, начнём с самого критичного — пути покупателя от поиска до оплаты.

Мы применяем Cookie-файлы, чтобы сделать сайт лучше для вас. Продолжая пользоваться сайтом, вы соглашаетесь с Политикой использования Cookie .