Strangler Fig Migration: Move from Monolith to Headless Without Downtime

Author: WebGoodPeople

Для кого: CTO и платформенные архитекторы, планирующие переход с CMS-монолита на headless-архитектуру. Пиллар: Architecture / Platform Цикл продаж: M3 — Decision CTO-сегмент: Architects

Проблема: страх миграции рационален


Большинство историй провалов в enterprise-разработке имеют один корень: кто-то попытался переписать всё сразу.

«Big bang» миграция — когда команда останавливает разработку фич, планирует полный переезд, мигрирует все данные и делает cutover в фиксированную дату — одновременно максимизирует несколько рисков:

  • Бизнес-риск: если что-то сломается, пострадает весь бизнес
  • Риск сроков: full rewrite почти всегда занимает дольше плана
  • Риск данных: одновременный перенос каталога, заказов, контента — вероятность ошибок высока
  • SLA-риск: длинные миграционные окна создают риск downtime

Результат: команды либо бесконечно откладывают («будем мигрировать, когда будем готовы»), либо запускают миграцию и сталкиваются с болезненным откатом.

Стоимость бездействия


Но есть и стоимость немиграции:

  • Frontend и backend остаются связанными — каждое изменение UI требует backend-участия
  • Скорость релизов ограничена самым медленным компонентом
  • Техдолг накапливается с каждым патч-слоем поверх монолита
  • Найм под легаси-стек становится труднее с каждым годом

Вопрос не «мигрировать или нет». Вопрос: «как мигрировать, не рискуя бизнесом?»

Подход: паттерн Strangler Fig


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

Ключевой принцип: мы не заменяем монолит. Мы строим маршрут вокруг него — user journey за user journey.

Механизм: по фазам


Фаза 0: Подготовка


  • Аудит текущих user journeys и их зависимостей от backend
  • Определение API-контракта для первого journey к миграции (какие данные нужны, в каком формате)
  • Baseline-метрики: скорость страницы, error rate, конверсия для целевого journey

Фаза 1: Первый journey за API-граничей


  • Выбираем journey с высокой ценностью и низкой связностью (обычно: листинг категории или поиск)
  • Строим новую реализацию на Next.js, потребляющую данные через API-адаптер
  • API-адаптер транслирует между новым фронтом и существующим backend (Bitrix или другим)
  • Пользователи этого не видят — работает параллельно

Фаза 2: Маршрутизация трафика


  • Направляем небольшой % трафика (например, 5-10%) на новую реализацию
  • Мониторим: latency, error rate, поведение пользователей, конверсия
  • Сравниваем с baseline
  • Откатываем, если что-то неожиданное — это одна команда в деплой-пайплайне

Фаза 3: Постепенное масштабирование


  • Увеличиваем долю трафика по мере роста уверенности: 25% → 50% → 100%
  • При 100% старая реализация этого journey уже не обслуживает трафик
  • Монолит продолжает существовать — он просто «задушен» для этого journey

Фаза 4: Повторение


  • Следующий journey: карточка товара, поиск, корзина/чекаут, личный кабинет
  • Каждая миграция следует тому же паттерну
  • Монолит сжимается; новая API-first система растёт

Что сохраняется на протяжении всего процесса


  • Выручка: трафик перенаправляется постепенно, а не в момент единого cutover
  • SLA: откат доступен на каждом этапе
  • Существующие интеграции: API-адаптер общается с Bitrix — CRM, склад, 1С не затрагиваются в ранних фазах
  • Ресурс команды: каждая фаза — ограниченный спринт, а не открытый rewrite

Ограничения (честно)


  • Этот подход занимает дольше, чем big-bang миграция
  • Поддержка API-адаптерного слоя добавляет engineering overhead в переходный период
  • Команде нужна дисциплина в версионировании API-контрактов
  • Если схема данных монолита сильно запутана, извлечение API-контрактов требует предварительного анализа

Типы доказательств для обоснования внутри компании


  • Поэтапный roadmap с определением milestone и критериями отката
  • Architecture blueprint с API-адаптерным слоем и механизмом маршрутизации
  • Baseline + target метрики для каждой фазы (не «станет лучше», а «вот что измеряем»)

CTA (M3: Decision)


Если вы готовите архитектурное решение или вам нужен roadmap миграции для презентации на техсовете — предлагаем бесплатный 1-часовой архитектурный разбор.

Мы разберём текущее состояние, определим, какие journeys мигрировать первыми, и составим поэтапный план с явными точками отката.

Записаться на архитектурный разбор: https://webgoodpeople.com/ru/contact?utm_source=article&utm_medium=blog&utm_campaign=strangler-fig-migration-guide

Посмотреть продукт: https://webgoodpeople.com/ru/products/headless-next-elasticsearch?utm_source=article&utm_medium=blog&utm_campaign=strangler-fig-migration-guide


Tell us about your project

Our offices

  • Russia
    Saint Petersburg, Rizhskaya st. 5, bldg. 1, office 402
    +7 (967) 555-90-32
  • Kazakhstan
    Almaty
    +7 (707) 340-29-12
Strangler Fig Migration: Move from Monolith to Headless Without Downtime — WebGoodPeople