уход с мейнфрейма
Модернизация мейнфрейма: COBOL и AS/400 на Go, Rust и TypeScript
Программы на COBOL, графы заданий JCL, экраны CICS, файлы VSAM и таблицы DB2 становятся Go-сервисами, обычным планировщиком, веб-клиентом и Postgres. Копибуки превращаются в типизированные структуры, упакованная десятичка остаётся десятичкой, и каждое задание сверяется с вашим продовым выводом до копейки, прежде чем взять работу на себя. AS/400 тоже: RPG, CL, файлы, описанные через DDS, экраны 5250. Тридцать дней на полный уход, и первый поток заданий переезжает за семь.
30 дней на полный уход; первый поток заданий переезжает за 7
Зелёные экраны уходят последними, и замена остаётся клавиатурной: на клавиатуре операторы быстрее, чем на мыши, а миграция, которая их замедляет, проваливается прямо за рабочим столом.
На z/OS
Граф заданий JCL, программы на COBOL, экраны 3270, снизу VSAM и DB2.
- BATCH.JCLJCL
- PAYCALCCOBOL
- CICS screens3270
- VSAM filesflat
- DB2z/OS
Снаружи
Go-сервисы на обычном планировщике, Postgres, веб-клиент, по которому операторы ходят с клавиатуры.
- batch runnerGo · cron
- paymentsGo
- web clientTypeScript
- postgresfrom VSAM + DB2
30 дней на полный уход; первый поток заданий переезжает за 7
Как идёт работа
- 01дни 1–5
Описать граф заданий
Каждый шаг JCL, каждый датасет, каждая программа, которую он вызывает, в виде графа. И то, о чём не говорят на старте: FTP-задание в три ночи, утилита, которую умеет перезапускать один человек.
- 02дни 4–12
Перевезти модель данных
Копибуки становятся типизированными структурами, VSAM и DB2 становятся таблицами Postgres. EBCDIC, упакованная десятичка и REDEFINES разбираются здесь, а не всплывают в последние дни.
- 035–9 дней на поток
Перенести поток и запустить оба
Новый поток идёт на тех же входах в ту же ночь, и вывод сравнивается запись за записью. Он забирает работу, когда расхождений нет или они записаны и согласованы.
- 04по подсистемам
Погасить регион
Транзакции CICS переезжают в веб-клиент, LPAR ужимается, и строка расходов на MIPS и лицензии наконец идёт вниз. Это та часть, о которой спрашивал ваш финансовый директор.
Что делает платформа, что делает человек
| Что делает платформа, что делает человек | Кто делает | Примечания |
|---|---|---|
| Разбирает COBOL, JCL и копибуки | Платформа | Вместе со странностями диалекта и копибуком, который включён одиннадцать раз с разными REDEFINES. |
| Выясняет, какие программы ещё живы | Вместе | Логи заданий отвечают на большую часть. Остальное требует человека, который помнит 2004 год. |
| Переводит программу | Платформа | Читается как пул-реквест и переписывается руками там, где машинный вывод читается как переведённый COBOL. |
| Арифметика с фиксированной точкой | Платформа | Десятичка остаётся десятичкой. Расхождение в одну копейку вылезает в сравнительном прогоне и валит его. |
| Экраны операторов | Инженер | Проектируются вместе с теми, кто в них работает, клавиатурными, с замером скорости против 3270. |
| Батч-окно и переключение | Инженер | Какая ночь, кто на дежурстве и как выглядит откат в четыре утра. |
| Разговор с вендором лицензий | Инженер | Свести уход с датами договора стоит настоящих денег, и это никто не автоматизирует. |
Кто делает работу
Инженеры, которые читают COBOL и RPG каждый день. Десятки миграций и больше десяти лет на таких же машинах: z/OS и AS/400, батч на JCL и транзакции CICS, VSAM, DB2 и IMS, копибуки с одиннадцатью REDEFINES, упакованная десятичка, которая обязана лечь до копейки. Ваши COBOL-разработчики будут говорить с инженерами, читающими тот же код, что и они.
Проверку предлагаем такую: один поток заданий, перенесённый и прогнанный на ваших продовых входах несколько циклов, с построчным диффом на столе. Вы читаете отчёт сравнения по своим данным, а не оцениваете наш маркетинг.
Вопросы, которые задают инженеры
- Почему Go, а не Java?
- Потому что батч-задание, которое стартует за миллисекунды и приезжает одним статическим бинарником, проще планировать и проще понимать в три ночи. Если ваша платформенная команда стандартизирована на Java, мы пишем на Java, и в методе от этого не меняется ничего.
- Что будет с нашими COBOL-разработчиками?
- Они становятся самыми ценными людьми в проекте. Любая миграция встаёт на правиле, которое никто не записал, и знают его только они. В планах, которые мы пишем, они переходят из поддержки в арбитраж.
- Числа сойдутся точно?
- Это критерий приёмки, а не пожелание. Поля COMP-3 становятся фиксированной десятичкой, никогда плавающей, и сравнительный прогон падает на расхождении в одну копейку. Где расхождение законно, оно записывается и подписывается до переключения потока.
- Сколько мы держим обе системы?
- Столько, сколько нужно, чтобы сравнение стало чистым, а это для большинства потоков от одного до трёх циклов. Месячное закрытие мы переигрываем на том месяце, который у вас уже записан, вместо того чтобы ждать следующего, поэтому квартальное закрытие не добавляет к проекту квартал.
- AS/400 вы тоже делаете?
- Да: RPG и CL, файлы, описанные через DDS, зелёные экраны поверх 5250. Механика та же, что на z/OS, а срок обычно короче, потому что граф заданий проще и коробки меньше.
Начните с одного потока заданий
Что он делает, когда стартует и что ломается ниже по цепочке, если он закончится поздно. Этого хватит, чтобы мы вернулись с объёмом, сроком и ценой переноса.
Форма спрашивает про потоки заданий и батч-окно, так что удобно держать планировщик открытым.