переписываем legacy
Модернизация legacy-приложений: переписано и в продакшене за 30 дней
В здании есть сервер, который никто не решается перезагрузить, и все знают какой. Мы забираем его и переписываем на Go, Rust и TypeScript силами инженеров, которые пишут продакшен-код больше 25 лет. Через 30 дней новая система в проде.
Пришлите стек сегодня. В течение 48 часов инженер вернётся с фиксированной ценой и датой старта.
PHP 5.6, клиент на VB6, ядро на Java, которое собирается на одном ноутбуке, и сервер, который никто не перезагружает.
- app.phpPHP 5.6
- legacy.dllVB6
- reports.cfmColdFusion
- crystal reportsunsupported
- ftp-dropplaintext
30 дней, и каждый из них старая система обслуживает прод
Go в ядре, TypeScript на фронте, Postgres под ними, старые серверы выключены.
- coreGo
- reportingGo · read replica
- webTypeScript
- transferSFTP · signed
От вашего репозитория до продакшена за 30 дней
- 01дни 1–4
Картируем всю систему
Платформа читает каждую строку: граф вызовов, задания по расписанию, внешние интерфейсы и мёртвый код, измеренный в строках. К 4-му дню у вас карта модулей и план с датой на каждой фазе.
- 02дни 3–7
Ставим шов
Граница, через которую идёт продовый трафик, поэтому старый и новый код работают рядом, и мы их сравниваем. Пользователи никаких изменений не видят.
- 03дни 6–25
Переписываем модуль за модулем
Каждый модуль встаёт за шов, проигрывает ваш записанный трафик и забирает работу, когда выводы совпали. Ваша команда всё это время продолжает выпускать фичи.
- 04дни 24–30
Выключаем старую систему
Удаляем старый код, отменяем лицензии и гасим серверы. С 30-го дня вы поддерживаете одну систему, и счета за старую перестают приходить.
Платформа переводит, инженеры решают
Чтение всей кодовой базы и граф вызовов
Платформа
Включая диалект, который никто не поддерживает, и файл, который генерируется с 2009 года.
Замер мёртвого кода
Платформа
Статическая достижимость плюс ваши продовые трейсы. Что никогда не выполняется, удаляется, и цена падает вместе с ним.
Перевод каждого модуля в идиоматичный Go
Платформа
Первый проход машинный, ревью как у пул-реквеста, и ручная переписка везде, где ревьюер перестаёт понимать код.
Где поведение баг, а где правило
Инженер
Система двенадцать лет округляет одинаково, и кто-то ниже по цепочке на это опирается. Мы находим этого кого-то.
Parity harness и сверка данных
Вместе
Запись, проигрывание и построчная сверка на нас. Ваша сторона подтверждает, какие расхождения задуманы.
Переключение и откат
Инженер
Выбираем ночь, держим пейджер и пишем откат до того, как он кому-то понадобится.
Каждый модуль проходит старшего инженера до первого запроса, поэтому на 31-й день у вашей команды код, который она может читать.
Лучшие инженеры для вашей системы
Наши инженеры выпускают продакшен-код больше 25 лет, и лучше людей на вашу систему не поставить. Десктопы на VB6 и Delphi, Classic ASP и ColdFusion, монолиты на PHP 4, cron-задания на Perl, пакеты PL/SQL, Oracle Forms, Java старше Maven. Десятки миграций, и все приземлились в Go, Rust и TypeScript. Ваш диалект они уже переписывали.
Фиксированная цена до старта, дата запуска в договоре, код ваш. Фаза, не давшая паритета на вашем же записанном трафике, не принимается.
О чём спрашивают CTO перед подписанием
Сможет наша команда выпускать фичи во время переписывания?
Да. Фичи идут в старый модуль до дня его переноса, а parity harness ловит всё, что поменялось у нас под ногами. Ваш релизный календарь остаётся как был. Пришлите стек сегодня, и в плане будет видно, какой модуль в какой день переезжает.
Зачем переписывать, если можно отрефакторить то, что есть?
Рефакторинг оставляет вам рантайм без поддержки, тулчейн, который живёт на одной машине, и проблему найма, которая идёт с ними в комплекте. Переписывание убирает всё это, и занимает 30 дней. Пришлите стек сегодня, и через 48 часов сможете положить нашу фиксированную цену рядом с ещё одним годом латания дыр.
Код после машинного перевода можно будет поддерживать?
Да. Каждый модуль генерируется идиоматичным Go, проходит ревью как любой пул-реквест и переписывается руками там, где ревьюер перестаёт его понимать. Первый модуль ваши инженеры проверяют сами, до того как мы пойдём дальше. Запросите оценку и выберите модуль, по которому они будут нас судить.
У нас намного больше миллиона строк. 30 дней всё равно держатся?
Да. Платформа читает миллион строк за один проход, а работу мы делим на фазы, у каждой своя дата. От размера зависит, сколько инженеров мы ставим, а срок остаётся 30 дней. Пришлите число строк сегодня, и через 48 часов у вас план фаз с ценой на каждой.
Как можно зафиксировать цену на код, который вы почти не видели?
Платформа меряет размеры модулей, связность и долю кода, который ещё выполняется, и цена считается из этих чисел. Инженеры с опытом в четверть века проверяют их, прежде чем цифра уйдёт к вам. Пришлите систему сегодня, и цена с датой старта окажутся у вас в почте в течение 48 часов.
Пришлите систему сегодня
Назовите стек, размер и дату, которая вас подгоняет. Через 48 часов у вас фиксированная цена и дата старта. Через 30 дней новая система работает в продакшене, а старая выключена.
Заполнить можно за десять минут. Читает инженер с продакшен-стажем больше 25 лет, он же и отвечает.