Начать проект

Обсудим проект?

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь с политикой конфиденциальности.

Отправлено!

Спасибо за заявку, мы свяжемся с вами в ближайшее время!

Модернизация легаси-системы: чинить, переписывать или мигрировать

Модернизация старой информационной системы: обвязка, перенос данных и вытеснение по частям

Система работает двенадцать лет, держит на себе весь учёт и приносит деньги. Каждая мелкая доработка занимает месяц, а разработчика под её платформу найти негде. Мы в Code Pilots начинаем такие проекты с аудита кода и архитектуры: без него разговор о переписывании беспредметен. Решение здесь считается деньгами, и вариантов у вас больше двух.

Если совсем коротко. Между «терпеть дальше» и «переписать с нуля» лежат ещё три пути. Можно осознанно ничего не менять, можно обвязать старую систему и вытеснять её по частям, можно заменить готовым продуктом. Выбор определяют четыре цифры. Сколько человек могут внести изменение, какая доля времени команды уходит на поддержку, сколько внешних обменов висит на системе и какую глубину истории придётся перенести.

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

Легаси — это не про возраст

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

Признак Как проявляется Что означает на практике
Знание живёт в одной голове Задачу можно отдать только одному человеку; в его отпуске релизов нет Срок любой доработки зависит от одного календаря
Изменения страшно вносить Правка в одном модуле ломает соседний, и узнают об этом пользователи Текущее поведение системы нигде не зафиксировано
Платформа закрыта для найма Вакансия висит месяцами, отклики идут единицами Ставка растёт, а выбора нет
Обновиться нельзя Версия языка или базы данных снята с поддержки, обновление тянет за собой половину кода Уязвимости остаются открытыми
Система не пускает бизнес Новый канал продаж требует обмена, которого в ней не предусмотрено Ограничение начинает стоить выручки

Один признак — рабочая ситуация. Три и больше — система перешла из разряда задач в разряд бюджета.

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

Пять стратегий вместо двух

Профессиональные споры почти всегда сводятся к дилемме «рефакторить или переписать». На практике решений пять, и три из них в этот спор не попадают.

Стратегия Когда выигрывает Чем платите
Оставить как есть Система закрывает узкий процесс, меняется раз в год, отказ не критичен Развитие остановлено, надбавка за редкий стек растёт
Локальный ремонт Код в целом понятен, болят два-три модуля Эффект временный, если причина в архитектуре
Обвязать и вытеснять Система большая, останавливать нельзя, вокруг много обменов Дольше и дороже в моменте: какое-то время работают обе
Переписать целиком Система небольшая или её поведение полностью описано Пауза в развитии и риск не догнать старую функциональность
Заменить готовым Процесс типовой, преимущества компании в нём нет Подстройка процессов под чужую логику, зависимость от вендора

Чаще всего работает комбинация. Учётное ядро заменяют готовым продуктом, а то, что отличает компанию от конкурентов, переносят в заказную систему под процесс и развивают дальше.

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

Пять стратегий модернизации: оставить как есть, локальный ремонт, обвязать и вытеснять, переписать целиком, заменить готовым

Шесть вопросов к своей системе

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

Сколько человек может внести изменение без чужой помощи? Один — критическая зависимость. Двое — риск. От трёх начинается нормальная работа.

Какую долю времени команда тратит на поддержку и разбор инцидентов? До 20% — здоровая система. Половина и больше — команда работает на удержание, и на развитие времени не остаётся.

Как часто вы выпускаете изменения? Ежедневный релиз и релиз раз в квартал — два разных мира. Редкие релизы почти всегда означают, что каждый из них страшный.

Что покрыто тестами? Общий процент покрытия говорит мало. Смотреть надо на расчёты денег — цены, скидки, начисления и налоги. Именно они и мешают трогать код.

Сколько внешних систем обменивается с ней данными? Каждый обмен — отдельная работа при переезде и отдельный риск. Список обменов обычно длиннее, чем помнят.

Что произойдёт при простое в два дня? Ответ переводит разговор из технической плоскости в денежную и обычно решает спор о бюджете.

Сколько стоит ничего не делать

Бездействие выглядит бесплатным, потому что за него не приходит счёт. Счёт всё равно оплачивается, просто четырьмя строками сразу.

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

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

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

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

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

Бездействие не выставляет счёт. Его всё равно оплачивают временем команды, простоями и сделками, которые не состоялись, потому что старая система не отдала данные.

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

Сценарий повторяется от проекта к проекту. Команда оценивает переписывание в девять месяцев, на десятом месяце новая система умеет половину, а старая продолжает работать и меняться.

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

Вторая — невидимая функциональность. За двенадцать лет в системе накопились обработки, отчёты и исключения, о которых знают только те, кто ими пользуется. В оценку они не попали.

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

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

Вытеснение по частям

Приём известен давно и звучит просто. Перед старой системой ставят фасад — слой, через который проходят все обращения. Дальше по одному сценарию переносят в новый сервис, а фасад решает, куда направить запрос.

Порядок работы обычно такой:

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

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

Платите за это временем. Какое-то время работают обе системы, и обе нужно поддерживать. Зато бизнес не встаёт ни на один день.

Вытеснение по частям дороже в моменте — какое-то время работают обе системы. Зато бизнес не останавливается ни на день, и откатиться можно на любом шаге.

Археология: что система вообще делает

Перед любым переносом нужно восстановить, как система себя ведёт. Документация к этому моменту либо отсутствует, либо описывает версию пятилетней давности.

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

Отдельно ищем поведение, на которое кто-то опирается, хотя задумано оно не было. Округление в третьем знаке, порядок строк в выгрузке, пустое поле вместо нуля — на таких мелочах чаще всего и ломается приёмка новой системы.

Отдельный сюжет — система, которую писал подрядчик, потерявшийся много лет назад. Тут археология начинается с юридической части. Проверяем, есть ли исходный код и у кого он лежит, переданы ли права на него по договору, кому принадлежат домены, сертификаты и учётные записи в хостинге.

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

Результат этого этапа — не техническое описание. Это список правил, за которые компания отвечает перед клиентами и контролирующими органами, с пометкой, где каждое из них реализовано.

Как доказать, что новое считает так же

Главный страх переезда звучит одинаково у всех: новая система посчитает иначе, и это увидят клиенты. Страх обоснованный, и снимается он проверкой на реальных данных.

Работает это так. Берут выборку настоящих документов за прошлый период — обычно от тысячи до нескольких десятков тысяч. Прогоняют через старую и новую систему. Сравнивают результат до копейки и разбирают каждое расхождение.

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

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

Разберём вашу систему

Аудит кода и архитектуры, карта внешних обменов, восстановление поведения системы по коду и данным. На выходе — список рисков и обоснованный выбор пути.

Обсудить проект

Перенос данных — отдельный проект

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

Этап Что происходит Где застревают
Инвентаризация Считаем объём, состав справочников и глубину истории Выясняется, что «истории за три года» на самом деле восемь лет
Чистка справочников Убираем дубли контрагентов и номенклатуры, сводим единицы измерения Решение о том, какая карточка главная, принимает бизнес и тянет неделями
Правила преобразования Описываем, как поле старой системы превращается в поле новой Половина полей заполнялась не по назначению
Пробный перенос Гоняем на копии, замеряем время и считаем контрольные суммы Полный перенос не укладывается в технологическое окно
Приёмка Сверяем остатки, обороты и итоги по периодам Расходятся копейки на округлениях, и это нужно объяснить
Двойное ведение Какое-то время данные живут в обеих системах Люди продолжают работать в старой, потому что привычнее

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

Этапы переноса данных: инвентаризация, чистка справочников, правила преобразования, пробный перенос, приёмка, двойное ведение

Интеграции задают порядок переезда

Старая система обычно висит в центре обменов. Учётный контур, банк-клиент, склад, сайт, кассы, маркетплейсы, отраслевые государственные системы — каждый из этих каналов придётся либо перенести, либо временно продублировать.

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

Дальше этот список определяет очередь работ. Сценарии с редким обменом переносят первыми, потому что цена ошибки мала. Обмен с учётной системой и банком трогают последним и с двойной сверкой.

Отдельная категория — обмены с государственными системами. Маркировка «Честный знак», ЕГАИС, отраслевые реестры и электронный документооборот живут по своим форматам и срокам, а их регламенты меняются независимо от вашего плана. Переносить такие обмены в последнюю очередь опасно: именно они чаще всего требуют повторной аттестации доступа и согласования с оператором.

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

Что изменилось к 2026 году

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

Что произошло Когда Кого касается
Указ Президента РФ № 166: закупка иностранного ПО для значимых объектов КИИ только по согласованию с 31.03.2022 Владельцы значимых объектов КИИ
Запрет на использование иностранного ПО на значимых объектах КИИ с 01.01.2025 Они же
Запрет на закупку недоверенных программно-аппаратных комплексов; полный переход — до 01.01.2030 с 01.09.2024 Промышленность, госсектор, связь
Oracle прекратила оказывать техническую поддержку в России март 2022 Все, у кого база данных Oracle
SAP прекратила поддержку своего ПО в России; облачные сервисы отключены 20.03.2024 2024 Крупные предприятия на SAP
1С:Предприятие 7.7 — формы регламентированной отчётности с 2026 года не обновляются (письмо 1С № 32303 от 25.10.2024) с 2026 Все, кто ещё на 7.7

Последняя строка касается сотен компаний, которые двадцать лет откладывали переход. Отчётность за 2025 год сдать удалось, дальше формы устареют, а автоматическое заполнение перестанет соответствовать закону.

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

Часть решений о модернизации приняли за вас. Вендор перестал выпускать обновления, регулятор назначил дату — и вопрос «менять или терпеть» перестал существовать.

Человек, который один знает систему

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

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

Работает простая вещь. Знание переводят в артефакты постепенно и при его участии — описание правил, тесты на поведение и разбор исключений пишут вместе с ним. Человек становится соавтором новой системы, а не её жертвой.

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

Сколько стоит

Смету задают три параметра. Размер системы, число внешних обменов и глубина истории, которую нужно перенести.

По нашим работам ориентиры такие. Аудит кода и архитектуры обходится от 200 до 600 тыс. ₽, заказная система под процесс — от 1,7 млн ₽, бэкенд и веб-часть — от 1 млн ₽, отдельная интеграция — от 150 тыс. до 1,5 млн ₽ в зависимости от системы. Точную цифру считаем по вашему контуру: оценка проекта бесплатная.

Порядок бюджета можно прикинуть заранее — бесплатный калькулятор оценки собирает вилку по составу работ за несколько минут.

Посчитаем ваш переезд

Расскажите про систему, список внешних обменов и глубину истории. В ответ пришлём состав работ, смету и срок по этапам.

Получить консультацию

Пять дорогих ошибок

Начинают с выбора платформы. Стек обсуждают до того, как выяснили, что система делает и какие обмены на ней висят. Через два месяца выбор пересматривают.

Переписывают всё сразу. Бизнес получает пустой год, а новая система догоняет ту, которая продолжает меняться.

Перенос данных ставят в конец плана. Чистка справочников всплывает за две недели до запуска и сдвигает срок на квартал.

Не сверяют расчёты на реальных документах. Расхождение первыми находят клиенты и бухгалтерия.

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

С чего начать

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

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

Третье — заказать аудит кода и архитектуры. Он даёт карту системы, список рисков и обоснованный выбор пути. Дальше разговор идёт о смете и этапах.

С чего начать модернизацию: снять факты о системе, посчитать цену бездействия, заказать аудит кода и архитектуры

Обсудим вашу систему?

Посмотрим, что мешает её развивать, и предложим путь, при котором бизнес не встаёт ни на один день. Оценка бесплатная.

Обсудить проект

Часто задаваемые вопросы

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

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

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

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

Обязанность есть у владельцев значимых объектов критической информационной инфраструктуры: с 1 января 2025 года иностранное ПО на них использовать нельзя. Для остальных это вопрос рисков. Oracle не поддерживает свои продукты в России с 2022 года, SAP — с 2024, и обновления безопасности вы не получите независимо от требований.

Разработка с Code Pilots

Code Pilots — студия заказной разработки полного цикла: веб- и мобильные продукты со сложной бизнес-логикой, интеграциями и высокими нагрузками. В модернизации мы закрываем весь путь. Проводим аудит кода и архитектуры, восстанавливаем поведение системы, ставим слой обменов, переносим данные и вытесняем старую систему по частям с параллельной сверкой расчётов.

Границы проговариваем сразу. Аудит серверного парка предприятия, лицензирование и сертификацию российского ПО, внедрение готовых ERP под ключ выполняют другие подрядчики. Наша часть — код, данные, интеграции и надстройки поверх учётной системы, включая личные кабинеты и модули для 1С.

Внутри — аналитики с отраслевой экспертизой, дизайнеры, backend- и мобильные разработчики, QA и DevOps, middle+ и senior. Цену и срок фиксируем до старта, а первый этап собираем так, чтобы результат был виден через квартал. Пришлите список внешних обменов и ответ на вопрос, сколько человек могут менять систему: по этим двум вещам уже видно, какой путь вам подходит. Обсудить проект →

Обсудим проект?

Заполните форму или напишите нам
на airmail@code-pilots.ru
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь с политикой конфиденциальности.

Спасибо!

Спасибо за сообщение, мы свяжемся
с вами в ближайшее время!
success