Постепенный переход: как избавиться от 20-летнего кода на COBOL
Мейнфрейм-код, работающий более 20 лет, — это двигатель вашей организации. Однако к 2027 году 92% разработчиков на COBOL уйдут на пенсию. Подход «большого взрыва» (big bang), подразумевающий замену всей системы разом, приводит к провалу в 7 из 10 проектов. Вместо бездумного переписывания начните с разделения модулей, имеющих наибольшую бизнес-ценность.
Расставьте приоритеты, начиная с модулей с высокой частотой изменений
Разделите все модули с помощью матрицы IRC. Это метод оценки по параметрам: Влияние (Impact), Риск (Risk) и Сложность (Complexity). Не пытайтесь изменить монолит объемом в 1 миллион строк кода. Ваша цель — «горячие точки» (hotspots), составляющие 50 тысяч строк, которые меняются чаще всего.
- Проанализируйте логи Git. Выделите модули с наибольшей частотой правок за последний год. Если доля изменений кода превышает 25%, значит, это и есть «горячая точка».
- Классифицируйте каждый модуль от Tier 1 до Tier 4. В первую очередь переносите модули Tier 1 — функции, которыми пользуются клиенты напрямую и которые минимально влияют на ошибки данных.
- Отрисуйте потоки данных с помощью диаграмм Mermaid. Изолируйте наименее зависимые части, обернув их во внешние API, чтобы отделить от старого кода.
Это позволит сэкономить 40% первоначальных затрат по сравнению с полной переработкой. Маленькие победы избавляют команду от чувства тревоги.
Выявляйте расхождения в данных с помощью теневого выполнения
При переносе типа данных COMP-3 из COBOL в BigDecimal в Java возникают ошибки финансовых вычислений. Чтобы предотвратить сбои в работе, необходимо «теневое выполнение» (shadow execution) — одновременная прогонка одного и того же трафика через старую и новую системы.
- Внедрите прокси-инструмент, такой как Diffy. Он дублирует рабочий трафик и отправляет его в новую систему.
- Сравнивайте результаты работы старой и новой систем в режиме реального времени. Исключите меняющиеся значения (например, временные метки или ID) с помощью правил фильтрации.
- Добавьте в конвейер скрипт, который сопоставляет данные VSAM Copybook со схемой SQL. Настройте оповещения только на случай возникновения несоответствий.
Доказательство точности новой логики на реальных транзакциях устраняет риски остановки операционной деятельности.
Предотвращайте загрязнение легаси с помощью уровня защиты (ACL)
Необходимо предотвратить перенос запутанных легаси-моделей в новую систему. Используйте уровень защиты от повреждений (Anti-Corruption Layer, ACL) из предметно-ориентированного проектирования (DDD).
- Используйте паттерн «Фасад» (Facade). Оберните сложные вызовы легаси в простые REST API.
- Применяйте паттерн «Душитель» (Strangler Fig), разместив маршрутизирующий шлюз. Постепенно перенаправляйте трафик только на те функции, модернизация которых завершена.
- Используйте паттерн «Мост» (Bridge) для отделения вызывающей стороны от реализации. Вы сможете заменить внутреннюю логику, не затрагивая API-эндпоинты существующих смежных подразделений.
Пока легаси не исчезнет полностью, новая команда разработки сохраняет независимый стек. Когда модернизация будет завершена, достаточно будет просто удалить ACL.
Обеспечьте бюджет с помощью четырехслойной структуры TCO
Руководители реагируют не на технический долг, а на сумму потерь. Модернизация — это проект по снижению издержек. Согласно отчету Deloitte, 70–80% расходов на поддержку легаси обычно сильно недооценены.
- Суммируйте прямые затраты (MIPS), косвенные затраты (40% времени разработки, уходящего на «заплатки» легаси), затраты на соответствие требованиям и альтернативные издержки. Включите в отчет общую сумму потерь, возникающих при отказе от модернизации.
- Внесите в отчет ожидаемый эффект от перевода модулей Tier 1 в цифрах. Визуализируйте на дашборде, как сокращается цикл развертывания (с 6 месяцев до 2 недель) и время восстановления после сбоев (MTTR).
- Сошлитесь на пример банка ING. Пропишите в дорожной карте стратегию «теплого резерва» (warm standby) для мгновенного восстановления при неудачном переходе и 90-дневный план расширенной поддержки (hypercare).
Такой отчет — это не техническая авантюра. Это финансовая инвестиция, способная повысить рентабельность с 288% до 362%.