О разделе "Легаси-код"
Легаси в IT — устойчивый термин для наследия — кода и систем, которые уже приносят деньги бизнесу (платежи, склад, отчёты, интеграции). Их нельзя выключить на выходные и переписать "красиво" — слишком высока цена простоя. Задача инженера — понять, безопасно менять и постепенно улучшать, опираясь на факты, а не на легенды о "коде предков".
В разделе — практический путь — от определений и признаков до реверса, тестов, рефакторинга и стратегий замены (Strangler Fig, clean room). Много примеров кода — как зафиксировать странное поведение тестом, где искать "шов" для подмены зависимости, как маршрутизировать трафик на новый сервис.
Для кого
- Новичкам — что такое легаси в двух смыслах слова, чем "тихое" отличается от "кричащего", почему без тестов страшно трогать даже аккуратный код.
- Разработчикам — characterization tests, seams, пошаговый рефакторинг, работа с бинарниками и git-историей.
- Архитекторам — когда переписывание оправдано, как сосуществуют монолит и новые сервисы, зачем Anti-Corruption Layer.
Рекомендуемый порядок
| Шаг | Материал | Содержание |
|---|---|---|
| 1 | Что такое легаси и как его узнать | Два смысла термина, признаки, управляемое и критическое наследие, техдолг |
| 2 | Понимание системы | Реверс-инжиниринг, контекст из git и людей, диаграммы, бинарники |
| 3 | Безопасные изменения | Рефакторинг, тесты, швы, Mikado, защита от регресса |
| 4 | Стратегии модернизации | Clean room, Strangler Fig, пошаговый план, инструменты, переписывание |
| 5 | Итоги | Резюме раздела |
| 6 | Чек-лист самопроверки | Вопросы с привязкой к статьям |
Если времени мало: 1 → 3 (как менять, не ломая) → 4 (если нужна замена целого куска системы).
Что здесь и чего нет
Здесь — работа с существующим кодом и знаниями о нём. Детали CI/CD, облачной миграции БД, контейнеризации и кибербезопасности затронуты только там, где они связаны с легаси; углублённо эти темы живут в главах про тестирование, инфраструктуру и архитектуру. Переходные паттерны (Strangler Fig, Parallel Run, CDC и др.) — в обзоре по архитектуре; Strangler Fig подробно — в Strangler Fig.
Базовая теория (глава 2) — если при реверсе непонятны интеграции и контуры: типы взаимодействия, интеграционные потоки, очереди и брокеры, сеть и интернет. Ручная проверка старого API — curl.
Базовая теория (глава 3) — миграция данных и схем при Strangler Fig / CDC — пакетная работа с данными, опорные темы БД, управление РСУБД; сверка после переноса — SQL для тестировщика.
Базовая теория (глава 4) — без понимания кода реверс и рефакторинг превращаются в угадывание:
| Вопрос при работе с легаси | Теория |
|---|---|
| Как читать чужой модуль, "швы" для тестов | Код — о разделе · зависимости |
| Безопасный рефакторинг, приёмы Фаулера | Методы рефакторинга · безопасные изменения |
| История изменений, bisect | Основы Git — о разделе |
| Отладка странного поведения | Разработка и отладка — о разделе |
| Как программа выполняется в памяти | Выполнение кода — о разделе |
Что такое легаси и как его узнать
Два смысла термина, признаки "тихого" и "кричащего" наследия, управляемое и критическое легаси, связь с техдолгом.
Понимание легаси-системы
Реверс-инжиниринг, восстановление контекста из git и людей, диаграммы, анализ бинарников.
Безопасные изменения в легаси
Рефакторинг, characterization tests, швы (seams), приёмы Фезерса, Mikado, защита от регресса.
Стратегии модернизации легаси
Стратегии модернизации легаси для новичков: Strangler Fig, ACL, clean room, цикл из семи шагов, shadow-прогон, инструменты и критерии полного rewrite.
Легаси-код — итоги
Итоги раздела "Легаси-код" для новичков: два смысла термина, типы наследия, три опоры (понять, безопасно менять, модернизировать), правила команды и мини-словарь.
Легаси-код — чек-лист
Вопросы по разделу "Легаси-код" с привязкой к статьям 1–4; темы из других глав энциклопедии помечены отдельно.
Легаси-код — о разделе
Подборка материалов раздела Легаси-код в энциклопедии Вселенная IT