Обновление платформы и миграция версий

Переводим работающие системы с версий платформы, которые больше не поддерживаются, на актуальные. Мы выполняли такие миграции: крупный туристический портал перевели с .NET Core 3.1 на .NET 9, мобильное приложение — с прекращённого Xamarin.Forms на .NET MAUI. Обе системы остались в строю и снова стали развиваемыми.

Коротко о задаче

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

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

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

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

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

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

Что входит в услугу

  • Аудит и план перехода

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

  • Обновление зависимостей

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

  • Перенос кода

Переписываем места, изменившиеся между версиями: работа с конфигурацией, авторизация, доступ к данным, фоновые задачи, обработка запросов. Логику при этом сохраняем.

  • Обновление базы данных

Если требуется, поднимаем версию СУБД и приводим схему к актуальному состоянию. Смотрите {{ссылка: Миграция и консолидация баз данных}}.

  • Тестирование

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

  • Перевод на новую инфраструктуру

Новая версия платформы часто требует другого окружения. Готовим среду, переносим, настраиваем. Смотрите {{ссылка: IT-инфраструктура}}.

  • Выпуск с планом отката

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

Что это даёт заказчику

  • Система снова развиваемая. После обновления можно добавлять функции, а не только латать.
  • Закрытые уязвимости. Платформа получает обновления безопасности, и аудитору есть что показать.
  • Расширенный рынок разработчиков. Актуальный стек означает, что найм перестаёт быть проблемой.
  • Продление жизни вложений. Обновление стоит заметно дешевле переписывания, а результат сопоставим.
  • Работа без остановки бизнеса. Миграция идёт параллельно, переключение занимает короткое окно.

Как мы работаем

Основной стек — .NET, и мы прошли этот путь на своих продуктах: наши системы работают на актуальной версии платформы и обновляются по мере выхода новых.

Начинаем с аудита: {{ссылка: Аудит унаследованного кода и оценка технического долга}}. Он даёт объём и оценку, по которым можно принимать решение.

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

Наш опыт

Туристический портал. Перевели с .NET Core 3.1, поддержка которой давно прекращена, на .NET 9. Портал сохранил функциональность, получил современную основу и вернулся в состояние, когда его можно развивать.

Мобильное приложение. Перевели с Xamarin.Forms на .NET MAUI. Приложение снова собирается под актуальные версии операционных систем и принимается магазинами. Смотрите {{ссылка: Разработка мобильных приложений}}.

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

Расскажите, на какой версии стоит ваша система и что уже начало ломаться. Начнём с аудита и оценки объёма.

Давайте создавать вместе!

Свяжитесь с нами и мы проконсультируем по вопросам реализации IT-решений и найдем лучший подход к разработке

Контакты

Офис: г. Казань, ул. Островского, 57Б, оф. 110
Почта: info@nabla-lab.ru
Телефон: +7 (965) 595-62-78