Обновление платформы и миграция версий
Переводим работающие системы с версий платформы, которые больше не поддерживаются, на актуальные. Мы выполняли такие миграции: крупный туристический портал перевели с .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