К содержимому
CodeHero

Платформа

Миллион строк legacy-кода на Go или Rust за 30 дней.

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

codehero · pipeline

  1. Загрузка

    Всё, что есть в дереве

  2. Карта

    Один граф зависимостей

  3. Переписывание

    Часть за частью

  4. Сверка

    Паритет на боевом трафике

  5. Запуск

    Переключение без технологического окна

Конвейер

Пять этапов. Все автоматизированы, каждый подписывает старший инженер.

Через этот конвейер идут и PHP-монолит, и миллион строк COBOL. Модель, которая читает код, меняется вместе с диалектом. Результат всегда принимает один из наших лучших инженеров, у которого за спиной больше четверти века в продакшене.
  1. 01

    Загрузка

    Всё, что есть в дереве

    Исходники, скрипты сборки, расписания заданий, схемы и хранимые процедуры заходят вместе. Все языки дерева разбираются параллельно.

  2. 02

    Карта

    Один граф зависимостей

    Модули, вызовы, потоки данных и мёртвый код ложатся в один граф. Границы сервисов видны прямо по его структуре.

  3. 03

    Переписывание

    Часть за частью

    Дообученные модели переписывают по одной ограниченной части за раз в идиоматичный Go, Rust, TypeScript или SQL. Тесты пишутся первыми.

  4. 04

    Сверка

    Паритет на боевом трафике

    Записанные входы с продакшена прогоняем через старую и новую систему. Каждое расхождение мы исправляем, или вы подписываете его письменно.

  5. 05

    Запуск

    Переключение без технологического окна

    Трафик переезжает по частям. Старая система стоит в горячем резерве, пока новая не возьмёт всю нагрузку.

Дообученные модели

Обучены на коде, о котором все забыли.

Передовые модели хорошо пишут код для сегодняшнего GitHub. Legacy-системы написаны на диалектах, которых там почти нет. Мы дообучили свои модели на парах старого и нового кода, и они знают, что значит копибук, как шаг JCL передаёт датасет следующему и что на самом деле делал экшен в Struts. Пришлите систему, и через 48 часов вы точно знаете, чего стоит переезд.

Диалекты, на которых обучены модели

  • COBOL
  • JCL
  • CICS
  • RPG IV
  • PL/I
  • Natural
  • Fortran
  • VB6
  • Delphi
  • PowerBuilder
  • ColdFusion
  • PHP 4–5
  • Perl
  • Classic ASP
  • Java EE
  • Struts
  • PL/SQL
  • T-SQL
  • DB2 SQL
  • Oracle Forms
  • ABAP
  • AngularJS
  • Свой специалист на каждое семейство

    Отдельное дообучение под мейнфрейм, AS/400, десктоп, веб и данные. Каждая модель знает идиомы своего семейства и места, где в нём ловушки.

  • Код, который команда захочет оставить

    Идиоматичный Go, Rust или TypeScript с именами, тестами и структурой, какие написал бы старший инженер. Ваша команда читает его с первого дня.

  • Ваш код остаётся вашим

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

Настоящий граф из продакшена

Так платформа видит систему.

Это Go-сервис, который работает в продакшене. Имена пакетов мы заменили кодами от M01 до M45, структуру не тронули. Потяните ползунок, и граф пройдёт путь от того, как код лежит сегодня, до разреза по доменным границам. Класс каждого узла следует из самого графа. Модуль внутри одного домена переписывается механически, а за модуль, который держат четыре домена, садится инженер и режет границу руками. Такую карту своей системы вы получите в первые 3 дня.

Как лежит сегодня

Механический перенос60%

Границу режет инженер29%

Кандидат на удаление11%

45 модулей, 167 зависимостей и 45,990 строк в 7 доменах. Настоящий граф сервиса из прода, имена пакетов сняты, других правок нет. Три класса посчитаны по структуре самого графа.
Тот же граф таблицей
Отсортировано по размеру. Модуль идёт механически, если лежит внутри одного домена. Он уходит инженеру, если от него зависят три домена и больше или он попал в цикл. И становится кандидатом на удаление, если его никто не импортирует и он не точка входа.
МодульСтрокИмпортируют егоИмпортируетДоменКласс
M01326loc010S01Механический перенос
M02142loc03S02Механический перенос
M0355loc03S02Механический перенос
M0489loc03S02Механический перенос
M055,194loc315S03Границу режет инженер
M06239loc51S03Границу режет инженер
M07884loc200S03Границу режет инженер
M08485loc46S03Механический перенос
M099,835loc47S03Границу режет инженер
M10514loc20S03Механический перенос
M11677loc15S03Механический перенос
M12236loc411S03Границу режет инженер
M13187loc33S04Границу режет инженер
M14454loc11S05Механический перенос
M1558loc31S05Механический перенос
M16356loc42S05Механический перенос
M17247loc42S05Механический перенос
M1859loc31S04Границу режет инженер
M19139loc00S04Кандидат на удаление
M20330loc132S04Границу режет инженер
M21414loc11S06Механический перенос
M221,670loc33S06Механический перенос
M231,218loc180S06Границу режет инженер
M242,574loc153S06Границу режет инженер
M25163loc41S04Границу режет инженер
M26251loc25S04Механический перенос
M27161loc12S04Механический перенос
M2899loc20S04Механический перенос
M2945loc00S04Кандидат на удаление
M3025loc00S04Кандидат на удаление
M311,417loc240S04Границу режет инженер
M3282loc10S04Механический перенос
M3330loc41S04Границу режет инженер
M34141loc31S03Механический перенос
M3579loc11S03Механический перенос
M363,036loc310S03Механический перенос
M37173loc11S03Механический перенос
M382,501loc19S03Механический перенос
M391,452loc34S03Механический перенос
M4050loc11S03Механический перенос
M412,148loc09S01Кандидат на удаление
M42167loc01S01Кандидат на удаление
M434,873loc215S07Механический перенос
M442,241loc110S07Механический перенос
M45474loc213S07Механический перенос

Стенд сверки

Те же входы, те же выходы, до копейки.

Через старую и новую систему идут одни и те же записанные входы. Выходы сравниваем поле за полем, до копейки, и часть уходит в прод, только когда дифф пуст. Поэтому дата и стоит в договоре.

  • Ваш записанный боевой трафик и есть набор тестов
  • Сравнение по каждому полю, включая округления и крайние случаи с датами
  • Каждое принятое расхождение вы подписываете письменно
Старая системаНовая системаДифф
  • ACCT 0048213 41.36ACCT 0048213 41.36
  • ACCT 0048214 0.00ACCT 0048214 0.00
  • ACCT 0051120 1,208.04ACCT 0051120 1,208.04
  • ACCT 0051121 17.90ACCT 0051121 17.90
  • ACCT 0060007 342.11ACCT 0060007 342.11
  • ACCT 0060008 5.02ACCT 0060008 5.02
Дифф0 расхождений

Альтернативы

Три способа модернизации. В 30 дней укладывается только один.

Ручное переписываниеУниверсальные AI-инструментыCodeHero
Срок до продакшенаОт месяцев до летНепредсказуемо, буксует на объёме30 дней на фазу
ЦенаПочасовая оплатаВремя ваших инженеровФиксированная по фазам, названа за 48 часов
Доказательство поведенияРучное тестированиеНетПаритет на вашем трафике
Контекст всего репозиторияВ головах у людейПо нескольку файлов за разОдин граф на все языки
Работа без сетиДаРедкоДа, на нашем железе или на вашем
Кто отвечаетБольшая командаВыОдин старший инженер со стажем от 25 лет