01 01234567890 01234567890

MagiJewelry

Интернет-магазин Новый чекаут за двое суток и три месяца рефакторинга без простоя
MagiJewelry
КЛИЕНТ
MagiJewelry
ТИП
Интернет-магазин
СТЕК
OpenCart 4, PHP 8.3, MySQL, Redis, Manticore, Docker
ГОД
2026

Заменили оформление заказа за двое суток. Магазин не выключали

У владельца интернет-магазина есть одна кнопка, которую страшнее всего трогать, — оформление заказа. В MagiJewelry она держалась на стороннем плагине: больше двадцати пяти скриптов и стилей при каждой загрузке, собственный мини-фреймворк внутри, зависимости от трёх других расширений и общий счётчик загрузки, из-за которого один лишний файл превращал форму заказа в неработающую.

При этом магазин продавал каждый день, тестов в проекте не было, а прошлые подрядчики не оставили ни документации, ни контактов. Обычный ответ в такой ситуации — «давайте перепишем сайт целиком». Мы считаем это способом переложить риск на заказчика.

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

Устройство выбрали намеренно скучное: форма и корзина приходят с сервера готовыми, запросами догружаются только расчёт доставки и способы оплаты. Вход сделали по email и одноразовому коду — паролей, которые все забывают, на пути к покупке больше нет. К концу вторых суток чекаут был опубликован, кэш включён, рядом поднято тестовое окружение.

Слева — стороннее расширение с двумя десятками скриптов и общим счётчиком загрузки, справа — собственный чекаут: сервер отдаёт форму готовой

Слева — стороннее расширение с двумя десятками скриптов и общим счётчиком загрузки, справа — собственный чекаут: сервер отдаёт форму готовой

Дальше пошли три месяца порядка. Разведка по пяти направлениям дала 26 задач: из проекта выкинули огромную неиспользуемую библиотеку, вернули доступ поисковым роботам Apple и Common Crawl, которых прошлый подрядчик закрыл списком в настройках сервера, включили нормальную отложенную загрузку картинок, починили четыре ошибки в поиске по магазину.

Отдельным заходом — техническая оптимизация для поисковых систем. Появились карта сайта и правила для роботов, которых физически не было. Несуществующие адреса перестали отдавать главную страницу с кодом «всё в порядке». Исчезли одинаковые заголовки и описания у товаров, страницы без заголовка и тексты «информация готовится».

Три месяца правок на живом магазине — и ни одной аварии, которую заметил бы покупатель

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

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

"Данные одинаково хорошо объяснялись двумя причинами: техническим отказом и осознанным уходом покупателя на последнем шаге. Мы выбрали первую и не проверили вторую — хотя ответ лежал в видимом тексте страницы."

— из журнала работ по проекту, разбор нашего ошибочного вывода об оплате

Эту запись мы приводим намеренно. Журнал работ на проекте ведётся как хроника: находка, правка, предпросмотр, проверка, публикация — и туда же дословно попадают наши собственные ошибочные выводы. Заказчик видит не отчёт об успехах, а ход работы, включая моменты, где мы ошиблись и исправились.

Что не закрыто, мы тоже говорим вслух. Переход на HTTP/2 требует пересборки окружения и отдельного окна работ. Перенос правок ядра в штатный механизм расширений оценён отдельно и ждёт обновления платформы. А пока в шапке висит баннер технических работ, вкладываться в поисковый трафик рано — это решение владельца, и мы с ним согласны.

OSK Cargo
Следующий проект Landing Page
OSK Cargo