Миграция самописной системы на Laravel
без потери данных и трафика
Самописная система работает годами, но её понимает один человек: логика размазана по файлам на тысячи строк, документации нет, а любая правка грозит неожиданным последствием.
Переводим систему на Laravel: восстанавливаем логику по коду и интервью, описываем её документально, переносим данные и интеграции — и передаём проект, который сможет развивать любая команда.
Посмотрим вашу систему, данные и интеграции. Скажем, сколько это займёт, что переносится, а что придётся делать заново.
Ответ 15 мин
Почему уходят
Самописная система: что перестаёт устраивать
Каждый пункт — не «мода на новый фреймворк», а конкретная проблема, которая стоит денег
или времени. Проверьте, сколько из них про вас.
01
Логику знает один человек
Код писался годами, документации нет: понимание системы живёт в голове автора или администратора, который давно занят другим.
Что делаем: Восстанавливаем логику по коду, схеме базы и интервью с сотрудниками и описываем документально. Знание перестаёт быть личным активом.
02
Правка ломает то, что рядом
Логика перемешана с разметкой: изменение в одном файле неожиданно влияет на другой раздел, а тестов, которые это поймают, нет.
Что делаем: Разделяем слои: данные, логика, представление. Критичные сценарии покрываем тестами, поэтому регресс видно до релиза.
03
Разработчиков не найти
Уникальная архитектура отпугивает специалистов: чтобы что-то поправить, нужно неделю читать код. Найм превращается в поиск того самого автора.
Что делаем: Проект на Laravel с документацией ведёт любая PHP-команда. Замена разработчика перестаёт быть проблемой бизнеса.
04
Уязвимости и утечки
Запросы собираются конкатенацией, пароли хранятся слабым хешем, файлы доступны по прямым ссылкам без проверки прав.
Что делаем: Закрываем типовые уязвимости на уровне фреймворка: подготовленные запросы, современное хеширование, права доступа к файлам и разграничение ролей.
05
Нет окружений и бэкапов
Правки вносятся прямо на боевом сервере, резервные копии делаются «иногда» и не проверяются на восстановление.
Что делаем: Настраиваем окружения, автоматические бэкапы с проверкой восстановления и релизы через CI/CD.
06
Данные расходятся
За годы в базе накопились дубли, неактуальные справочники и записи с неверными связями: отчёты не сходятся с реальностью.
Что делаем: Проводим инвентаризацию данных, описываем правила и чистим перед переносом. Дальше схема не даёт создавать несогласованности.
Карта переноса
Что переносим: Самописная система → Laravel
Переносится не «сайт», а данные, логика и связи между ними. Ниже — что именно
описывается и переносится, чтобы новая система работала как старая, только быстрее.
Логика
Бизнес-правила из кода
Расчёты и формулы
Сценарии обработки заявок
Права и роли
Отчёты и выборки
Данные
Схема базы и связи
История операций и заказов
Справочники и словари
Пользователи и доступы
Файлы и вложения
Интеграции
Внешние API
Платёжные системы
Обмены с 1С и учётными системами
Почта и уведомления
Задачи по расписанию
Публичная часть
Адреса и ЧПУ
Метаданные и заголовки
Формы и заявки
Sitemap и robots
Честно
Что не переносится один в один
Мы не обещаем «то же самое, только на Laravel»: часть вещей переносится смыслом,
а не кодом. Об этом лучше знать до старта, чем обнаружить в процессе.
Структура кода: её обычно нет как структуры, приложение проектируется заново.
Поведение «баг в баг»: часть поведения — следствие ошибок, повторять их в новой системе не нужно.
Ручные скрипты и разовые правки, которые выполнялись вручную годами.
Устаревшие библиотеки и подключения без менеджера зависимостей.
Прямые доступы к файлам и базе: в новой системе доступы разграничены.
Риски
Самописная система: риски и как мы их закрываем
У каждой системы свои ловушки. Мы называем их заранее и описываем, как закрываем —
до того, как они превратятся в сюрприз в середине проекта.
Логика недокументирована
Собираем карту функций по коду, базе и интервью. Спорные правила согласуем с заказчиком до разработки.
Данные с расхождениями
Дубли, битые связи и устаревшие справочники. Инвентаризация и правила очистки — отдельный этап.
Скрытые интеграции
Часть обменов работает через cron и «забытые» скрипты. Инвентаризуем всё, что обращается к базе и внешним сервисам.
Единственный носитель знания
Если автор доступен — проводим интервью; если нет, восстанавливаем поведение по данным и логам, фиксируя допущения письменно.
План
Как проходит миграция
Шесть этапов, каждый заканчивается проверяемым результатом. Бизнес продолжает работать:
старый контур не выключается, пока новый не докажет, что считает и отдаёт данные правильно.
011–3 недели
Аудит и карта системы
Разбираем текущую систему: схема данных, точки входа, интеграции, задачи по расписанию, реальные бизнес-правила. На выходе — карта системы и оценка объёма.
022–3 недели
Архитектура и план переноса
Проектируем схему данных на Laravel, выбираем стратегию перехода, описываем этапы, критерии приёмки и план по SEO-редиректам.
032–6 недель
Стенд и перенос данных
Поднимаем новый контур, переносим данные, сверяем суммы, связи и справочники. Разрабатываем модули, начиная с тех, что дают деньги.
04по ситуации
Параллельная работа
Новый и старый контуры работают одновременно: разделы переключаются по одному после сверки. Пользователи не замечают переезда.
052–5 дней
Переключение трафика
Переводим домен, включаем 301-редиректы по карте URL, проверяем sitemap, счётчики и цели. Контролируем индексацию и ошибки.
062–4 недели
Стабилизация и передача
Следим за метриками, правим найденное, обучаем команду, передаём документацию, доступы и регламенты.
Особенности плана: Самописная система
Инвентаризация — самый важный этап: без карты системы невозможно оценить объём и риски.
Начинаем с данных: схема и справочники описывают предметную область лучше любого кода.
Публичную часть переносим после того, как закрыты критичные сценарии и формы заявок.
Документацию пишем по ходу работы, а не в конце: она и есть главный результат проекта.
SEO и трафик
Трафик из поиска не должен просесть
Главный страх при переезде — потерять позиции. Поэтому SEO-часть мы делаем до переключения
и контролируем после, а не «посмотрим, что будет».
Карта URL до переезда
Собираем все адреса старой системы из базы, sitemap и логов: карточки, категории, пагинация, фильтры, старые ЧПУ.
301-редиректы 1:1
Совпадающие адреса сохраняем, остальные закрываем постоянными редиректами — без «главной страницы вместо товара».
Метаданные и заголовки
Переносим title, description, H1 и тексты, а не генерируем заново: поиск уже знает эти страницы.
Микроразметка
Товары, хлебные крошки, отзывы, FAQ — разметка сохраняется и валидируется заново на новом контуре.
Sitemap и robots
Актуальная карта сайта, корректные правила обхода, отсутствие закрытых от индексации нужных страниц.
Счётчики и цели
Метрика, аналитика, цели и события переносятся и проверяются до переключения, чтобы не потерять статистику.
Мониторинг после релиза
Следим за ошибками 404/500, индексацией и позициями первые недели — редиректы и обход проверяются на живом трафике.
Стек
На что переводим: Laravel и вокруг
Открытые технологии без лицензий. Стек подобран так, чтобы систему могла развивать
любая PHP-команда, а не только её автор.
Интерфейсы без перезагрузок: админка, таблицы, формы, фильтры.
PostgreSQL или MySQL
Нормализованная схема, индексы под реальные запросы, реплики для отчётов.
Redis
Кеш, сессии и очереди вместо файлового кеша и cron-скриптов.
Horizon и очереди
Фоновые задачи с повторами, приоритетами и мониторингом.
Тесты и CI/CD
Покрытие критичных сценариев, отдельные окружения, релизы и откаты в одну команду.
Наблюдаемость
Логи, метрики и алерты: видно ошибки и деградацию до жалоб пользователей.
API и интеграции
Явные контракты обмена с 1С, платежами, доставкой, CRM и маркетплейсами.
Когда миграция не нужна
Мы не берём проект, если переход не окупается: иногда дешевле починить текущую систему
или обновить её. Честный ответ экономит вам бюджет.
Система используется как есть и менять её не планируется: дешевле обеспечить бэкапы и закрыть уязвимости.
Объём кода небольшой — иногда дешевле написать заново по описанию процессов, а не переносить.
Планируется переход на готовый отраслевой продукт вместо собственной системы.
Форматы работ
Как можно начать
Можно взять только аудит и план — и внедрять своими силами. Можно мигрировать этапами.
Можно переписать систему целиком. Выбор зависит от состояния кода и от того, сколько бизнес
готов ждать.
Аудит и план миграции
Нужно понять объём работ, риски и стоимость до принятия решения.
Карта системы и данных
Схема данных на Laravel
План этапов и критерии приёмки
План SEO-редиректов
Оценка сроков и бюджета
фиксированная стоимостьАудит можно внедрять своими силами
С инвентаризации: описываем схему базы, находим все точки входа (страницы, формы, cron-задачи, интеграции) и восстанавливаем бизнес-правила по коду и интервью с сотрудниками. На выходе — карта системы и план переноса с оценкой. Без этого этапа любая оценка была бы фантазией.
Что если автор кода недоступен?
Это частая ситуация: восстанавливаем поведение по базе, логам, письмам и тому, как системой пользуются сотрудники. Все допущения фиксируем письменно и согласуем — так спорные места становятся явными до разработки, а не после запуска.
Переносится ли база данных как есть?
Схему переносим, но с проверкой: в самописных системах часто нет внешних ключей, есть дубли и записи с нарушенными связями. Мы описываем правила целостности, чистим данные и только потом переносим. Историю операций сохраняем: она нужна для сверок и отчётов.
Сколько времени занимает такой проект?
Инвентаризация и карта системы — 2–4 недели, проектирование и подготовка данных — 2–4 недели, перенос и разработка — от 8 недель, переключение и стабилизация — 2–4 недели. Разброс большой: он определяется объёмом кода и качеством данных, а не размером интерфейса.
Можно ли вести старую систему, пока идёт перенос?
Да, и обычно так и происходит. Новые функции в это время лучше не добавлять в старую систему, иначе переносить придётся дважды. Мы помогаем расставить приоритеты: что критично починить сейчас, а что подождёт до нового контура.
Как переносится база данных при миграции?
Схема переносится целиком, включая историю операций: заказы, платежи, заявки, справочники. Перед переносом проверяем целостность данных и чистим дубли. На новом контуре схема нормализуется: появляются типы, ограничения и внешние ключи, которые не дают создавать несогласованные записи. Сверку делаем выборочно вручную по ключевым таблицам, а не только отчётом из скрипта.
Как гарантируется, что трафик из поиска не просядет?
Карта URL собирается до переезда: из базы, sitemap и логов сервера. Совпадающие адреса сохраняются один в один, остальные закрываются 301-редиректами. Метаданные, заголовки и микроразметка переносятся, а не генерируются заново. После переключения мы следим за ошибками, индексацией и позициями — обычно это 2–4 недели наблюдения.
Что происходит с интеграциями: 1С, платежи, доставка, CRM?
Каждая описывается до разработки: что передаётся, как часто, что считается успехом и как видеть ошибки. В новой системе обмены становятся явными: журнал синхронизации, повторные попытки, алерты. Платёжные модули подключаем на тестовых аккаунтах до переключения трафика.
Можно ли обойтись без полного переноса?
Да. Варианты: укрепить текущую систему (закрыть уязвимости, добавить тесты, навести порядок в бэкапах), вынести отдельный модуль на Laravel и связать через API или шину, либо рефакторить по частям. На аудите мы говорим прямо, какой путь дешевле — иногда это отказ от полного переноса.
Сколько стоит миграция?
Стоимость зависит от объёма данных, числа интеграций, количества кастомной логики и требований к сохранению SEO. Аудит и план миграции фиксируются по цене заранее, дальше проект считается этапами с понятным результатом на каждом. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных, истории и трафика.
Что будет с сотрудниками, которые работают в старой системе?
Мы меняем систему, а не процессы: админка собирается под их задачи, а обучение входит в проект. Обычно новая админка нравится больше: понятные формы, живые таблицы, отчёты без участия разработчика. Для сложных мест пишем короткие инструкции.
Кому принадлежат код и данные после миграции?
Вам. Код, схема данных, документация, доступы и инфраструктура оформляются на вас с самого начала. Мы не удерживаем проект в своём контуре: его можно передать другой команде, а документация описывает систему так, чтобы ей мог заняться любой PHP-разработчик.
Что нужно от нас для старта?
Доступ к исходному коду и базе данных (или их копиям), список интеграций и сервисов, контакт человека, который знает бизнес-логику и процессы, и данные о том, что критично не потерять при переезде. Дальше мы работаем сами и показываем промежуточные результаты.
Следующий шаг
Разберём вашу систему
Посмотрим код, базу и интеграции. Скажем, что переносится, что придётся делать заново,
сколько это займёт и как сохранить трафик. Без обязательств.
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie
(Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия —
от него можно отказаться. Подробнее:
Политика использования cookie
и
обработка персональных данных.
Настройки cookie
Выберите, какие категории cookie можно использовать. Необходимые отключить нельзя:
без них не работают формы и сессия.