...продолжение (начало).
То же время, но место — в офисе Braind.
Команда проекта следит за мониторингами, чтобы видеть, что происходит с нагрузкой на сайт, который они разработали. Чем ближе к старту продаж, тем активнее начинает расти количество запросов. Буквально за несколько минут RPS вырастает в сотни раз.
Продажи построены так, что кнопка «Добавить в корзину» у товара должна появиться у всех пользователей строго в одно время. Чтобы не пропустить этот момент, за несколько минут до старта продаж тысячи людей на сайте нажимают «Обновить страницу» или держат F5 / cmd+R. Чем ближе к заветным секундам, тем сильнее возрастает частота обновления страницы.
На «невидимой» части проекта в это же время «ушлые» отправляют запросы в автоматическом режиме.
Вся эта нагрузка длится примерно 20 секунд. Самый быстрый случай — 7 секунд.
За это время пользователи оформляют столько заказов, сколько штук игрушек было заявлено на продажу. В одном заказе может быть только одна штука. То есть, в случае с продажей лошадки — 2 000 заказов (по количеству остатков).
Зависания, тупки и тормоза в работе такого проекта недопустимы. Несмотря на большие нагрузки, пользователи не должны их ощущать.
Для покупателей всё должно быть гладко: обновил страницу, появилась кнопка «Добавить в корзину», «Оформил заказ», «Оплатил», через какое-то время — «Получил посылку».
Такое требование накладывает определённые ограничения и на интерфейс проекта: с одной стороны, каждое решение в нём должно быть спроектировано с учётом создаваемой нагрузки на сервер, с другой стороны, оно должно соответствовать привычным паттернам покупки в интернете.
Этот проект — отражение нашего опыта работы в хайлоаде! Как в техническом плане, так и в плане интерфейса.
Второе и третье фото — это скрины из мониторинга на одной из последних продаж. На них видно, как почти от нуля за короткое время RPS растёт до 2250, при этом время ответов сервера — стабильно. И это далеко не предел для этого проекта.
Ссылка на проект — в первом комментарии. Не забудьте ❤️
Post #38
289



- ❤ 13
- 🔥 5
- ⚡ 3
- 🌚 1