Перейти к содержимому
N1
Legacy · Bitrix24 · strangler-миграция

Переписать ядро оформления сделки, не останавливая продажи

Клиент: Автомобильный маркетплейс, NDA Категория: Legacy Стек: PHP 8.3, Bitrix24 D7, 1С (HTTP API), feature-флаги, CLI-тесты паритета, cron Срок: около 2 месяцев, поэтапно
Проблема

Оформление сделки — от предварительного договора до выдачи авто — держалось на легаси-скрипте, где одна только сборка пакета для 1С занимала около 2500 строк. Любая правка грозила остановить продажи во всех автоцентрах, а тестов не было.

Ограничения

Остановить продажи нельзя даже на час; легаси продолжает меняться параллельно с миграцией; проверочные отправки в боевую 1С запрещены — сверять можно только чтением.

Что сделал
  • Шесть кнопок карточки сделки, страницы согласования и предпроверки перенесены в новый модуль срезами, каждый — за своим флагом
  • Теневая сверка: на боевой отправке новый код собирает пакет параллельно, отправляет по-прежнему легаси, расхождение пишется в лог со структурным диффом
  • Паритет-тесты против легаси: 812 проверок по воронкам, 787 по правам кнопок и сторож дрейфа по md5 49 легаси-файлов
  • Трёхпозиционные флаги «всем / пилот / никому» и откат одной командой — для функции, сотрудника или всего пилота
  • Порт догнал легаси по второй воронке — авто с пробегом — и по всем правкам, внесённым в легаси за время миграции
Архитектура
Флаг на каждый запрос → Новый модуль или легаси → Теневая сверка пакета → Клиент 1С → Паритет-тесты и сторож дрейфа
Результат

Новое ядро готово и выкатывается на прод в сентябре 2026 по флагам: теневая сверка совпала в 468 из 468 отправок, паритет-тесты зелёные, а старый код остаётся запасным путём до полного переключения.

Что можно переиспользовать
Strangler-схема с флагами «всем / пилот / никому» Теневая сверка нового кода на боевом трафике Сторож дрейфа легаси по md5