Разработка платформы для гипермакета из топ-10
Для этого проекта мы использовали фреймворк Yii — потому что хорошо его знаем и потому что он один из самых быстрых.
Для частичной экономии времени, чтобы не собирать заново базовые вещи вроде Access control, хранение товаров, и административную панель мы подобрали собранный на Yii2 движок магазина. Выбор пал на платформу DotPlant.
Изначально клиент хотел использовать для сайта движок 1С-Битрикс. К счастью, нам удалось его отговорить. Пускай и не с первого раза.
Была попытка запуска на движке Битрикс, но выяснилось, что на такие объемы товарного каталога он не рассчитан. Поэтому все касающееся каталога пришлось бы переписать, а это нивелировало все преимущества движка: обновления, модули, интеграции из коробки и магазин приложений.
Планируем архитектуру проекта

Второй особенностью проекта была работа с фильтром. Для гипермакета крайне важно создать удобный подборщик, а это значит, что нужно было решить, как это всё будет управляться. Нужно было реализовать следующий функционал:
Данный функционал у DotPlant нас не устраивал, поэтому мы его переписали полностью. Данные параметры клиент настраивает CSV-выгрузкой, потому что работать с таким объёмом данных через админку было бы очень долго.
Планируем дорожную карту
- Импорты каталогов со старого движка на новый
- Настройка поискового индекса для отображения каталога, остальные импорты
- Реализация отзывов, сравнение товаров
- Корзина, оформление заказов
- Личный кабинет
- Наполнение каталога, шлифовка работы с каталогом и фильтрами
- Выбор и доработка шаблонов
Как вы могли заметить, дизайном мы занялись только на седьмом этапе, спустя порядка 600 часов разработки.
На практике спринт/этап выглядит так:

Готовим шаблон
Мы не планировали разрабатывать уникальный дизайн, так как в этом нет особого смысла. Для проекта главное — грамотный UX, функционал, надежность и быстродействие.
Для экономии мы использовали готовые html-шаблоны для гипермаркетов и отталкиваясь от них, делали доработки уже под нашу структуру и функционал командой дизайнера и верстальщика. В среднем нам удалось сэкономить на этом не меньше 200 часов.
Шаблоны дорабатывали и отдавали на приёмку сразу в html.

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










Фильтруем по-умному
Главной фишкой нового сайта должен был стать фильтр. Клиент хотел, чтобы все значения товаров просчитывались наперед и показывались все возможное комбинации. При этом фильтр уже должен учитывать ранее выбранные значения.
Путей решения данной задачи несколько, первый — это просчитать все возможные цифры заранее. Проблема в том, что комбинаций огромное множество, и считать это всё наперед заняло бы прилично процессорного времени.
Второй вариант, считать это динамически. То есть фактически при каждой загрузке страницы по каждому из доступных значений характеристик товара нужно было запустить поиск и посчитать количество найденных товаров. Но если это делать через MySQL и PHP, который не умеет работать в многопоточном режиме, то наши тесты показали, что один такой запрос на самую большую категорию ноутбуки, с 16 тысячами товаров, занимал 30-40 секунд.
Мы решили доработать архитектуру поиска данных значений:
Как итог, ttn.by который смог

Чтобы вывести цифры для производителей, скрипт должен вызвать 4 раза поиск по каждому из них.
Onliner который не смог


