Прошло 2 недели с Online конференции Build 2020. Пыль улеглась, было время проанализировать и попробовать анонсированные технологии. Microsoft Russia уже делал свой обзор, но у меня совершенно другой взгляд на наиболее важные анонсы. Предлагаю вам свою подборку самых интересных изменений и их анализ.

Кроме того, т.к. я посетил Build 2019 лично, то решил собрать свое мнение о том, что потеряла конференция с уходом полностью в online.

Microsoft разделила свои анонсы на 5 категорий. Я сфокусируюсь на обновлениях по Azure и некоторым очень интересным анонсам для web, mobile/desktop разработчиков.

В 2019 году было более тысячи сессий. В 2020 – 600 сессий, многие из которых — это повторение одного и того же для разных часовых поясов. Получается, что уникальных сессий было всего около 400. Т.к. количество сессий снизилось, я не ждал большого числа анонсов.

Краткое summary по Microsoft 365/Security/Windows/Edge&Bing, которые не были основным фокусом этой статьи:
  • Microsoft 365 не входит в сферу моих интересов, но, на мой взгляд, общий тренд следующий: Covid-19 массово отправил людей работать из дома, никто не верит, что сотрудники быстро и в полном составе вернутся в офисы (офисы надо переделывать, а это время и деньги), поэтому любые решения по организации совместной работы распределенных коллективов будут заходить “на УРА”. Microsoft в качестве такой точки кристаллизации использует Microsoft Teams, вокруг которой строится экосистема.
  • Security (нишевые вещи изменились, и, на мой взгляд, не заслуживают даже отдельной секции в этой статье)

    • Вышли обновления к SDK для MSAL/Microsoft Identity platform. По-моему, довольно минорное обновление.
    • Обновился Azure Active Directory – не думаю, что интересно широкой аудитории.
    • В Azure Security Center появилось Score API и Alertы стало удобнее фильтровать. Сарказм: алерты — это прямо невероятная фича, даже и не знаю, как они смогли!
  • Windows
    • В Windows Subsystem for Linux добавлены UI-специфичные фичи. Не думаю, что на Linux прямо много UI софта, без которого ни одна домохозяйка не проживет. А вот сделать что-то, чтобы Data Scientist в каких-то сценариях могли, не пересаживаясь с Windows, запускать свои Data Tools и выполнять расчеты, не выходя из Windows, – это вполне себе сценарий, хотя и очень узкоспециализированный.
    • Про Project Reunion расскажу отдельно вместе с MAUI, т.к. обе анонса — это про очередную унификацию разработки на Windows.
    • Про остальные, на мой взгляд, узкоспециализированные анонсы писать не буду.
  • Edge&Bing — Достаточно минорные обновления/мало кому релевантные, так что даже описывать нет смысла.


Web разработка


Тут тоже без революций. Детали можно прочесть тут и тут.

Если свести 2 статьи в короткому резюме, то получится следующее:

  • HTTP 1.1/2.0 стало быстрее
  • На ARM процессорах стало быстрее
  • Размер container images стал еще меньше
  • Научились собирать практически в 1 файл приложение и все его dllки
  • Улучшили предсказуемость времени обработки запроса. Т.е. стали биться над улучшением результата не для не percentile 50, а percentile 95.

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

Но я бы обратил внимание, на ARM и предсказуемость. Я считаю, что этими обновлениями Microsoft целится в том числе в IoT/IoT Edge/5G (обещает сделать революцию во многих сферах), где как раз часто нужно предсказуемое время ответа, размер образа очень важен, т.к. доставляется по сети и т.п.

Обновления Blazor до 3.2, я комментировать не хочу, т.к. не верю в широкое распространение этой технологии.

Entity Framework Core

Даже обсуждать нечего, в комментариях под анонсом много едких комментариев уровня- “вы там что, все в отпуске было с прошлого build?” Да, делают CosmosDB провайдер… и что, это все за год упорной работы?

Подводя итоги по Вебу

Если бы вы впали в кому год сразу после Build2019, и проснулись уже на Build2020 — вас бы удивил только формат конференции, а нее анонсы по вебу.


Azure


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

Приятно, что наконец-то Windows контейнеры для AKS (Managed Kubernetes) вышли в GA. Можно даже на одном кластере, но в разных Pools иметь и Linux, и windows приложения (важно, когда мигрируются старые приложения или большие решения из множества частей).

Azure Static Apps (не путать со Static Web Sites)
Из названия я предположил, что это ребрендиг Azure Statc Web Sites с улучшениями (Когда у нас сайт лежит в azure storage account, накрыт сверху CDN и это все вместе называется static web sites), но я не угадал. На самом деле, это новый хостинг для статических вебсайтов со множеством фичей, который вы ожидаете от веб хостинга.



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

Кроме того, в документации-рекламе сказано, что сервис бесплатный, но на официальной странице с ценами все честно и сказано: “бесплатно в preview. Цены будут объявлены позже”. Я даже не удержался и попросил документацию исправить, чтобы она не была похожа на кричащую рекламу.

Мысли вслух: кажется, Microsoft таки начал превращать github в полноценную часть компании.

Azure ARC (был анонсирован на Ignite в Ноябре 2019) для Kubernetes и Virtual Machines – вышел в public preview. Дополнительных технических деталей не анонсировали, но теперь этот сервис можно хотя бы потрогать. Azure ARC — это такой способ управлять вашими on-premises ресурсами из портала Azure. Нужно установить специальный агент, который будет общаться с вашей инфраструктурой и Azure Portal/API. Я уже говорил, что Microsoft переходит от подхода: “Azure – это расширение вашего датацентра” к подходу “Ваш датацентр- это то, что еще не вынесено в Azure”.

AKS (Managed Kubernetes Cluster) завезли в Azure Stack Hub(Программно-аппаратный комплекс, который монтируется в вашем датацентре и предоставляется схожий набор API и схожий портал, как в большом Azure) в preview. Раньше был доступен только ACS Engine, который делал вам не managed cluster, а все-таки unmanaged cluster, но хотя бы его создавал с минимальными трудозатратами с вашей стороны.

В ARM добавили What-If команду, которая покажет что именно в текущей инфраструктуре будет добавлено, удалено, изменено. Согласен, полезная мелочь.



Раньше, можно было вызвать команду Deploy с ключом Verify, который возвращал только можно или нельзя этот шаблон применить, и если упадет, то на каком действии. Но что конкретно будет удалено-добавлено, доступно стало только с “What-If”

Azure Application Insights стало возможным добавить в приложения на Java/NodeJS, которые хостятся на Azure App Services или AKS, без изменения исходного кода (Codeless integration). Для .Net это минимум год, но Microsoft следует свой политике, что Azure – это не только Windows и .Net, но все остальные популярные технологии.

Bots и связанные с ними сервисы


Bot Framework и сервисы с ним связанные достаточно сильно обновили. Улучшения в Bot Framework перечислять и комментировать не буду т.к. давно плотно не работал.

Самое заметное то, что Bot Framework Composer выпустили в GA. Т.к. очень уж хочется писать ботов не на C#/NodeJs, а все-таки в графическом дизайнере блоками.
Понятно, что рано или поздно в процессе эксплуатации придется-таки перейти на код, но многие простые сценарии можно и без этого сделать.

В QnA maker сделали rich text editor для ответов. Это была боль, когда в ответ можно было отдать только plain text.



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

Azure Cognitive Search

Анонсировали 2 preview фичи в Azure Search — интеграция с Azure Machine Learning и Customer Ranking.

Общее ощущение, что для сервиса сменился(появился) другой вектор развития, а именно — поддержка разработчиков ботов.

Например, можно из текста вычленить PII данные, если часть текста не на основном языке — перевести. А с использованием Azure ML сервиса к тексту можно сделать очень много разных enrichments.

Custom Ranking тоже полезная вещь, т.к. раньше можно было тюнить веса полей при ранжировании. Теперь можно целый DSL использовать, чтобы вычислить значение.

За последние 4 года я помню мало изменений. Кроме ребрендинга с добавлением модного слова Cognitive (возможность через Cognitive Service Vision Service/OCR вытащить из картинки текст и объекты, добавив их в индекс) и появления HD SKU).


CosmosDB ServerLess и AutoScale


Microsoft идет все больше в Serverless, вот и CosmosDB Serverless завезли (годом ранее завезли SQL Database Serverless).

CosmosDB был и есть очень дорогим решением т.к. платить надо было за фиксированный в Request Units уровень производительности. Это очень сильно противоречило идее, что cloud native приложения должны гибко адаптироваться к изменению нагрузки, а CosmosDB фактически заставлял по худшему сценарию резервировать мощность.



Но работает Serverless для CosmosDB не совсем так, как раньше для SQL Database. Т.е. оплата идет только за фактически потребленные RU, но не за минимальный уровень.

Autoscaling – тоже правильная фича, с точки зрения настоящей cloud native разработки.



Autoscaling для CosmosDB выглядит именно так, как он выглядел для SQL Database (одно и то же название и разное поведение, конечно, вызовет проблемы для архитекторов, но с неконсистентностью придется жить). Вы указываете нижнюю границу по которой всегда будете платить и верхнюю границу — до которой можно потреблять ресурсы по необходимости. В итоге платить вы будете за минимальный уровень + то, что было потреблено сверх него (на графике — за площадь под синей кривой)

Azure Synapse Link

Теперь, можно из Azure Synapse напрямую делать запросы в первичные источники данных типа CosmosDB (и в будущем Azure SQL, Azure Database for PostgreSQL and Azure Database for MySQL), без предварительной заливки данных через ETL в сам Synapse. (Synapse – до ребрендига – Datawarehouse).


Если коротко, то создается дополнительный column store, который автоматически обновляется, и уже к нему через Synapse Link идет подключение. Раньше, Microsoft очень часто “продавали” CosmosDB, как аналитическую базу, которой она не являлась и потом тем, кто на ней должны были делать аналитику- очень сильно ругались. Теперь, маркетинг и имплементация не должны расходиться.

Postgress/MySQL

Serverless пока не анонсировали, по этому довольствуемся громким заявлением, что Microsoft будет больше и активнее инвестировать в Postgress/MySQL PaaS. За заявление – спасибо. Пока завезли интеграцию с Azure Active Directory, возможность сделать предоплату на несколько лет вперед (Reserved Instances) и много разных изменений. Возможно, те, кто часто используется Postgress/MySQL PaaS в Azure, высоко оценят эти изменения, но, на мой взгляд, это просто эволюционное развитие, и никаких громких анонсов по MySQL/Postgress не было.

SQL Edge

SQL Edge для IoT сценариев вышел в GA. Но его еще год назад анонсировали на build2019, так что новость слабенькая.

IoT


Мне тяжело судить о том, насколько важны обновления в разделе IoT, т.к. мне не довелось еще в реальном IoT проекте поучаствовать. Поэтому мое мнение – это мнение абстрактного специалиста по Azure.

Очень интересно звучит возможность добавить карту своего здания, в Azure Maps Private Atlas. Т.е. есть у вас план этажа, то к нему расположение IoT устройств можно сделать. Карта будет доступна только вам. Наверняка можно это сделать и без Azure Maps, но звучит полезно.

Для IoT Hub можно теперь пустить трафик не через публичную сеть, а через vpn и только потом в IoT Hub.



Я так понял, что это сценарий не для бурильных установок в степях, где с интернетом в принципе плохо, а для сценариев, где IoT девайсы стоят на пример в офисе компании или умном здании (smart building) и имеется хорошая сеть, которую можно использовать, чтобы доставить телеметрию в Azure, в обход публичного интернета.

Digital Twins/RTOS не готов комментировать.

Подводя итоги по Azure анонсов
Я бы сказал так: спокойное, планомерное развитие, без революций относительно прошлого календарного года. Какие-то новые тренды я не смог выделить, все как и раньше — Data+AI/IoT.


Windows Development


Microsoft не была бы Microsoft, если бы с целью унификации разработки не анонсировала сразу 2 платформы.

Я уже давно сбился со счета, сколько раз Microsoft выкатывала новые desktop/mobile фреймворки и application models, которые, по заверению маркетологов и евангелистов, были лучше предыдущих, и каждый раз они были не совместимы с предыдущими решениями, в которые сообщество разработчиков уже успело инвестировать свое время.

.Net MAUI




На этот раз, Microsoft из Xamarin.Forms сделало фреймворк, который должен был в очередной раз дать разработчикам возможность писать “одно приложение и запускать его на разных платформах”. На данный момент под разными платформами подразумевается IOS/Android/Mac/Linux/Windows. Должен признать, что список целевых платформ приятно радует, т.к. как ранее под разными платформами в основном подразумевалась последняя версия windows/windows phone/xbox.

Целевая дата выхода — Ноябрь 2021 (.Net 6). До этого момента еще много времени, и бросаться с головой в этот омут не стоит.

В комментариях к анонсу много отсылок на “Flutter” и Platform.uno, что Microsoft создает то, что уже есть.

C одной стороны - комментаторы правы и варианты уже есть.
С другой стороны — вы серьезно считаете, что одна из самых больших в мире компаний по рыночной капитализации отдаст на откуп “сообществу” такой важный кусок, как единая платформа разработки mobile/desktop приложений? Microsoft из стратегических соображений должен написать свое решение в этой области, чтобы иметь вертикально интегрированный стек технологий. Можно вспомнить и другие примеры такого подхода, которые можно было бы вместе охарактеризовать “это написали не они”.

Project Reunion


В теории выглядит не плохо (хотя надо было делать еще в 2012 году до появления WinRT). Красивая анимация.



Вместо Win32 API и UWP API – у нас будет прослойка, которую нужно будет вызывать, а она уже будет проксировать вызовы дальше. Она будет распространяться через nuget пакеты (не очень понятно только, как быть с разными версиями UWP API на разных версиях Windows 10) и будет доступна для модернизации приложений в том числе и на WPF/Winforms/UMP/ReactNative

Точных дат, понятное дело, нет, но если верить планам, то когда-нибудь в 2021++. Я интерпретирую эти даты как 2022 год. Исходных кодов пока не завезли, но обещали.

Подводя итоги по Windows для разработчиков
Я бы сказал так: анонсировать еще 2 несовместимые со всеми предыдущими платформы, требующие основательного переписывания кода, с отдаленными датами выхода (через 1.5 года) не звучит как стратегия быстрой победы. Свое время я бы на это не тратил ближайшие года 1.5, а там уже будет build2021, на котором всегда можно анонсировать еще пару платформ для унификации предыдущих.


Разное


Не вижу смысла обсуждать темы типа Квантовые вычисления и Суперкомпьютер Microsoft, т.к. это замечательный повод “срубить хайпа”. Мою жизнь, как разработчика или архитектора, это никак не затрагивает. То, что Holelens2 завезли в Европу и Азию замечательно, но я был удивлен, что раньше он был недоступен в этих регионах. Project Bonsai сервис для создания автономных автомобилей- круто, но нам то что с этого хайпа?! (сколько из нас делают такие системы?)

Общее впечатление от мероприятия


Когда другие крупные компании просто отменяли конференции, Microsoft попытался провести конференцию, пусть и в нетрадиционном формате. За попытку мое уважение.
Количество сессий и анонсов сильно упало — Если в своем отчете за 2019 год, мне было очень тяжело перечислить все обновления и улучшения, то в 2020 году такой проблемы не было.

Почему так произошло? Я не знаю, но есть предположение.
Не думаю, что у Microsoft не хватает денег, инженеры массово стали болеть или из дома они работают не эффективно.

С началом пандемии, когда компании массово отправили своих сотрудников на “удаленку”, у Microsoft Azure начался кризис с доступностью ресурсов (нельзя было создать: sql database, виртуальные машины для free trial/msdn подписок и многие другие типы ресурсов).
Суть моего предположения в том, что запуск новых сервисов и фичей был деприоритезирован в пользу оптимизации и преодоления кризиса нехватки ресурсов (не до жиру). Когда кризис с нехваткой ресурсов будет так или иначе преодолён, думаю мы услышим много новых анонсов, т.к. вряд ли всех программистов “бросили на баррикады”.
Microsoft сделала красивое заявление, что приоритезированы запросы на ресурсы для тех организаций, кто борется с эпидемией, но позиция, откровенно говоря, слабая. Когда у твоих конкурентов сверху и снизу (AWS/GCP) проблем с наличием ресурсов таких масштабов не наблюдалось, кто-то начинает догадываться, что у вас просто резерв мощностей был ниже, вот они и закончились. Может быть, у Microsoft всплеск потребления был пропорционально выше, чем у конкурентов, но такой статистики я не нашел.

Отсутствие Exhibition. Exhibition в 2019 году — это огромное пространство, где можно было подойти к компаниям-партнерам Microsoft. Лично мне было очень интересно пройтись, попросить личную демку на 3-5 минут, задать свои вопросы на понимание. Делать то же самое из дома через гугл было бы сильно дольше.

Особенности онлайн формата

Возможно, моя личная проблема в том, что я не из поколения Z. (Говорят, что для них разницы между онлайн и оффлайн нет.)

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

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

Я бы сравнил это с бракосочетанием, когда все такие нарядные, оркестр, цветы. А с другой стороны — когда ты на сайте вроде ГосУслуг в 3 клика отмечаешь, что теперь вы женаты. Совершенно разные эмоции.

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