Легаси — устаревшее программное обеспечение и код¶
Легаси (от англ. legacy — наследие, наследство) — в информационных технологиях устаревшая программа, система, код или технологический стек, который продолжает использоваться, хотя уже не соответствует современным стандартам, но при этом остаётся критически важным для работы организации. Термин описывает не столько возраст системы, сколько её состояние: неподдерживаемость, отсутствие документации, зависимость от устаревших платформ и высокую стоимость модернизации.
¶Происхождение термина
Слово «legacy» в значении «наследство» происходит от латинского legalis через старофранцузское legacie — «обязанности легата». В информационных технологиях термин получил распространение в 1990-х годах в связи с массовым переходом предприятий с мейнфреймов на клиент-серверные архитектуры. Крупные компании — банки, страховые, государственные структуры — обнаружили, что их критически важные системы работают на языках и платформах, которые уже почти никто не знает, но заменить их без остановки бизнеса невозможно.
¶Признаки легаси-системы
Легаси-система, как правило, обладает рядом характерных черт:
- Устаревшая технологическая база — работа на старых версиях ОС, СУБД, языках программирования (COBOL, Fortran, старые версии Visual Basic, PowerBuilder).
- Отсутствие или недостаток документации — исходный код либо плохо задокументирован, либо документация утеряна вместе с ушедшими разработчиками.
- Проблема «бусинок» (bus factor) — критическая зависимость от одного-двух сотрудников, которые понимают систему.
- Сложность интеграции — протоколы и форматы данных несовместимы с современными решениями.
- Высокая стоимость поддержки — аренда старого оборудования, лицензии, редкие специалисты.
- Отсутствие тестов — код эволюционировал годами без регрессионного тестирования.
¶Легаси в России
В российской практике термин «легаси» активно применяется в банковской и государственной сфере. Крупнейшие российские банки (Сбербанк, ВТБ, Газпромбанк) исторически строили ИТ-инфраструктуру на мейнфреймах IBM и Oracle-стеке, что к 2010-м годам привело к масштабным программам модернизации. Госсектор также столкнулся с легаси-системами при переходе на отечественное ПО: замена зарубежных СУБД (Oracle, Microsoft SQL Server) на российские аналоги (PostgreSQL-дистрибутивы, «Ред База Данных», «Элбрус-СУБД») требует переписывания тысяч приложений.
¶Стратегии работы с легаси
На практике применяется несколько подходов к легаси-системам:
| Стратегия | Суть | Применение |
|---|---|---|
| Полная замена (rewrite) | Разработка системы с нуля | Дорого, долго, высокий риск |
| Постепенная модернизация | Поочерёдная замена компонентов | Наиболее частый выбор |
| Обёртка (wrapping) | Программная оболочка поверх старой системы | Интеграция с новыми сервисами |
| Реинжиниринг | Анализ и перенос логики на новую платформу | Автоматизированные методы |
| Продолжение эксплуатации | Ничего не менять | Оправдано при стабильной системе |
¶Легаси-код в программировании
Помимо систем, термин применяется к отдельным фрагментам кода. Легаси-код — по определению Майкла Фигерса (Michael Feathers, «Working Effectively with Legacy Code», 2004) — это код без тестов. В широком смысле легаси-кодом называют любой работающий код, который никто не хочет трогать из-за риска сломать существующую функциональность.
¶Экономика легаси
По оценкам исследовательских компаний, в 2010-х годах на поддержку легаси-систем крупные организации тратили до 80 % ИТ-бюджета. В США значительная часть федеральной ИТ-инфраструктуры работает на COBOL-системах, написанных в 1960–1970-х годах; во время пандемии COVID-19 в 2020 году несколько штатов экстренно искали программистов COBOL для обновления систем социального обеспечения.
¶Интересные факты
- Мейнфреймы IBM System z до сих пор обрабатывают около 70 % транзакций по банковским картам в мире.
- В 2014 году NASA запустило космический аппарат «Лунар Риконнессанс Орбитер» на коде, часть которого была написана ещё в 1960-х годах.
- Термин «легаси» в русскоязычном ИТ-сообществе нередко используется как синоним слова «хлам», что не вполне корректно: легаси-система часто остаётся надёжной и функциональной.
Источники:
- Фигерс М. Working Effectively with Legacy Code. — Prentice Hall, 2004.
- Брукс Ф. The Mythical Man-Month. — Addison-Wesley, 1975 (изд. 20-летия, 1995).
- Беннетт К., Мак-Кинли Р. Working with Legacy Systems. — Addison-Wesley, 1997.
- Материалы конференций RIF.CIS, HighLoad++, DevOops (доклады о модернизации легаси-систем в российских банках).
