К содержанию
В работеПоследний релиз · 4 часа назадАктивных проектов · 6Ответ в течение 4 часовБез посредниковMMXXVIВ работеПоследний релиз · 4 часа назадАктивных проектов · 6Ответ в течение 4 часовБез посредниковMMXXVIВ работеПоследний релиз · 4 часа назадАктивных проектов · 6Ответ в течение 4 часовБез посредниковMMXXVI
SmartyDevs
Модернизация · 01

Модернизация без переписывания.

Legacy-кодовые базы переплатформируются инкрементально — strangler-fig миграция, параллельная работа, без feature-freeze. Сделали достаточно таких проектов, чтобы знать, какие паттерны работают, а какие производят второе провальное переписывание подряд.

§ 01Задача

Какую проблему решаем

Большинство модернизаций legacy анонсируются как переписывание, идут два года, не выпускают ничего пригодного и заканчиваются с исходной системой в продакшене. Мы не делаем переписывания. Мы strangle legacy сервис за сервисом, с параллельной работой, за feature flags, пока вы продолжаете выпускать продукт. Legacy уходит в отставку, когда новый код заслужил трафик — а не когда план проекта говорит должен.

§ 02Что делаем

Что делаем

  • 01Strangler-fig миграция на уровнях кода, сервиса и данных
  • 02Anti-corruption слои между legacy и современными системами
  • 03Модернизация БД с dual-write и back-fill стратегиями
  • 04API-перевод между legacy и современными контрактами
  • 05Инкрементальный cutover за feature-flag'ами
  • 06Параллельная работа с consistency-сравнением
  • 07Тестовое покрытие, ретроактивно построенное вокруг legacy-поведения
  • 08Документация legacy-поведения — часто впервые
  • 09Честная оценка того, что можно модернизировать, а что должно уйти в отставку
§ 03Что получаете

Что получаете

  • Фазированный план миграции с риском и откатом на каждом шаге
  • Модернизированная система, работающая параллельно, пока не наберётся уверенность
  • Задокументированное legacy-поведение, которое ваша команда сможет защитить
  • План вывода legacy-системы из эксплуатации
§ 04Стек

Паттерны, которые используем

Strangler-fig pattern
Anti-corruption layer
Dual-write с верификацией консистентности
Event-driven миграция с CDC
Feature flags для cutover
Shadow-трафик и сравнение
Branch-by-abstraction
§ 05Подходит

Подходит

  • Компаниям с кодовой базой 5+ лет, замедляющей каждое изменение
  • Командам, чья прошлая попытка переписывания провалилась
  • Инженерным лидерам, унаследовавшим legacy-системы, которые нельзя рисковать заменить
  • Компаниям под давлением acquisition модернизироваться
§ 06Процесс

Как идёт проект

  1. 01

    Карта legacy

    Документируем, что там реально лежит — поведение, интеграции, неявные контракты. Часто впервые записывается.

  2. 02

    План strangulation

    Какие слайсы мигрируют первыми, в каком порядке, с каким fallback. Письменный план подписан руководством.

  3. 03

    Миграция слайсами

    Сервис за сервисом, за feature-flag'ами, с параллельной работой, пока не наберётся уверенность.

  4. 04

    Вывод

    Legacy-код выводится только после того, как новый заслужил трафик.

§ 07Сотрудничество

Как сотрудничать

01

Стратегия модернизации

4 — 6 недель

Письменная оценка, целевая архитектура и фазированный план.

02

Программа модернизации

6 — 24 месяца

Фазированное выполнение рядом с вашей командой, квартальные этапы.

03

Точечная модернизация

8 — 16 недель

Одна конкретная подсистема извлечена и модернизирована.

§ 08Частые вопросы

Часто спрашивают.

01Порекомендуете ли переписывание?

Почти никогда. Переписывания проваливаются часто и почти всегда дороже инкрементальной миграции. Скажем, когда переписывание действительно дешевле — но это редко.

02Можем ли продолжать выпускать продукт во время этого?

Да — в этом весь смысл strangler-fig. Никогда не нужен feature-freeze.

Есть задача, которую хочется сделать как следует?

Напишите, какой результат нужен. Честно скажем, во что это обойдётся — в письменном виде, в течение недели.

Обсудить задачу