Pull to refresh

Comments 23

Автор умеет только UX + SEO

А с большими магазинами дела не имел

Да, согласен с вами. В основном до 1 млн SKU. Можно пару советов что посмотреть с точки зрения больших проектов?

Бэк вам надо посмотреть. И вообще техническую часть, а не только продуктовую.

Из большой статьи 2/3 текста написано про UX, часть про SEO, а про бэк в сущности ничего. Если вы занимались большими проектами то проблемы серверной части стали бы приоритетней.

В заголовке указана разработка. Но в тексте больше про продукт. И это не соответствует ожиданиям. А так как текста много то реакция - раздражение.

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

понял. спасибо за обратную связь. надо добавить больше про back-end и серверную часть. поработаем над этим.

извините за резкий комментарий

да, поправьте пожалуйста или текст или заголовок на что-то соответствующее тексту статьи

да, конечно. отредактирую сейчас

В последнее время прямо тут на хабре я минимум трижды натыкался на обсуждение вопроса «что делать, если 100 человек одновременно хотят положить в корзину товар, остаток которого на складе — 50».

Я бы с благодарностью почитал, как эту проблему решаете вы.

Если мы говорим не о тех решениях, а о продуктовых, то могу рассказать. В таких случаях мы смотрим на бизнес-процессы в компании. Готовы ли они брать заказы в очередь как предварительный заказ или нет, как быстро они пополняют остатки и так далее. По сути мы садимся и спрашиваем: у вас 50 товаров, в магазин зашли 100 покупателей - что делаем. получает ответ от бизнеса и просто этот сценарий реализуем в вебе. Так как все на js (могу не корректно написать, я не тех спец) то каждый клик в корзину мы отслеживаем без перезагрузки страницы и легко считаем первые 50 товаров в корзину а остальным выводим уведомление о том, что товар под заказ. + корзина имеет ограничение по сессии. Чтобы товар не блокировать на долго.

получает ответ от бизнеса и …

…дорисовываем всю сову.

легко считаем первые 50 товаров в корзину

Ясно, с серьёзной нагрузкой вы дела никогда не имели. Что и как вы легко посчитаете, когда 100 человек одновременно нажмут кнопку «в корзину».

Больше вопросов нет, ответ для домашней странички зоомагазина в Мытищах мне известен.

одновременно прям одновременно - да, таких кейсов у нас нет. Мы работали с крупными проектами, но такого там не было. А много в РФ таких проектов, где в одну миллисекунду 100 человек на один товар нажимает положить в корзину? и не раз в год ситуация, а ежедневно? Можете прислать пример, мне интересно посмотреть на такие кейсы и подумать, как они справляются и что делают.

много в РФ таких проектов

Не знаю, я не владею никакой статистикой по рынку РФ.

где в одну миллисекунду

Зачем в миллисекунду? Ну пусть в секунду. В базу всё равно ходить — не отказоустойчивое решение.

100 человек на один товар нажимает положить в корзину?

В этом нет совершенно ничего сверхестественного, я думаю, что на всех маркетплейсах (Авито, там, и типа того) эта проблема решена.

Ну и, кроме того, это же не обязательно должны быть люди и товары. Курс валюты для магазина, торгующего за несколько валют, — это штука, которая обновляется 10-12 раз в секунду, а если валют больше двух — то там комбинаторика.

я просто сам вопрос наверное не понял. если вопрос в том, как мы справляемся с обращениями в БД, то тут я не помогу) это не ко мне вопрос, к сожалению) но у нас есть проекты с миллионными трафиками (контентные) и все работает как часы)

Да, кстати, два человека одновременно тыкают в кнопку купить при остатке 1 — это та же проблема даже вне хайлоада.

Для самого-самого обычного е-кома (в чём собственно и рубится автор статьи), просто забор остатков чаще 1 раз в 12 часов - это уже проблема. А вы говорите о таких вещах, до которых они ну может лет через 10 дойдут.

а что для вас самый обычный e-comm? у нас есть много мелких проектов, есть проекты с 1 млн SKU. Да, проектов типо валдберис и ozoon нет, да такие проекты на аутсорсе и не делают. Я думаю 90% рынка e-com в СНГ в лучшем случае 1 раз в 12 часов обновляются. Конечно, самые крупные и топы - скорее всего сквозная интеграция и обновления идет в реальном времени. Но я пишу о том, над чем реально работаем, а не придуманные красивые проекты.

я бы решал так

100 покупателей тянут руки к продавцу и у него на столе 50 товаров

вариант 1) продавец в любом порядке берет деньги и выдает товар (или чек или пишет у себя в тетрадке или делает update в БД - неважно), через 50 итераций товар заканчивается и остальные получает ответ "товара нет". Из-за ненулевого времени блокировки записи о количестве товара 50-му придется немного подождать, но в общем то нормально.

вариант 1б) продавец склада может раскидать товар по 10 прилавкам чтобы на каждом товар выдавался быстрее, через 50 итераций товар заканчивается и остальные получает ответ "товара нет".

вариант 2) покупатели дают продавцу свой номер телефона и уходят (это подписки), а он им звонит (говорит код по которому можно получить - детали не важны). Если за время до таймаута на склад попал дополнительный товар, еще 50 штук, то все покупатели будут с товаром, просто некоторые чуть позже.

вариант 3) все 100 покупателей кладут в корзинку чек, но когда покупатели доходят до оплаты некоторые будут огорчены. Овербукинг. Видел такие решения

комбинации из этих вариантов - резервирование на короткое время, если товар не оплачен все это время, то товар остается в корзине, но резерв уже снимается и это можно увидеть в корзине

с корзинкой или без, с резервированием или без - вариантов с десяток в зависимости от выгод и рисков для бизнеса

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

Ситуации, когда товар закончился в момент между финальным обновлением корзины и совершением заказа, обычно решают в ручном режиме звонком менеджера неудачливому клиенту, и на сто человек такое, конечно, не масштабируется.

Amazon и Temu, как минимум, решают, более того — показывают активную плашку поверх товара с индикатором «Осталось в наличии: 8».

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

менеджер подтверждает

Это не масштабируется, к сожалению.

Особенно, когда вы захотите предоставить API к вашему магазину («магазин» тут следует понимать в более широком смысле, как сервис с потенциально ограниченным ресурсом).

если API - то я бы вообще отдельный склад сделал бы и выносил бы его на отдельный сервер.

Платежные решения

  • Интеграция мобильных платежей (Apple Pay, Google Pay).

В РФ? Серьезно?

Мы из Минска. У нас все это работает. + большая часть проектов это Казахстан, Узбекистан, Европа. В РФ тоже есть, но для таких проектов есть особенность.

Sign up to leave a comment.

Articles