Перейти к основному содержимому

О разделе "Легаси-код"

Легаси в IT — устойчивый термин для наследия — кода и систем, которые уже приносят деньги бизнесу (платежи, склад, отчёты, интеграции). Их нельзя выключить на выходные и переписать "красиво" — слишком высока цена простоя. Задача инженера — понять, безопасно менять и постепенно улучшать, опираясь на факты, а не на легенды о "коде предков".

В разделе — практический путь — от определений и признаков до реверса, тестов, рефакторинга и стратегий замены (Strangler Fig, clean room). Много примеров кода — как зафиксировать странное поведение тестом, где искать "шов" для подмены зависимости, как маршрутизировать трафик на новый сервис.


Для кого

  • Новичкам — что такое легаси в двух смыслах слова, чем "тихое" отличается от "кричащего", почему без тестов страшно трогать даже аккуратный код.
  • Разработчикам — characterization tests, seams, пошаговый рефакторинг, работа с бинарниками и git-историей.
  • Архитекторам — когда переписывание оправдано, как сосуществуют монолит и новые сервисы, зачем Anti-Corruption Layer.

Рекомендуемый порядок

ШагМатериалСодержание
1Что такое легаси и как его узнатьДва смысла термина, признаки, управляемое и критическое наследие, техдолг
2Понимание системыРеверс-инжиниринг, контекст из git и людей, диаграммы, бинарники
3Безопасные измененияРефакторинг, тесты, швы, Mikado, защита от регресса
4Стратегии модернизацииClean room, Strangler Fig, пошаговый план, инструменты, переписывание
5ИтогиРезюме раздела
6Чек-лист самопроверкиВопросы с привязкой к статьям

Если времени мало: 13 (как менять, не ломая) → 4 (если нужна замена целого куска системы).


Что здесь и чего нет

Здесь — работа с существующим кодом и знаниями о нём. Детали CI/CD, облачной миграции БД, контейнеризации и кибербезопасности затронуты только там, где они связаны с легаси; углублённо эти темы живут в главах про тестирование, инфраструктуру и архитектуру. Переходные паттерны (Strangler Fig, Parallel Run, CDC и др.) — в обзоре по архитектуре; Strangler Fig подробно — в Strangler Fig.

Базовая теория (глава 2) — если при реверсе непонятны интеграции и контуры: типы взаимодействия, интеграционные потоки, очереди и брокеры, сеть и интернет. Ручная проверка старого API — curl.

Базовая теория (глава 3) — миграция данных и схем при Strangler Fig / CDC — пакетная работа с данными, опорные темы БД, управление РСУБД; сверка после переноса — SQL для тестировщика.

Базовая теория (глава 4) — без понимания кода реверс и рефакторинг превращаются в угадывание:

Вопрос при работе с легасиТеория
Как читать чужой модуль, "швы" для тестовКод — о разделе · зависимости
Безопасный рефакторинг, приёмы ФаулераМетоды рефакторинга · безопасные изменения
История изменений, bisectОсновы Git — о разделе
Отладка странного поведенияРазработка и отладка — о разделе
Как программа выполняется в памятиВыполнение кода — о разделе