Rewrite - это не scope. Это симптом, который надо разобрать
Фраза «нам нужен rewrite» почти никогда не описывает работу.
Она описывает усталость.
Сайт медленный. Релизы тяжёлые. Подрядчик пропал. В Bitrix страшно трогать шаблоны. Маркетинг ждёт две недели простую посадочную страницу. CTO слышит от команды: «это проще переписать».
Иногда команда права. Иногда нет.
Проблема в том, что rewrite звучит как понятный план, хотя на старте это только гипотеза. Если сразу превратить её в смету, в проект поедут все скрытые риски: SEO, каталог, роли, checkout, 1C-обмен, CRM, контентная модель, миграция данных и ответственность за rollback.
Я бы не начинал такой разговор с бюджета. Я бы начинал с карты риска.
Что именно болит
Первый вопрос простой: что станет лучше, если завтра появится новый frontend?
Если ответ «сайт станет быстрее», надо проверить, где тормозит сейчас: SQL, шаблоны, API, изображения, фильтры, CDN, внешний сервис, персональные цены или поиск.
Если ответ «команда начнёт быстрее выпускать изменения», надо смотреть deploy flow, зависимости между backend и frontend, права контент-команды, очередь задач и то, где изменения ломают production.
Если ответ «мы уйдём от старого подрядчика», это уже не только архитектурная задача. Это transfer of ownership: документация, доступы, Git history, окружения, knowledge base и договорённость, кто принимает решения.
Один и тот же слово rewrite может означать три разных проекта.
Что нельзя трогать в первой итерации
В старых e-commerce проектах часть системы выглядит некрасиво, но зарабатывает деньги.
Например:
- checkout с кучей исторических правил скидок;
- личный кабинет с нестандартными ролями;
- 1C-обмен, который работает только потому, что его никто не трогал;
- SEO-страницы, которые собирают органику по старым URL;
- CRM-интеграция с ручными исключениями;
- выгрузка остатков, где бизнес-логика живёт не в коде, а в привычках команды.
Это не значит, что их нельзя модернизировать. Значит, их нельзя случайно включать в первый scope только потому, что слово rewrite звучит крупно.
Иногда лучший первый шаг - вынести каталог или поиск. Иногда - сделать новый слой для SEO-страниц. Иногда - оставить checkout в Bitrix и дать Next.js только read-only витрину.
Headless хорош не тем, что «всё новое». Он хорош тем, что можно вынести часть системы без пожара в остальной.
Почему fixed price здесь опасен
Для продуктового формата fixed price нормален: повторяемый scope, понятные ограничения, известная команда.
Для кастомного rewrite fixed price до discovery часто означает, что риск просто спрятали в формулировках.
Потом он вернётся:
- «мы не знали, что цены считаются через кастомный модуль»;
- «мы не закладывали отдельные правила для B2B-клиентов»;
- «мы думали, что фильтры можно перенести один к одному»;
- «мы не видели, что половина SEO-трафика сидит на индексируемых параметрах»;
- «нам не сказали, что менеджеры руками правят остатки перед акцией».
Честная оценка начинается после компактного discovery: предварительные требования, базовый scope, optional/client-specific функциональность, интеграции, данные, роли, workflow и acceptance criteria.
До этого можно оценить только первый work slice. Не весь переписанный мир.
Какой slice я бы выбирал
Хороший pilot должен быть маленьким, но не игрушечным.
Мне нравятся участки, где виден бизнес-эффект и технический риск:
- Одна каталоговая категория с тяжёлыми фильтрами.
- Поиск на реальных запросах и zero-results логах.
- SEO-посадочная страница поверх существующих данных.
- Read-only личный кабинет без оплаты и изменения заказов.
- API-контракт для товара, цены, наличия и картинок.
У pilot должны быть критерии. URL открывается. Данные совпадают. Метаданные не потеряны. Скорость лучше. Rollback понятен. Команда увидела Git Flow, staging и production checks.
Если pilot не проходит эти критерии, это не провал. Это дешёвое обнаружение риска.
Что получает owner или CTO
После нормального pre-rewrite audit должно быть понятно:
- какая боль реальная, а какая звучит громче остальных;
- что можно вынести первым без риска для продаж;
- что оставить в старом контуре до отдельного решения;
- какие данные и интеграции управляют стоимостью;
- какой pilot покажет результат без большого обещания;
- где нужен developer judgment, а где достаточно обычной задачи в backlog.
Это скучнее, чем презентация «перепишем на современный стек».
Зато это разговор, который можно защищать перед бизнесом. Не потому что архитектура красивая. Потому что следующий шаг ограничен, измерим и не требует верить на слово.
Связанное чтение: пять вопросов перед headless-предложением, перед rewrite Bitrix я считаю риск, а не бюджет, что остаётся в Bitrix при headless-переходе.