Как стать автором
Обновить

Комментарии 31

Спасибо! Отличная рекламная статья ни о чем.
Решите проблему с загрузкой сайта! Сайтом пользоваться невозможно, постоянно все висит, тупит, лагает, загрузки страниц долгие. Инет у меня нормальный, пробовал с разных машин, и смартов.
Пробовали выключить-включить? :-D
Хотелось бы конкретики, а не «рекламного баннера» на Хабре.
Можно я начну?
Например:
1. Почему перешли на Java с PHP?
2. «DDoS-ы на сайт временами встречаются»
— какими средствами боретесь? какие сервисы для защиты используете?
3. «сейчас за сайтом скрывается и множество бэк-офисных систем на различных технологиях»
— каких технологиях? Какого их применение?
4. «активно идёт реинжиниринг»
— какой? что под этим подразумевается? смена технологий? контейнеризация и оркестрация? отказ от Java в пользу более удобных и современных технологий или простой рефакторинг кода?
> 1. Почему перешли на Java с PHP?
наверное тут больше не PHP, а Битрикс виноват. С него переходят, когда подрастут, я думаю не надо говорить, почему.
Привет, статья планировалась как вводная, поэтому конкретики действительно мало.
Отвечу по пунктам:
  1. Проект на PHP достался нам по наследству от подрядчика. И мы его развивали и поддерживали некоторое время собственными силами. В какой-то момент, решили перейти на другую платформу, с функциональной точки зрения более интересную, которая написана на Java. Соответственно, для внедрения, была сформирована команда Java разработчиков. В итоге от стороннего решения отказались и стали писать свое. Да и в целом большая часть ПО в компании на Java, поэтому выбор стека был очевиден.
  2. С точки зрения разработки стараемся увеличить производительность наших приложений, чтобы быть более готовыми к критическим перегрузкам. Стараемся анализировать и фильтровать нелегитимный трафик на промежуточных узлах. Более подробно на данный момент, нет возможности ответить.
  3. Сайт, лишь вершина айсберга, которую видит конечный пользователь. Его функциональность обеспечивает множество систем.
    Система предварительного просмотра и редактирования товаров и категорийного дерева — служит для поиска контентных ошибок в атрибутах товара. То есть, чтобы товар попал на сайт, он должен быть отсмотрен и подтвержден для публикации в этой системе.
    Система расчета уровня сервиса — занимается расчетом стоимости и сроков курьерской доставки в различные населенные пункты в зависимости от состава пользовательской корзины.
    Система для работы операторов колл-центра, которые помогают пользователям с возникшими проблемами — не могут найти нужный товар или оформить заказ.
    И много других систем, отвечающих за синхронизацию товарных остатков, обновление информации о магазинах, обработке заказов и так далее. Мы обязательно расскажем о них более подробно в следующих публикациях.
  4. Ведется большая работа по оптимизации производительности и стабилизации сайта, о ней более подробно обязательно расскажем в будущем. От Java пока отказываться не собираемся, но смотрим и на другие JVM-based языки, у нас есть внутренние проекты на Scala, так же есть планы попробовать Kotlin на некоторых пилотных проектах.
Сначала хотели прочитать историю успеха типа. Потом вспомнили что сайт адски тормозит и на бэкэнде и на фронтэнде и что-то расхотелось читать как так получилось.
Реально, найти какой-то товар по быстрому настроив фильтры — фантастика.
Сейчас ради интереса первый раз посмотрели на ход загрузки.
Загрузка главной — 400 запросов, 46 секунд загрузка, 27 секунд рендер ДОМ.
Переход в какой-то раздел каталога — 300 запросов, 38 секунд загрузка, 17 секунд рендер ДОМ.
Как так-то вообще?
Может сказывается, что ищут только бекендщиков и фулл-стеков (судя по вакансиям)? Нормальной оптимизации во фронтенде там явно не хватает. Плюс куча каких-то сторонних сервисов используется. Может для маркетинга оно и надо, но меру надо знать.
Вы правы, в этом направлении нам есть над чем работать. Но где вы взяли такие цифры совершенно непонятно. Можете более подробно рассказать какие инструменты для измерения вы использовали и как эти измерения проводили. У меня иные цифры, на порядок ниже Ваших:
domInteractive — 850ms
domContentLoaded — 1049ms
loadEvent — 2750ms
Firefox, последний. webconsole, чистим кэш и открываем главную. Ждем полной загрузки загрузки. Вот прямо сейчас
401 requests
17.27 MB / 9.13 MB transferred
Finish: 49.60 s
DOMContentLoaded: 13.87 s
load: 20.85 s

Независимый тест
www.webpagetest.org/result/190621_KQ_3ea85ebbcde89ac79da8473ae66c75d9
Start render: 2.8s Last painted: 28.000s First interactive 22.780s
Fully loaded: 29.620s 500 requests
Ваши результаты в Firefox не могу прокомментировать, у меня они иные. А вот результат теста примерно похож, будем разбираться, спасибо.
В FF тестировали будучи залогинеными в ЛК, возможно разница из-за этого.
Вот вы и попались. Давно плююсь на сайт Спортмастера. Он работает криво почти на всех доступных мне ПК. Даже сейчас, проверил на ноуте: наводим мышь на «Каталог товаров» и в выпадающем списке активен только нижний пункт «Все для детей», а остальные пункты не активны, ну как так-то, а? И такая петрушка уже очень давно (ИМХО, так как после очередного захода, поплевавшись, опять давно не заходил).
Я думаю, что поведение которое вы описываете вполне корректно. Дело в том, что эти пункты меню, которые по Вашему мнению должны быть активны, не являются кликабельными (за исключением последнего пункта), а лишь раскрывают новые категории в правой части меню. Возможно поведение не совсем очевидное, спасибо.
а лишь раскрывают новые категории в правой части меню

… при наведении на пункты ничего не происходит. ??? Ну и ладно, пойду на другой сайт…
Лучше расскажите почему ваш сайт такой тормозной
Так они же написали, почему — чтобы отображать корректные остатки (наличие) товара и где, как и когда его можно получить.
ааа точно, что это я в самом деле… =)
Давайте может более конкретно, что и где по Вашему тормозит? Какие-то конкретные страницы? Действия?
тоже решил попробовать, набрал в поиске «палатка», нажал enter, и пару минут мне браузер писал, что читает данные с sportmaster.api.useinsider.com

Судя по тому, что useinsider.com про себя пишет — это платформа для магазинов?
СУдя по трейсу, вроде недалеко (5 мс), но что же оно там так долго-то делает?

Кажетя, простое действие — поискать (причем suggest выдал варианты довольно быстро, хотя тоже хочется оп-быстрее), и отдать результат поиска.

В итоге написали «По запросу «палатка» найденo 111 товаров», кажется, что результат в окне браузера должен начать появляться не позднее чем через секунду, для 111 товаров. (да и для 1000 товаров, по идее тоже, не должно такое действие занимать минуты)
Вот такой пользовательский опыт был у меня: заказываю товар на сайте, прохожу все шаги оформления заказа, списываю бонусы для частичной оплаты стоимости товара. Через пол часа приходит смс заказ отменён, товар закончился. Такое не может быть, подумал я, т.к. видел на днях этот товар там в большом количестве. Решил пойти в магазин лично. И действительно товар есть в достаточном количестве. Но как выяснилось уже в магазине это тот же самый товар того же самого производителя за ту же самую цену, но с другим штрих кодом, т.к. другая закупка.

Ну ок, беру товар, иду на кассу. Разумеется, рассчитываю на скидку бонусами, а мне кассир говорит на вашей карте нет бонусов. Как нет? А вот так. Спрашиваю куда же они делись? Никакого разумного ответа не получаю. Спрашиваю когда была последнее списание бонусов? называет мне какую-то дату пол года назад ещё в прошлом году. Тогда я уже сам захожу в приложение на смартфоне и вижу бонусов действительно нет, но последнее списание сегодня. И тут до меня доходит, что их не вернули за отменённый заказ. Узнаю почему не вернули бонусы, заказ же отменён, сказали возвращают только через сутки. В итоге их действительно вернули через сутки, но мне нужно было сейчас ими расплатиться.

Вывод: за отмененные заказы, которые частично были оплачены бонусами, бонусы нужно возвращать сразу же.
Я не смогу это как-то прокомментировать к сожалению. Могу лишь предположить, что возможно есть какие-то ограничения на мгновенный возврат бонусов. Спасибо за Ваш комментарий, он дойдет до адресата, не сомневайтесь.
Ну тогда и я попытаюсь. Заказывал кроссовки. Вовремя не успевал забрать и продлил заказ в первый раз. В последний день, пришел в магазин… а там инвентаризация. Ну да фиг с ним, подумал, что много разных служб внутри большой конторы не могут найти общий язык. Хотя не представляю что сложного в модуле отправки смс, для клиентов с активными заказами.

Пришел домой обратно, обнаруживаю что сам продлить заказ не могу, теперь только через колл-центр. Ок, звоню, продлеваю заказ. Вот тут хочу обратить внимание на нюанс. На сайте все корректно, заказ продлен, я вижу последний день когда могу забрать товар.
Собственно в этот последний день прихожу в магазин и… моих кроссовок нет. Один из сотрудников сказал, что 3 часа назад продал их из торгового зала. Давай разбираться, как так вышло… Выяснилось, что перед инвентаризацией все заказы отменяются, дабы не устроить пересорт.

Естественно ни сотрудники в зале не смогли увидеть корректную информацию по заказу, ни ваша внутренняя система учета остатков, ни сайт доступный для всех.
Если углубляться далее до размеров товаров — получится порядка 200 000 SKU. И по всем этим 200 000 надо обновлять остатки в масштабах 500 магазинов.

В 2019 году как-то даже неудобно про такое писать… Лет 15 назад (если не больше) решали (в одной известной тогда торговой сети) подобную задачу (правда магазинов у нас было чуть меньше — порядка 200-250, а SKU чуть больше — порядка 700 тыс.) не особенно напрягаясь и не считали это чем-то выдающимся (скорее само собой разумеющимся).
Мы не считаем это чем-то выдающимся, просто озвучили примерные цифры.
Тоже вот недавно пришлось воспользоваться мобильной версией сайта
Имеем
Процессор Qualcomm Snapdragon 625 MSM8953
Количество ядер процессора 8
Объем оперативной памяти 4 Г
Интернет 4Г 5 палок.
Chrome, всего 33 открытых вкладки + новая для Вашего сайта
Открытие страницы m.sportmaster — 3 сек
Поиск «шорты» клик на «плавательные шорты» — до открытия первых четырех рисунков 7 секунд,
клик на модель — 3 сек., какие то подтормаживания при прокрутке вниз.
В — общем будучи в магазине и пытаясь понять что мне нужно из того что там есть я «задолбался»
повторюсь (Количество ядер процессора 8
Объем оперативной памяти 4 Г
), а что быть с более худшими смартфонами?

Сайт Вашего конкурента Декатлона мин в 2 раза быстрее.
Очередная классная статья от Спортмастера про то, как создать себе трудности и потом их героически преодолевать. Примечательно, что некоторые негативные отзывы перекликаются с первой статьей о волшебной бонусной программе. То есть это уже тренд, молодцы. Несколько вопросов:
1. Я так понял, что Остин до сих пор с вашей подачки сидит на невнедренном решении или они таки смогли решить вопрос? Навскидку, их сайт как минимум не хуже работает, чем ваш.
2. Может вот тут собака зарыта? ---> В первую очередь пришло осознание того, что стандартные решения с нашими нагрузками (на тот момент и не сверхбольшими, но все-таки уже и не маленькими) работать не будут.
Не большие же нагрузки. Может, не приди такое осознание в первую очередь, глядишь, не надо было бы перевнедряться N раз и иметь 3 команды внедрения?
3. В чем суть статьи, за что хвалить, что лайкать?
Мы не пытаемся создавать себе трудности. Скорее наш «путь» не без ошибок, как и у всех.
По вашим вопросам:
  1. Остин, на данный момент — это решение на сторонней платформе. Я думаю фраза «работает не хуже» не вполне уместна для сравнения этих проектов.
  2. Все относительно. Тут дело не только в возрастающих нагрузках, а скорее в сложностях и ограничениях, возникающих при необходимости кастомизации компонентов какой-либо коробочной системы с течением времени. У каждого решения они свои. И в какой-то момент понимаешь, что мы сами сможем сделать лучше, имею ввиду конкретно для нашего проекта, для нашего бизнеса. Такая история у нас была с Битриксом.
  3. Статья о развитии нашего проекта, о пути, который мы прошли за эти годы, о принятых решениях и ошибках. Лайки — это личное дело каждого.
Стек на фронте по понятным причинам за это время не особо изменился — Java, Spring, Tomcat, ElasticSearch, Hazelcast всё так же хороши для наших нужд.


У вас тут либо опечатка, либо странный фронт. Если все таки опечатка, можете написать какой стек на фронте? JS фреимворки, или какой-нибудь thymeleaf(мало ли) для спринга?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий