Article content
Как мы перевели платформу на .NET 8, снизили технологический долг, усилили безопасность и подготовили продукт к дальнейшему развитию.
Когда мы только запускали кроссплатформенную версию Geometa от Gems, система работала на .NET Core 3. Разработчики платформы выпускали новые версии с улучшениями в производительности, безопасности и инструментах разработки, а поддержка старых версий постепенно сокращалась. Чтобы Geometa оставалась современной, безопасной и могла развиваться дальше, необходимо было обновить версию используемого фреймворка разработки.
Но быстро перейти на новую версию было непросто из-за большого объёма кода и высокой связанности компонентов. В Geometa от Gems более 3 миллионов строк кода и десятки модулей, которые взаимодействуют друг с другом. Поэтому даже небольшие изменения могут затронуть интеграции, пользовательские сценарии, обработку данных и другие части системы.
К переходу начали готовиться заранее, ещё до выхода нужной версии платформы. В итоге выбрали .NET 8 — стабильную версию с долгосрочной поддержкой. Для бизнеса это означает, что технологическая основа продукта будет получать обновления безопасности и поддержку в течение нескольких лет.
.NET 9 и .NET 10 не рассматривали: первая имеет короткий жизненный цикл, а вторая на тот момент только вышла и ещё не успела подтвердить свою надёжность в крупных проектах.
Основная работа заняла несколько месяцев, после чего потребовалось время на тестирование. Нам было важно убедиться, что после обновления корректно работают все ключевые функции, интеграции и пользовательские сценарии. В результате нам удалось перейти на новую платформу без критических сбоев и остановки работы системы.

Какие результаты перехода?
Обновление платформы дало заметные результаты — это подтвердили нагрузочные тесты и сравнение работы системы до и после перехода.
Одной из причин обновления стало усиление требований к безопасности. Переход на актуальную версию платформы помог привести используемые технологии в соответствие с современными стандартами, включая требования к государственным информационным системам — это ГОСТ Р 56939-2024 «Защита информации. Разработка безопасного программного обеспечения. Общие требования» и ГОСТ Р 58412-2019 «Защита информации. Разработка безопасного программного обеспечения. Угрозы безопасности информации при разработке программного обеспечения».
Обновление затронуло не только саму платформу, но и множество дополнительных компонентов, на которых строится работа продукта. Каждый выполняет свою функцию, но со временем производители перестают выпускать для них обновления и исправления. В результате растут риски сбоев и появления известных уязвимостей. В ходе перехода такие компоненты были обновлены или заменены на современные поддерживаемые решения.
Однако вопрос был не только в безопасности. Для крупных программных продуктов не менее важна возможность дальнейшего развития системы. Со временем в любом проекте появляются участки кода, которые были написаны под технологии и требования своего времени. В профессиональной среде такие решения называют легаси-кодом.
При этом легаси не означает плохой или некачественный код. Многие крупные системы, которыми ежедневно пользуются миллионы людей, содержат подобные компоненты. Проблема возникает тогда, когда такие решения начинают затруднять развитие продукта.
На первый взгляд кажется, что можно просто перейти на самые новые технологии. Но на практике каждое обновление требует проверки совместимости, тестирования и оценки влияния на уже работающие функции. Для платформы масштаба Geometa с миллионами строк кода одно изменение может затронуть десятки связанных процессов.
Поэтому задача команды разработки заключается не в том, чтобы постоянно внедрять всё новое, а в том, чтобы находить баланс между стабильностью и развитием.
Поэтому оптимальным подходом считается не полное переписывание системы и не постоянная погоня за новыми технологиями, а постепенная модернизация наиболее важных компонентов. Такой подход позволяет сохранять стабильность продукта, снижать технологический долг и одновременно готовить платформу к дальнейшему развитию.
Именно такую задачу решал переход на .NET 8: помимо повышения безопасности он позволил сократить зависимость от устаревающих технологий и создать более устойчивую основу для дальнейшего развития платформы.

Производительность
Переход на новую версию платформы положительно сказался на производительности системы. Многие внутренние процессы стали работать эффективнее, благодаря чему Geometa лучше справляется с нагрузкой и требует меньше ресурсов для выполнения тех же задач.
Один из заметных результатов — уменьшение размера программных компонентов примерно на 6 %. Проще говоря, сервисы стали «легче»: их быстрее запускать, обновлять и разворачивать на новых серверах. Это особенно важно для продукта, который регулярно развивается и получает новые версии.
Серьёзные изменения произошли и в использовании памяти. Часть ресурсов, которые раньше тратились на внутренние технические процессы, теперь может использоваться для обработки пользовательских запросов. Благодаря этому система стала работать стабильнее даже при высокой нагрузке.
Для пользователей такие изменения могут быть незаметны внешне, но именно они помогают поддерживать быструю и предсказуемую работу сервиса при большом количестве одновременных операций и запросов.
В результате работа платформы стала более устойчивой: снизилось количество резких просадок производительности, а поведение системы под нагрузкой стало более предсказуемым.

Развитие инструментов разработки
Переход на новую версию платформы дал команде доступ к современным инструментам разработки. Многие задачи, которые раньше требовали больше кода и ресурсов, теперь можно решать проще и эффективнее.
Код стал компактнее и понятнее, что упростило его поддержку и доработку, в том числе в сложных участках системы. На практике это означает, что разработчикам проще вносить изменения и развивать продукт. Например, новая функция или доработка существующего инструмента требует меньше времени на реализацию и проверку, а вероятность случайно затронуть соседние компоненты системы становится ниже.
Расширились возможности логирования, мониторинга и анализа работы системы. Например, журналы теперь можно отправлять через механизм телеметрии и просматривать в Grafana — инструменте визуализации данных из различных источников. Это позволяет быстрее находить и устранять проблемы. Также улучшена наблюдаемость системы: метрики, трассировки и журналы дают более полное представление о её состоянии.

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



