Кейсы 5 мин чтения

Перевод legacy-системы на low-code: конвертер, линтер и эталон

Перенос корпоративной системы со старой платформы на low-code вручную упирается в объём: сотни экранов и форм. Разбираю, как устроен конвертер, почему без линтера и эталонного примера он бесполезен и где машинный перенос обязан остановиться.

миграцияlegacylow-codeавтоматизация разработки
TL;DR: Перенос корпоративной системы со старой платформы на low-code. Вручную не выходит: объём в сотни экранов делает работу бесконечной, а качество — плавающим. Собрал конвертер, но главное в нём не преобразование, а два спутника: линтер, который ловит то, что конвертер сделал неправильно, и эталонный пример, задающий, как должен выглядеть результат.

У миграции легаси есть особенность, которую недооценивают на входе. Кажется, что задача — переписать. На деле задача — переписать одинаково много раз подряд, не потеряв качества к сотому экрану. Человек этого не умеет: к концу второй недели он начинает срезать углы, и система получается неоднородной. Не потому что плохой специалист, а потому что так устроено внимание.

Почему ручной перенос упирается в стену

Считаем. В корпоративной системе, живущей десятилетие, набирается несколько сотен экранов, форм и отчётов. Пусть на перенос одного уходит несколько часов — это уже месяцы работы на человека, при том что половина экранов повторяет друг друга с точностью до полей.

Хуже объёма — неоднородность. Первые экраны сделаны аккуратно, средние по инерции, последние в спешке. Через год кто-то откроет систему и обнаружит, что одна и та же операция реализована тремя разными способами, и починить одну не значит починить остальные.

Третья проблема — знание. В старой системе за годы накопились правила, которые нигде не описаны: почему это поле обязательное, почему тут именно такая проверка. Человек, переносящий экран, эти правила либо переносит вслепую, либо теряет.

Что делает конвертер

Конвертер разбирает описание экрана в старой платформе и собирает эквивалент в новой. Формы, поля, типы данных, связи, базовые проверки — всё, что описано формально и потому переносится однозначно.

Ключевое ограничение: конвертер работает только с тем, что в исходной системе описано декларативно. Логика, зашитая в код процедурами, автоматически не переносится — и попытка научить конвертер её понимать оборачивается системой, которая иногда угадывает, а иногда нет, и ты не знаешь, когда именно.

Поэтому граница проведена сознательно: то, что переносится однозначно, переносится машиной; всё остальное явно помечается как требующее человека. Второй список короче первого, но его существование важнее.

Линтер: почему без него конвертер бесполезен

Самая недооценённая часть работы, и я на ней настаивал.

Конвертер без проверки создаёт ложное чувство завершённости. Он отработал, экраны появились, всё выглядит перенесённым. А то, что в тридцати из них потерялась проверка или неправильно определился тип поля, выяснится через полгода в проде.

Линтер — набор правил, по которым проверяется результат. Все ли обязательные поля остались обязательными. Не появилось ли полей без типа. Совпадают ли связи между сущностями. Не потерялись ли значения справочников. Не осталось ли заглушек, вставленных конвертером при неоднозначности.

Линтер не чинит — он показывает. И он же даёт объективный ответ на вопрос «сколько сделано», который иначе превращается в спор об ощущениях.

Эталон как единица измерения

Третья часть пакета — один экран, перенесённый вручную и вылизанный до состояния образца.

Зачем он нужен. Формулировка «перенести качественно» ничего не значит, пока нет предмета, на который можно показать пальцем. Эталон отвечает на вопросы, которые иначе решаются каждым по-своему: как называются элементы, где лежит логика проверок, как оформлены связи, что делать с полями, которых в новой платформе нет.

Эталон — это ещё и приёмка. Готовый экран сравнивается с ним, а не с чьим-то представлением о хорошем. Спор «мне кажется, тут надо иначе» превращается в проверяемое «в эталоне сделано так, здесь отличается, объясни почему».

Где машинный перенос обязан остановиться

Три места, где я останавливаю автоматику намеренно.

Бизнес-правила без описания. Если правило не записано формально, машина его не перенесёт, а угадает. Угаданное бизнес-правило — худший вид дефекта: система работает, но неправильно, и это обнаруживается по последствиям.

Всё, что касается денег и прав доступа. Здесь цена ошибки такова, что экономия на ручной проверке не оправдана ни при каком объёме.

Интерфейс сложных экранов. Машинный перенос даёт формально корректный, но неудобный результат: порядок полей, группировка, поведение при ошибке. То, что человек в старой системе делал годами по привычке, конвертер воспроизвести не может.

Кому подойдёт

Компаниям с корпоративной системой, которая работает, но становится дорогой в поддержке: мало специалистов на рынке, платформа устарела, любое изменение занимает недели. Особенно когда система большая и однородная — именно там конвертер окупается.

Не подойдёт при небольшой системе: пять экранов быстрее и надёжнее перенести руками, чем строить под них инструмент.

Частые вопросы

Какую долю удаётся перенести машиной? Зависит от того, насколько формально описана исходная система. Чем больше в ней декларативного и меньше самописного кода, тем выше доля. Честный ответ даётся только после разбора реальной системы, а не заранее.

Можно ли переносить постепенно? Да, и это правильный путь: модуль за модулем, со старой системой в работе. Одномоментный переход в корпоративной среде почти всегда заканчивается откатом.

Что делать со знаниями, которых нет в документации? Собирать у людей параллельно с переносом. Это отдельная работа, и её надо закладывать в план, а не надеяться, что всё есть в коде.

Останется ли инструмент у заказчика? Да, конвертер и линтер передаются вместе с эталоном — иначе после ухода подрядчика система снова становится неподдерживаемой.

Как оценить сроки такого проекта до начала? Честно — только после разбора выборки. Я беру десяток экранов разной сложности, прогоняю через конвертер и линтер и смотрю, сколько остаётся ручной работы. Эта выборка даёт коэффициент, по которому считается остальное. Оценка «на глаз по количеству экранов» ошибается в разы, потому что сложность распределена крайне неравномерно: половина объёма переносится почти сама, а десяток экранов съедает столько же времени, сколько все остальные вместе.

Можно ли обойтись без конвертера и нанять больше людей? Можно, и иногда это дешевле — на небольшом объёме. Но с ростом числа исполнителей растёт разнобой: каждый переносит по-своему, и система получается лоскутной. Конвертер здесь работает не столько ускорителем, сколько гарантией единообразия.

Что делать с отчётами? Это отдельная и обычно недооценённая часть. Отчёты переносятся хуже всего: в них больше всего скрытой логики, и именно к ним у пользователей больше всего претензий. Их я закладываю в план отдельной строкой, а не внутри общего объёма.

Коротко о главном

В миграции легаси конвертер — самая заметная, но не самая важная часть. Без линтера он даёт ложное ощущение готовности, без эталона — неоднородный результат и бесконечные споры о качестве. Три инструмента вместе превращают перенос из марафона на выносливость в измеримый процесс, где в любой момент видно, сколько сделано и что осталось.

Если у вас есть система, которую страшно трогать и дорого поддерживать, — разберём, что в ней переносится машиной, а что требует человека, и посчитаем объём честно.

Услуги по теме

Что я делаю под ключ

  • Боты и мини-приложения в Telegram, MAX, VK
  • Сайты, лендинги и витрины под ключ
  • Автоматизация процессов и учёта
  • Интеграции с CRM, площадками и оплатой
  • Сопровождение после запуска

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 449 готовых IT-решений для бизнеса449 ready-made IT solutions for business449 soluciones IT listas para empresas449 个面向企业的现成 IT 解决方案Бизнест зориулсан 449 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх