Мазмұнға өту
N1
Legacy · Bitrix24 · strangler-көшіру

Сатылымды тоқтатпай мәміле рәсімдеу ядросын қайта жазу

Клиент: Автомобиль маркетплейсі, NDA Санат: Legacy Стек: PHP 8.3, Bitrix24 D7, 1С (HTTP API), feature-флагтар, паритеттің CLI-тесттері, cron Мерзім: шамамен 2 ай, кезең-кезеңмен
Мәселе

Мәмілені рәсімдеу — алдын ала келісімшарттан авто беруге дейін — legacy-скриптке сүйенетін, онда 1С-ке арналған пакетті жинаудың өзі шамамен 2500 жолды алатын. Кез келген түзету барлық автоорталықтарда сатылымды тоқтатып қоюы мүмкін еді, ал тесттер мүлдем жоқ болатын.

Шектеулер

Сатылымды бір сағатқа да тоқтатуға болмайды; legacy көшірумен қатар өзгеруін жалғастырады; жұмыс істеп тұрған 1С-ке тексеру жіберулеріне тыйым салынған — тек оқу арқылы салыстыруға болады.

Не істедім
  • Мәміле картасының алты түймесі, келісу және алдын ала тексеру беттері жаңа модульге кесінділермен көшірілді, әрқайсысы — өз флагының артында
  • Көлеңкелі салыстыру: нақты жіберу кезінде жаңа код пакетті қатар жинайды, ал жіберуді бұрынғыша legacy орындайды, сәйкессіздік құрылымдық диффпен журналға жазылады
  • Legacy-мен паритет-тесттер: воронкалар бойынша 812 тексеру, түйме құқықтары бойынша 787 тексеру және 49 legacy-файлдың md5 бойынша дрейф бақылаушысы
  • «Барлығына / пилот / ешкімге» үш позициялы флагтар және бір командамен кері қайтару — функция, қызметкер немесе бүкіл пилот үшін
  • Порт legacy-ді екінші воронка — жүрісі бар авто — бойынша және көшіру кезінде legacy-ге енгізілген барлық түзетулер бойынша қуып жетті
Архитектура
Әр сұранысқа флаг → Жаңа модуль немесе legacy → Пакетті көлеңкелі салыстыру → 1С клиенті → Паритет-тесттер және дрейф бақылаушысы
Нәтиже

Жаңа ядро дайын және 2026 жылғы қыркүйекте продқа флагтар арқылы шығарылып жатыр: көлеңкелі салыстыру 468 жіберудің 468-інде сәйкес келді, паритет-тесттер жасыл, ал ескі код толық ауысқанға дейін қосалқы жол ретінде қалады.

Нені қайта қолдануға болады
«Барлығына / пилот / ешкімге» флагтары бар strangler-схема Жаңа кодты нақты трафикте көлеңкелі салыстыру Legacy дрейфін md5 бойынша бақылаушы