Буквально на прошлой неделе прошла самая большая конференция Microsoft для разработчиков Build2019. Поехав туда, я преследовал 2 цели.

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

Для себя я выделил несколько ключевых тем, по которым хочу поделиться мыслями:

  • .Net Framework Roadmap
  • Kubernetes
  • ServerLess
  • Edge Computing
  • Big Data, Machine Learning, Artificial Intelligence
  • Windows Presentation Platform

.Net Framework Roadmap


На Build2019 был доклад .NET Platform Overview and Roadmap. Очень рекомендую посмотреть-прочитать Introducing .NET 5, C# 8 и отдельный доклад по C# 8 — The Future of C#

image

  • Мои наблюдения с момента анонса .net core 3.0 в следующем: создание .net core/.net standards было очень правильными, но в .net, как и в других платформах, накоплено очень много кода, который нельзя вот так взять и перенести. А, значит, надо привнести плюшки .net core/standard в старые проекты с минимальной модификацией. WinForms/WPF вынесли в opensource, следующий релиз будет уже с .net standard под капотом, и можно будет забыть про старую структуру csproj файлов и получить еще много других бонусов. Вещи безусловно правильные, но вызваны они в том числе тем, что legacy надо тоже поддерживать.
  • Хорошо, что для мобильных платформ перестали вспоминать UWP, и остался только Xamarin для C# разработчиков.
  • На стенде команды .Net Core я задал вопрос: « А какие большие изменения вы планируете делать в .Net 6-7-8? И будет ли у вас повод увеличить major версию продукта каждый год?» Больше всего мне понравилась часть ответа, которую я перевел-понял как «ну это же vision, а как оно будет дальше- посмотрим. „
  • По поводу C# 8 у меня остались похожие мысли, как и о всех релизах после async/await, который действительно изменил стиль программирования на C#. А все остальное, было, конечно, прикольно и добавляло синтаксического сахара, но выглядело достаточно блекло фоне Async/Await. Зато код становится все менее похож на классический C#. Чтобы вы сказали на такой код, году так в 2012-ом

А вот, что мне не понравилось на этой сессии, так это настойчивые попытки еще раз подчеркнуть всем .net/C# разработчикам необходимость знать, понимать и на ежедневной основе использовать Machine Learning, Cognitive Services и т.п.

Безусловно, толковый разработчик должен такие вещи понимать, изучать, по возможности практиковать. Но, в 99% случаев, в проекте это не требуется и столь настойчивое евангелизирование, откровенно говоря, начинает надоедать.

Если честно, то я не очень верю в будущее проектов типа Spark.Net, о котором рассказывали в этой сессии. Опыт напоминает, что похожие попытки писать Wrappers на C# или полностю портировать data проект на C# за последние лет 10 заканчивались обычно ничем т.к., и сообщество меньше, и язык сменить не так сложно.

Уже после Build2019, был анонс, что .Net Framework 4.8 — последняя мажорная версия .Net Framework и дальше будут только небольшие правки. В общем, всем пора в .Net Core.

Service Fabric vs Kubernetes


3 года в Microsoft и уже почти полгода в EPAM я не могу дать нормального технического объяснения, зачем нужен Service Fabric (и вы, при этом, не работаете в Microsoft), если есть Kubernetes.

  • Долгое время “толмачи» рассказывали, что это равные платформы, но это не так (гуглится элементарно).
  • Затем были разговоры, что SF более зрелый для Windows development, а Kubernetes для Linux.
  • Ну и заодно, мол, на SF ваши разработчики смогут использовать свои навыки работы в Windows Environment, а в K8s надо изучить Linux и переучиваться. Согласен, legacy код и необходимость переучивать-переучиваться – это серьезный аргумент, а с другой стороны — SF была достаточно сложной, и на мой взгляд ничуть не легче чем K8s. Ну а Linux с одной стороны изучать и знать надо в любом случае. Даже закостенелому “виндузятнику”(коим и я являюсь). А с другой — Kubernetes достаточно сильно от этого абстрагирует.

На Build2019 я для себя поставил крест на SF, т.к. по нему был 1 доклад (хотя в названии и было про Mission Critical ***).

А по Kubernetes штук 20-30 во всех разрезах. Приведу только часть, которую рекомендовал посмотреть в своем проекте.


DevOps


На мой взгляд, Microsoft сдались и приняли реальность — .net сообщвество, по сути, не приняло Service Fabric. А вот Kubernetes стал по факту стандартом даже для .net мира, с чем я нас с Вами и поздравляю.

ServerLess всем и каждому


По-прежнему, очень много говорится про ServerLess вычисления. Но, если раньше под этот соус заворачивали только Azure Functions и Logic Apps, то сейчас зацепило даже Azure SQL Database ServerLess (когда увидел анонс, очень удивился т.к. уж что-что, а ServerLess SQL – это звучит интересно).

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

SQL ServerLess


Суть SQL Serverless в том, что Вы можете указать нижнюю и верхнюю границу потребляемых ресурсов и платить будете обязательно по нижней границе и плюс то, что потребите между нижней и верхней границей. Мелкую фичу, что можно ставить SQL на паузу (и не платить за compute ресурсы), если база не используется (на 6 часов можно ставить на паузу сейчас), я бы пока не рассматривал, т.к. чтобы пару часов вообще ни одного запроса к базе не было — это очень странная ситуация, ведь есть же хотя бы мониторинг, да и старт у базы (как обещали) будет за 30-60 секунд, что тоже важно.

image

Edge Computing по подписке или Cloud не только в Microsoft Data Center


  • Когда-то давно, в 2008-2010 годах, Microsoft говорил примерно так: «вот вам наши magic Cloud Service, перепишите ваши приложения под них (Web/Worker Role) и будет у Вас счастье». Счастья не получилось, т.к. Legacy все портило.
  • Потом появились виртуальные машины, но сейчас это не важно.
  • Затем, когда стало понятно, что даже теперь мало кто может полностью переехать в Cloud, надо все-таки делать Hybrid решения. В начале под этим подразумевались VPN до Azure. Затем появился Azure Stack (программно-аппаратный комплекс, который по API похож на Azure и можно было на нем держать Production нагрузку, если регулятор не разрешает публиковаться в Public Cloud, а dev/test с анонимизированными данными держать в Public Cloud)
  • Потом стали модными и популярными всякие IoT решения (для Microsoft и других больших игроков… а телеметрию-то давно писали). Поначалу в сценарии Connected Factory (Завод/ сборочная линия), предлагали использовать решения из Azure Cloud, но индустрия-таки объяснила, что Latency между их заводом может быть сильно больше допустимого и останавливать сборочную линию из-за “моргнувшего” интернета – это не жизнеспособное решение.
  • В итоге, сначала появился Azure IoT Edge, который хоть и скачивался из Azure, но работал и обрабатывал данные на вашем железе (нужен был Docker совместимый хост, который хоть иногда в интернет подключался), но на нем поначалу был совсем скромный набор возможностей. Хороший доклад на эту тему был Azure IoT Edge & AI: Enabling the Intelligent Edge
  • Потом, когда IoT Edge показал себя полезным (для потребителей и для финансов Microsoft), стали как грибы появляться сервисы, которые раньше считались Cloud Only. Например, Cognitive Services пришли на Edge. Визуальный контроль качества продукции на сборочной линии или транспортере делать из локального docker container сильно проще, чем собирать latency до Azure Data Center.
  • А вот на Build2019 многие из этих сервисов вышли в общий доступ или появилась в качестве preview (мне больше всего из preview нравится Speech Services для синтезации речи. Его очень сильно не хватало на устройствах без постоянного интернета).
  • Заодно был показан-анонсирован SQL Server он Edge (Simplify Edge Architecture with Azure SQL Database Edge).

    Нет, SQL 2017 уже давно запускался на Linux в Docker, но требовал 3.5 GB памяти. Эта версия оптимизирована в том числе по памяти (500MB< и запускается на ARM процессорах), для Edge устройств (на них памяти обычно мало). А заодно там есть работа Built-In Time-Series Streaming and Analytics, что звучит очень интересно.
  • Кроме того, начали показывать Hardware на базе Azure Sphere для Secured IoT решений.
  • Показали Azure Edge compute оборудование, что уже совсем не оставляет сомнений, что тема под пристальным контролем.
    Правда ящик, для миграции данных в Azure мне понравился больше т.к. выглядит по солиднее.


Big Data, Machine Learning, Artificial Intelligence


В этих областях, писать я буду с позиции бывшего разработчика (хотя бывших разработчиков не бывает), а не эксперта по данным.

Очень часто встречал “интересную” позицию некоторых заказчиков, что IaaS надо делать в Aws, PaaS в Azure и Data в GCP. Нельзя не согласиться, что исторически каждый из провайдеров специализировался на чем-то, но сейчас, если смотреть по-крупному, во многих сервисах паритет достигнут (разница в нюансах, конечно, осталась). Интеграция решений между разными Cloud провайдерами – это, конечно, интересная работа и золотая жила, но как правило, крайне неэффективная для самого заказчика (за исходящий трафик всегда надо платить, а есть же еще latency и complexity/сложность решения).

Наверное, самым перспективным направлением для Microsoft/Azure на ближайшее время с точки зрения новых денег является работа с данными – “привет” Spark/Hadoop/Kafka, Data lakes и еще много интересных сервисов, а заодно с горячи темами (кто-же не любит на хайпе делать продажи) типа Artificial intelligence (Опять нам показывают Кортану, опять нам показывают умные автомобили). Количество анонсов, а главное кейсов (иногда синтетических, а иногда даже показывают счастливого клиента) по использованию Big Data сервисов в Azure на конференции просто зашкаливало. Только по слову AI, находится 37 сессий (их всего 171 на весь Build2019, если вычесть 15 минутные коридорные доклады и сессии программирования для школьников.). Были даже долклады DevOps для Big Data, Windows AI platform и AI для PowerBI. Большинство этих технологий open source, они все community driven и присутсвуют во всех 3 больших провайдеров. Пару лет назад такого активного подхода к Data сервисам я, признаться, не припомню.

Windows Presentation Platform


Одна из сессий, которую я бы хотел отметить — это сессия про Windows Presentation Platform (WPP). Если быть честным, я по невнимательности считал, что это про Windows Presentation Foundation (WPF), но зато приятно удивился, что тема была шире, ожидаемой.

Когда-то в далеком 2009 году, когда WPF только появился, была популярна тема: хостинг WinForms controls в WPF приложениях или наоборот — пытаться вставить WPF controls в WinForms. Это все было от того, что взять и махом переписать огромные куски приложения на новый framework было часто невозможно. В первых релизах такие особенности не рекламировали, но когда стало очевидно, что обратную совместимость надо тянуть, то начали очень активно пиарить.

Так вот, в 2019 году обсуждается как хостить UWP контролы в WPF (XAML islands), и как развязать UI components и операционную систему в WinUI 3.0 (т. е. поставлять controls/compiler/runtime в качестве nuget packages и не ждать Windows Update.) Идея отличная, но делать надо было еще в самой первой версии UWP, т. к. к тому времени команда Entity Framework уже несколько лет как, вынесла EF из состава .net Framework, чтобы перестать зависеть от Windows Updates. И то, что стало .Net Core было в разработке.



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


Для сессии был отведен большой зал, но свободных мест в зале хватало (разработку под Windows уже лет 10 хоронят), но дело не в этом. Молодых лиц в зале было крайне мало (сравниваю с сессией по Asp.Net Core или тем более Machine Learning). Это лишь мои субъективные наблюдения, я не занимаюсь похоронами разработки под Windows.

Microsoft Ecosystem для разработчиков


Работая полевым инженером в Microsoft, я официально поддерживал только то, что сделал сам Microsoft. От такого подхода атрофируются знания всего остального. Сейчас, когда я ушел из Microsoft и стал Solution Architect, стало жизненно важно заполнить этот пробел. А на Build была целая выставка решений партнеров для разработки и разработчиков, где можно было подойти к любому стенду и позадавать вопросы, попросить демку. Я сэкономил недели, посещая эти стенды.

  • По-прежнему можно использовать SonarQube для управления техническим долгом (качество кода, а не архитектура конечно-же)
  • Есть специализированные решения по DevOps на Kubertenes, которые сильно проще использовать, чем Azure DevOps
  • Есть интересные решения типа Aqua(aquasec)/Snyk, по аудиту содержимого docker images и уже запущенных контейнеров.
  • Есть интересные решения по мониторингу-трассировке распределенных приложений, у которых есть преимущества перед банальным ELK или Azure Monitor (Application Insights + Log Analytics) типа Signalfx
  • Я уже молчу про R# и среду разработки на .net от Jetbrains (Про R# я помнил, но не использовал, т.к. код писал мало и соответственно про среду разработки особо не слышал).
  • Было полно всяких решений на базе AI/ML/Data и т.п., но я к ним особо не ходил, т.к. не имею практического опыта в промышленных Big Data решениях и не смогу оценить преимущества.



Анонсы


Если честно, лично меня анонсы (тут и тут) этого года не задели за живое, и я особо их не запомнил. На квантовых компьютерах хорошо хайпиться, но незаметно, что это технология сегодняшнего дня. А больше ничего толком и не запомнилось.


Послесловие


По правде говоря, я ожидал большего количества представителей не itшных индустрий, т.к. Microsoft давно заявляет, что стремится именно помочь бизнесу с проектами, а не itшникам. Да, конечно, были доклады с участием Airbus, BMW… но я ожидал большего количества.

Office365 не моя тематика, поэтому решил даже не рассматривать этот вопрос.

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

Комментарии (1)


  1. ukod
    16.05.2019 21:04
    +1

    Отличный обзор, сэкономили мне много времени. Спасибо.