Здравствуйте! Меня зовут Антон Боев, я исполнительный директор компании DD Planet. В статье поделюсь опытом работы с платформой .NET в условиях санкций и расскажу о нашем взгляде на перспективы импортозамещения ПО в России после ухода Microsoft.
В марте 2022 года корпорация Microsoft присоединилась к антироссийским санкциям и объявила о прекращении поддержки своего программного обеспечения. Вплоть до начала 2024-го, в связи с уходом вендора, мы отметили тенденцию к замораживанию множества проектов, которые планировалось разрабатывать на .NET. Хотя наша компания на протяжении 20 лет успешно реализовывает масштабные решения на .NET и входит в топ-5 интеграторов разработки ПО на этой платформе, за последние два года мы также неоднократно обсуждали возможность переквалификации специалистов на другие технологии и прежде всего рассматривали прямого конкурента — Java. Однако мы не сделали этот шаг по ряду причин.
Давайте разбираться, почему наш выбор продолжать разработку на .NET полностью оправдан.
Стоит ли менять стек? Java как альтернатива .NET
Проанализируем аргументы, которые приводят компании, разрабатывающие ПО на Java, и определим, насколько они соответствуют реальному положению дел.
-
Возможный запрет на использование технологии в России. В связи с уходом компании Microsoft с российского рынка будущее проекта .NET представляется туманным.
Стоит отметить, что до 2015 года платформа .NET не была платформой с открытым исходным кодом. Также она не являлась кроссплатформенной, из-за чего у многих руководителей бизнеса сложилось представление о том, что .NET работает только на операционной системе Windows. Очевидно, что это устаревший взгляд, поскольку на сегодняшний день .NET представляет собой программное обеспечение с открытым исходным кодом, поддерживающее кроссплатформенную разработку. Следовательно, запрет его в нашей стране не представляется возможным.
-
Отсутствие квалифицированной поддержки. В настоящее время поддержка .NET в России осуществляется исключительно силами сообщества разработчиков, что не гарантирует оперативного решения критических проблем.
Да, это действительно так. Но в наших проектах мы не полагаемся на продукты и специфические инструменты Microsoft и разрабатываем решения исключительно с использованием языка программирования C# и платформы .NET. Ошибки в релизах платформы возникают крайне редко, и, учитывая популярность платформы за рубежом, они оперативно устраняются .
-
Закладки с вирусным ПО. Использование опенсорсных пакетов из публичных репозиториев может привести к непреднамеренной установке программ с вредоносным кодом (такие инциденты чаще всего происходят в хранилищах NPM, NuGet и PyPI). Сканеры и антивирусы не всегда способны обнаружить зараженное ПО, что повышает угрозы для безопасности.
Тезис никак не связан ни с уходом Microsoft, ни со спецификой разработки на .NET — на других платформах и языках сохраняются все те же риски.
Таким образом, на основании представленных контраргументов, мы считаем доводы против разработки на .NET несостоятельными.
В пользу .NET
Почему разработка на .NET остается популярной, а C# считается одним из самых удобных языков программирования? Каким образом несмотря на серьезное давление со стороны компаний, использующих другие стеки, .NET по-прежнему занимает значимую долю в сфере Enterprise решений?
Чтобы ответить на эти вопросы, мы вновь проведем сравнение с Java. На эту тему написано множество статей, и до сих пор ведутся серьезные дискуссии между сторонниками обоих языков, поэтому не будем углубляться в детали, а просто напомним о ключевых преимуществах .NET.
Активное комьюнити
Платформа .NET — программное обеспечение с открытым исходным кодом. Это решение постоянно развивается не только под руководством Microsoft, но и благодаря активному сообществу, которое поддерживает как начинающих, так и опытных разработчиков.
Эволюция
На момент написания статьи текущая версия ЯП C# — 12-я, ЯП Java — 23-я. За последние десять лет Java, с точки зрения развития синтаксиса в ЯП, не претерпела значительных изменений: программы на Java SE 8 могут без проблем запускаться на современных версиях платформы. И хотя это подается как возможность обратной совместимости, по факту, начиная с версии Java 8, в язык объективно внесено мало изменений. Что касается .NET, то разница между текущей версией и версией десятилетней давности колоссальна. Конечно, были релизы, которые, на наш взгляд, не привнесли качественных изменений в язык, но также было сделано множество действительно значимых обновлений, которые существенно облегчили жизнь разработчикам.
Интеграция
.NET легко интегрируется с другими продуктами и сервисами. В то же время, для интеграции Java иногда требуется приложить дополнительные усилия, несмотря на то, что этот язык широко используется в корпоративной среде.
Кроссплатформенность
С появлением .NET Core платформа .NET стала по-настоящему кроссплатформенной. Она предлагает высокую производительность и одинаковый набор функций на Linux, macOS и Windows. Хотя Java также поддерживает кроссплатформенность, .NET Core значительно упрощает развертывание приложений в различных средах.
Производительность и оптимизация
.NET использует компиляцию Just-In-Time (JIT) и Ahead-Of-Time (AOT), что позволяет достигать высокой производительности исполняемого кода, особенно в облачных и микросервисных архитектурах. Несмотря на усилия по оптимизации через HotSpot JVM, Java зачастую уступает в тестах производительности.
Преимущества .NET перед Java очевидны. Однако исторически именно Java закрепилась в сознании разработчиков как бесплатная и кроссплатформенная технология, что, на наш взгляд, стало основной причиной отставания .NET в популярности.
Решения/продукты от Microsoft, которое мы применяем в разработке
.NET MAUI (бывший Xamarin) — это фреймворк для создания кроссплатформенных мобильных и десктопных приложений, позволяющий использовать единую кодовую базу для всех платформ.
Наша компания занимала лидирующую позицию по числу разработчиков на Xamarin, в штате насчитывалось около 20 специалистов. Мы также создали базу знаний на портале xamarin.ru, где представлены статьи, новости и мнения экспертов в области разработки кроссплатформенных мобильных приложений.
В настоящее время мы продолжаем поддерживать старые проекты на Xamarin и, по возможности, переводим их на более современные фреймворки — React Native и Flutter(подробнее здесь https://habr.com/ru/articles/828656/).
Заменяем на open source
Microsoft |
Альтернативы |
Blazor — фреймворк, позволяющий использовать C# для создания веб-страниц |
React, Angular, Vue |
ORM EF |
ORM Dapper |
Web servers (IIS, Kestrel и другие) |
HаProxy, NGINX |
База данных (MSSQL) |
PostgreSQL |
Брокеры сообщений (MSMQ) |
RabbitMQ, Kafka |
Microsoft Power BI. |
Grafana |
Мы не задействует эти решения по двум причинам:
-
Большинство из них платные и не относятся к программному обеспечению с открытым исходным кодом.
-
Бесплатные аналоги развиваются быстрее, имеют большое сообщество и предоставляют разработчикам более широкие возможности.
Поэтому, помимо платформы .NET и языка программирования C#, мы не рассматриваем другие продукты Microsoft как успешные и конкурентоспособные.
Почему мы продолжаем оставаться на .NET?
Большая экспертиза. Мы создаем продукт «Выберу» на .NET с 2012 года командой из более чем 40 разработчиков. Кроме того, мы реализуем проекты уровня Enterprise, над которыми работают специалисты по .NET численностью от 10 до 25 человек на протяжении последних 10 лет.
Поддержка государства. В начале 2024 года Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации запустило бесплатные курсы по .NET. Эта инициатива стала своего рода официальным признанием .NET как платформы разработки в России, что дало толчок к размораживанию многих проектов и изменению отношения клиентов к этой технологии.
Спрос на аутстафф-специалистов. Наша компания активно мониторит около 50 аутстафф-каналов в России. Если с 2022 по начало 2024 года в среднем требовался 1 специалист в месяц, то сейчас запросы на .NET разработчиков поступают практически каждый день.
В 2024 году, благодаря официальной поддержке государства, для разработки приложений на .NET создана благоприятная среда, и спад интереса к платформе, наблюдавшийся в 2022–2023 годах, сошел на нет.
Какие изменения произошли в комьюнити .NET В России по мнению экспертов других компаний
Андрей Парамонов
Техлид техлидов Dodo Engineering
Касательно майкрософт и тех неприятностей, что мы почувствовали на себе:Microsoft Azure отключил часть сервисов и не заключает договоры с компаниями в России (и нет возможности продления старых договоров).
Про платформу .NET:мы оставляем .NET нашим основным стеком, менять его не планируем. Были опасения на счет docker образов, но у Microsoft свой реестр контейнеров, а также есть официальные образы от Canonical, начиная с .NET 6.
Про спад и рынок специалистов:ощущается нехватка сильных специалистов с рынка (уровня senior и выше), но эта проблема была и до 2022 года, хоть и в менее выраженном виде.
Гарик Куприянов
Технический директор Quantum Art
С уходом Microsoft и сворачиванием их партнерской программы мы стали чаще обращать внимание на альтернативные инструменты разработчика VSCode и продукты JetBrains. Так же стоит отметить, что исчезла возможность сертифицировать .NET разработчиков, а сертификация может требоваться для участия в тендерах. Для других проприетарных продуктов Microsoft давно есть альтернативы, работающие под Linux, на которые мы перешли за несколько лет до ухода. Что касается C# .NET framework, который не относится напрямую к Microsoft, то он находится в том же положении, что и java + spring boot, ничем ему не уступая. Смена же платформы разработки в enterprise решениях упирается в долгий цикл поддержки продуктов и значительные инвестиции, поэтому менять C# .NET на java spring boot или наоборот крупные компании не будут быстро, а скорее будут ориентироваться на рынок труда разработчиков.
Анализ тенденций в России
К сожалению, нам не удалось найти официальной статистики за 2023 и 2024 годы для сравнения уровня популярности .NET в России. Однако, согласно индексу TIOBE, язык C# входит в пятерку самых востребованных языков программирования в мире и находится на уровне с Java.
Если обратить внимание на количество вакансий на портале hh.ru, ситуация в нашей стране выглядит менее оптимистично: Java занимает лидирующую позицию и значительно опережает .NET (почти в 2 раза). Это не новая информация и не свежий тренд — подобные тенденции наблюдаются в России на протяжении длительного времени.
Но если проанализировать состав компаний, публикующих вакансии для разработчиков .NET, а также типы задач, которые предстоит решать кандидатам, можно с уверенностью сказать, что .NET занимает высокую позицию как в разработке крупных проектов, так и в создании Enterprise решений.
Выводы
В связи с тем, что в 2022 году многие иностранные IT-компании покинули российский рынок, а также после преодоления опасений относительно возможного запрета на использование .NET в России в 2022-2023 годах, можно с уверенностью утверждать, что спрос на специалистов .NET в настоящее время превышает предложение. В то же время не наблюдается предпосылок для выравнивания рыночной ситуации в ближайшие годы. Несмотря на уход Microsoft, российское комьюнити продолжает активно развиваться. Ежегодно проходит конференция DotNext — старейшее мероприятие для экспертов по .NET-разработке, на котором выступают спикеры от T-Bank, Билайн, Райффайзен Банк, Ozon, Контур.
В 2022-2023 годах, в условиях активной стадии импортозамещения, многие компании, использовавшие неподдерживаемое государством программное обеспечение, либо смогли оперативно переквалифицироваться, либо прекратили существование. Наша компания также столкнулась с рисками утраты накопленной экспертизы в заказной разработке на .NET. Однако положительный тренд спроса на платформу в 2024 году развеял все сомнения, и мы продолжаем успешно разрабатывать проекты и сервисы с уверенностью в будущем.
Автор: boev