Мебель и интерьер
Интернет-магазин
Июнь 2026
Клиент: Artfabric - марка дизайнерской мебели и декора. Интернет-магазин с каталогом на 2 200 позиций, собственный склад в Санкт-Петербурге, салоны в Москве и Петербурге. Ситуация на входе: проект достался в наследство как legacy на Laravel. Страницы каталога открывались около пяти секунд, поиск по товарам работал медленно, потребление памяти на сервере было избыточным. Архитектура монолитная: любая правка затрагивала всю систему целиком, поэтому каждый релиз нёс риск уронить работающий магазин. Развивать продукт в таком виде было дорого и опасно. Задача: переписать платформу на современный стек, разделить её на независимые части, ускорить отдачу страниц и параллельно выкатить новый дизайн витрины по макетам дизайнера. Ключевое ограничение: магазин действующий, продажи идут ежедневно, салоны работают. Останавливать торговлю на время переезда было нельзя.
Проект вёл один разработчик — от архитектуры до эксплуатации в проде.
Разнесли систему на семь независимо деплоящихся сервисов на Go:
публичный REST API
SSR-фронтенд витрины
админ-панель
личный кабинет клиента
AI-сервис для внутренних задач
генератор коммерческих предложений
сервис экспорта товарных фидов
Каждый сервис — отдельный репозиторий со своим пайплайном. Релиз одного не затрагивает остальные, нагруженные части масштабируются отдельно.
Бэкенд переписали с Laravel и PHP на Go, использовали Fiber и Chi. Go выбрали ради скорости отдачи и предсказуемого потребления памяти под нагрузкой.
Отказались от одностраничного приложения в пользу SSR на Templ и HTMX. Решение принимали осознанно: для магазина с каталогом на 2 200 позиций органический трафик важнее клиентской интерактивности. Серверный рендеринг дал быструю первую отрисовку и полную индексируемость каталога поисковиками, а заодно убрал дублирование бизнес-логики между фронтендом и бэкендом.
Полнотекстовый поиск по каталогу вынесли в Meilisearch с автоматической деградацией на pg_trgm при недоступности индекса. Часто запрашиваемые данные закрыли кешем на Redis, что сняло пиковую нагрузку с PostgreSQL.
Параллельно с миграцией выкатили новый дизайн витрины по макетам дизайнера. Новая витрина сразу собиралась на новом стеке, без промежуточной вёрстки под старую систему.
Сервисы поднимались и обкатывались параллельно с работающим монолитом: пока новая версия проверялась на реальных данных, магазин продолжал торговать на старой. Финальное переключение основного сайта выполнили за одно ночное окно с сохранённой возможностью отката.
Развернули self-hosted GitLab, настроили CI/CD с автоматическим деплоем. Выкатка сократилась с ручной процедуры до одного пуша.
Время загрузки страниц каталога сократилось с ~5 секунд до долей секунды.
Потребление памяти на сервере снизилось кратно — прежнее железо стало держать заметно большую нагрузку.
Поиск по каталогу из 2 200 позиций работает мгновенно, пиковая нагрузка на базу снизилась в разы.
Релиз или отказ одного из семи сервисов больше не затрагивает остальные.
Нагруженные части системы масштабируются отдельно, без апгрейда всей платформы.
Выкатка сократилась с ручной процедуры до одного пуша — новые функции доходят до прода в тот же день.
Магазин не простоял ни дня: продажи и работа салонов в период миграции не прерывались.
Каталог на 2 200 позиций полностью отдаётся сервером и индексируется поисковиками.
Новая витрина по макетам дизайнера выкатилась одновременно с переездом на новый стек — без промежуточной вёрстки под старую систему.
Платформа продолжает развиваться на новой архитектуре: с момента переезда добавлены AI-сервис для контент-команды, генератор коммерческих предложений и автоматический экспорт товарных фидов.
![]()
Андрей Любиченко
Fullstack-разработчик
Самым сложным в проекте была не сама миграция, а условие не останавливать магазин. Действующая торговля, склад, два салона — простой означал бы прямые потери. Поэтому переезжали поэтапно: новые сервисы месяцами работали рядом со старым монолитом на реальных данных, и только когда стало понятно, что всё сходится, переключили основной сайт за одну ночь с сохранённой возможностью отката. Это дольше и дороже, чем переписать всё разом, но единственный честный способ трогать систему, на которой держится бизнес клиента.
С#
Go (Golang)
PHP
ASP.NET Core
Laravel
Vue.js
PostgreSQL
Redis
Node.js
Visual Studio Code
AmoCRM