28-29 мая прошел MS DevCon, на котором MS рассказывал про продолжающееся движение к реализации своих новых концептов. Векторов движения, по-крупному, всего два: ALM и Win8 вместе Azure. Основные принципы были сформулированы ранее, год назад на DevCon многое звучало на концептуальном уровне, а сейчас доклады больше показывают реализацию, и содержат приличную часть технических инструкций по исполнению. А еще есть отчетливый тренд разворота MS к ИТ-сообществу. Все конференцию повторялся лозунг: «Мы слышим ваши отзывы».
Важно, что это — не специфические MS тренды, это тренды отрасли в целом, просто переосмысленные с формулированные в некоторой цельности. Я вижу их и в других сегментах, хотя MS далеко не всегда об этом говорит. Этим и ценна для меня конференция MS — я могу посмотреть на цельную интерпретацию трендов, часть работы по осмыслению за меня проделана.
WiFi и управляемое качество
Но начну я отчет с того, что пожалуюсь на WiFi. C ним на конференции были проблемы, он регулярно отваливался не только у меня, но и у докладчиков, когда они хотели что-то продемонстрировать, и из зала обычно подтверждали — да, печалька. Или делал вид, что работает — подключение есть, а в интернет не пускает. И я не понимаю, почему на серии конференций it-conf Влад Орликов может обеспечить WiFi, а Микрософт этого не может.
Хотя, если подумать, это очень характерно для Микрософт. Потому что там вместо прямого доступа через роутер были какие-то перенаправления, и наверное что-то где в кэшах зависало и потому не работало. Сложный концепт сделан на живую нитку, имеем результат. Собственно, потому и нужны технические составляющие в докладах, что «тут — так, а там — этак, а здесь рыбу заворачивали». С частью вещей, которую сочли важной, успели поработать на предмет приемлемого старта, а с другие сшили как получилось, и докладчик показывает, что методом притопов и прихлопов это вполне можно заставить взлететь, то есть установить и настроить, а уж сам полет, в целом — нормальный.
Можно, конечно, решить, что MS делает это специально, чтоб не слишком «оторваться» от сообщества разработчиков, показать, что «мы такие же, а не крутые полубоги». Но я думаю, что здесь проявляется другое: в условиях, когда скорость выхода новых фич является действительно важным конкурентным преимуществом, качество приносится в жертву скорости. Но управляемо — там, где его отсутствие, по замыслу не является критичным. Что такое управляемое качество Вы все знаете по китайскому производству. Это не значит, что все плохо и разваливается или не работает. Это значит, что по желанию заказчика его обеспечивают на требуемом уровне, и цена от этого напрямую зависит. Теперь это умеют не только китайцы, но и Микрософт. И действительно умеет, потому что полет-то в целом нормальный, и даже фигуры высшего пилотажа местами получаются.
Но, не взирая на написанное, я искренне надеюсь, что к следующей конференции Микрософт поймет, что WiFi — важно и настроит его :) Потому что во всем остальном организация конференции — вполне достойная. Включая вечер первого дня — концерт, а потом еще вечер у костра с гитарой.
ALM
Тренд ALM — в комплексных решениях поддержки полного жизненного цикла приложений. В крупном он поддержан TFS, в который инкорпорируются другие приложения, такие, как Release management. При чем, если на уровне докладов обозначается, что они — отдельно, а по технической части даже видно насколько отдельно, то на уровне названий и позиционирования это — компоненты единого целого. И MS старается, чтобы на уровне повседневного использования, а не разовых настроек это действительно функционировало как единое целое.
При этом средства все больше дотягиваются из технической составляющей к организационной и бизнесовой. Сам TFS оброс сопутствующими средствами для анализа исполнения задач — данные передаются в warehouse и далее в analysis (об этом чуть дальше). А Release management включает не только средства описания конфигураций с развертыванием приложений в тестовом контуре, прогона автоматических и ручных тестов, а потом — развертывания в промышленном контуре, но и организационный workflow принятия решений о выпуске версий через прохождение гейтов, которое вы тоже настраиваете для своего продукта.
Комплексность решений ALM проявляется не только в крупном, но и в частных решениях. Примером может служить api management — решение, поддерживающее эксплуатацию обобщенного api, доступного по http. С его помощью порождается сайт, содержащий документацию на ваше API, а содержащий демки для использования, а также позволяющий сразу вызывать его и посмотреть на результат. Таким образом технологизируется солидный кусок обеспечивающей работы. Аналогично, есть готовое решение feedback client для встраивания в свое приложение, обеспечивающее инфраструктуру поддержки.
Естественно, поддержка ALM для конечного разработчика интегрируется в VS. И хочу отметить. что это по факту привело к многомерной организации кода, которую еще предстоит осмыслить. Помимо традиционного разбиения на сборки, файлы, пространства имен и классы есть альтернативная раскраска по коммитам тасков, обеспечивающая выделение кода к фиче. Практически она может быть использована для покрытия тестов и для оценки, какие тесты надо запускать при изменении кода. И это поддержано на уровне интерфейса. А вот что это дает с точки зрения методологии разработки — пока не понятно. Но у меня есть подозрение, что такая сетевая организация правильном осмыслении может дать новые возможности. О такой раскраске рассказывал Эндрю Брэгдон в докладе Повышение продуктивности разработки и качества программного обеспечения с Visual Studio Ultimate, наряду с другими инструментами — code maps, code lens. Доступными, правда, преимущественно в дорогущей ultimate-редакции.
Win8 и Azure
Второй тренд, который я назвал как Win8 + Azure по сути представляет собой новую парадигму разработки приложений. Я сейчас обозначу ряд составляющих этой концепции, которые в совокупности сильно меняют прежние подходы, хотя каждый в отдельности меняет не очень сильно. Надо сказать, что методологического осмысления этой концепции пока, по-моему, нет. Есть. с одной стороны, принципы «должно быть так», а с другой — технические решения, позволяющие это сделать по каждому принципу отдельно. А вот комплексной конструкции пока не видно.
Итак, принципы.
- Работа пользовательского (клиентского) приложения на всей цепочке телефон — планшет — ноут — десктоп с примкнувшим к ней где-то xbox. С поддержкой особенностей этих устройств по эрногомике интерфейса и специфичного для них оборудования. Естественно, без фанатизма «любое приложение на всей цепкочке», однако для многих приложений уместна существенная часть цепочки, а технологическая платформа покрывает всю, с ограниченным количеством специфического кода в приложении.
- Конструкция серверного приложения в виде, пригодном для масштабирования при добавлении серверных мощностей — без разницы, в облаке или за счет железа. Обеспечивается это мелкой нарезкой приложения на сервисы, которые потенциально могут быть разнесены на разные ноды и подняты во многих экземплярах по необходимости. Конструкция гетерогенного хранения данных (SQL и NoSQL с разными реализациями). Hadoop — он про это, но это — один из вариантов и про данные.
- Интеграция на уровне клиентского приложения многих серверных приложений со сквозной навигацией, взаимодействие разных клиентских приложений. При этом — активное поведение клиентских приложений, уведомления.
- Работа с личных устройств в корпоративных приложениях с сохранением безопасности, интеграция между корпоративными и и публичными приложениями, интеграция корпоративных приложений с открытыми источниками данных.
- Обеспечение обновление клиентской и серверной частей в автоматическом асинхронном режиме, с сохранением работоспособности (в том числе continuous delivery).
Отметим, что в публичном интернете становится все больше общедоступных данных, которые легко можно использовать в своих приложениях. Есть готовые календари разных стран, доступна экономическая статистика и курсы. Используются публичные стандарты ODATA, что позволяет легко подключать эти потоки на всех уровнях — и к серверным решениям, и непосредственно к клиентским.
Тренд мелококомпонентной, многослойной разработки означает, в том числе, использование в приложениях технологий от третьих компаний, а не только от MS. И если раньше на конференциях звучало лишь, что это возможно, то теперь в докладах MS показывает решения третьих фирм, говоря, что часть преимуществ, например, высокая переносимость между устройствами или разработка кроссплатформенных графических игр может быть обеспечена использованием конкретных технологий, таких как Xamarin, Unity 3D и других. Отметим, что Xamarin был расширен еще и на работу на Android и iOS, платформа MS перестает быть ограничением.
Проектированию эргономики интерфейсов для продуктов, работающих на десктопах и планшетах был посвящен доклад Анатолия Любомирова и Сергея Мельникова из Intel UI + UI = profit?. Отметим, что актуальность темы провоцируется появлением ноутов-трасформеров, которые могут работать в обоих режимах, переключаясь динамически — и приложение должно отрабатывать эти переключения. Доклад не давал универсальных рецептов, однако на примере пары конкретных приложений показывал изменения. И это — предмет отдельного проектирования.
BI
Отдельным потоком развития можно выделить BI-решения. Тут у MS есть очередное новшество, расширение в Excel PowerBI (он же Power Query), многомерная модель данных. На эту тему было доклад Станислава Выщепана «Будущее сегодня. BI в облаке». Интересна история. Был проект Oslo (не связан с одноименным, который идет сейчас). Там был «язык М» для описания моделей данных. Потом MS пошел в облака, проект закрыли. А тут решили, что надо в Excel язык запросов к данным — достали этот язык, обернули графической оболочкой интерактивного создания конструкций — и запустили. получился третий способ получения внешних данных в Excel помимо существующих источников в книге или в Power Pivot — Power Query, ориентированный на BI. Что интересно, данные можно получать из facebook, почты, а также -з общедоступных источников в формате ODATA — и выдает World Bank, Yahoo Finance и другие. Фишка в том, что формат данных, естественно, различается, однако Power Query на конвертирование данных и он запоминает преобразования, которые ты делаешь интерактивно, на том самом языке-M — и при обновлении их применяет. Станислав показывал, как сделать сопоставление данных по ВВП из одного публичного источника и расходов на медицину из другого и показать красиво на графиках. Ну а дальше все это можно использовать в Excel, а можно — загрузить в облако. в Office 365 и оно будет доступно на планшетах. При этом, что интересно, в отчетах можно смешивать публичные и корпоративные источники данных, и это смешение можно сохранить в публичном облаке без нарушения безопасности доступа к данным — надо только правильно настроить шлюзы из локальной сети к облаку, данные реально не выкачиваются, а осуществляется перенаправление. Технология совсем свежая, какие-то фичи появились пару недель назад.
А еще про BI был интересный доклад Алексея Шуленина Аналитика по портфелю проектов на примере подсистем отчетности Team Foundation Server 2013. В нем было сопоставление: как цепочка oltp-warehouse-аналитика реализована в TFS относительно эталонной реализации MS, предлагаемой для пользователей. В этом месте MS не хочет «сам есть свой хлеб», разработчики TFS реализовали собственную перекачку oltp-warehouse, не воспользовавшись SSIS. И, как следствие — потеряли кастомизацию. В oltp-схему TFS вы можете добавлять свои поля, а вот tfs_warehouse появляется «как настроено». До TFS 2010 шла речь о возможности написания «своих адаптеров» под эти кейсы, но потом она исчезла. Конечно, можно попробовать добавить поля вручную и настроить что-то свое, но при перестройке и, возможно, обновлении TFS — у вас все пропадет, потому что структура данных TFS не является предметом контракта. Однако, если вам стандартного хватает — можно вертеть таблички tfs_warehouse в Excel как простую табличку или pivot table. А можно пойти дальше, в многомерный TFS_analysis на основе MDX — extention к SQL, который появился в 2012 году.
Обновление технологий
Естественно, в процессе реализации происходит переосмысление, какие-то начальные ветки признаются тупиковыми и закрываются без поддержки. Этот процесс отчетливо виден в докладах, когда указывается на различие технологий от ранних версий Win8, Visual Studio или TFS к новым. При этом на конференции представлен действительно передний край, про некоторые технологии говорилось, что они появились месяц назад или менее, а про другие — что над этим идет работа и запланировано в ближайшем будущем.
И надо понимать, что такая высокая динамика технологий — это факт. Когда какая-то технология устоялась, она — кандидат на стагнацию, развитие будет идти только по ставшим очень популярными — а с ростом динамики изменений такие просто перестанут появляться. А неудачные реализации новых концепций рубят без всякого сожаления через год-два, заменяя новыми вариантами. И если вы хотите реализовывать более приложения и системы, развивающиеся дольше — Вам придется найти способ адаптации их к быстроменяющимся технологиям. Мелкая компонентность и относительная стабильность базовых технологий интеграции, которая является трендом архитектуры — должна в том помочь, хотя автоматически — не обеспечит.
Лицом к ИТ-сообществу
И, как я отмечал в начале, развитие идет под лозунгом «Мы слышим ваши отзывы». Декларируется, что развитие происходит в интересах ИТ-сообщества и оно — может на него повлиять. И в этом отчетливо чувствуется дух времени. MS строит экосистему разработчиков как среду, комфортную для небольших команд и индивидуальных разработчиков. При этом им не нужна инфраструктура, они могут работать в облаке на VS online и других средствах. Крупные компании, конечно, тоже остаются, но их ареал — уменьшается.
Естественно, при этом важно, чтобы небольшие команды могли воспользоваться технологиями, пройдя все притопы и прихлопы, и на это были нацелены многие технические демонстрации. Но не менее важно, чтобы они понимали составляющие правильной разработки, то, что принято уже на уровне гигиены. Об этом рассказывал Владимир Гусаров из Dell в докладе Управление качеством в промышленной разработке программных продуктов, там, с моей точки зрения, был ликбез по необходимым практикам. При этом большинство упомянутых ими практик — действительно на уровне гигиены, а не на уровне какого-то продвинутого качества. И они должны быть, хотя реализовывать их можно на самых разных инструментах, хотя в докладе, естественно, присутствовали инструменты MS.
Помимо how-to и ликбеза были глубокие технические доклады, такие как доклад Евгения Агафонова из ABBYY Глубокое погружение в инфраструктуру асинхронного ввода-вывода для веб приложений. А еще я хочу отметить превосходный доклад Дмитрия Сошникова (Microsoft) Реактивное функциональное программирование на F#: от анализа твиттера в реальном времени до программирования сенсора Leap Motion и мобильных роботов. Потому что Дмитрий начал с концептуального введения в функциональное программирование и F#, которое провели очень быстро через варианты реализации факториала, и быстро перешел к концепции обработки потоков событий и проиллюстрировав ее на примере приложения анализа сообщений твитера на предмет индекса доброты с выводом в графика в реальном времени. И далее перешел к управлению роботами, которое тоже строится на основе событий. Робот — реальный, ТРИК, производят в Питере (http://trikset.com). И у него мощный контроллер, на котором можно развернуть Mono — поэтому программа на F# исполнялась непосредственно на самом роботе. Программа вела робота за ногой, но не давала врезаться. Некоторое время шло успешно, но потом Дима увлекся докладом, начал рассказывать дальше, ходить — ту что-то не сработало и робот-таки в него врезался :) А в целом доклад иллюстрировал, какие замечательные вещи можно сделать на F# достаточно дешево и, на самом деле, мне захотелось попробовать…
Вовлекаем школьников
А еще Дмитрий Сошников в докладе Из искры возгорится пламя: вдохновляем детей с помощью технологий рассказывал про активную работе MS не только со студентами, но и со школьниками. Я слушал Дмитрия на прошлой конференции, на этой — только забежал, но хочу отметить что это направление развивается и молодеет, дотянулось до начальной школы, до 8-летних. Дима наряду Микрософт работает в летнем лагере JUNIO-R.ru со школьниками и там программирование, включая игры для WinPhone успешно конкурирует с другими развлекалками, такими как съемка фильмов, программированием роботов, детским государством. Еще они ставили kinekt-спектакль, когда скелеты актеров накладывались лазерные мечи и другие артефакты. И характерный вопрос из зала был в конце: дочке 2.5 года, она использует планшет, ей нравится. Когда-то надо будет учить, что Дима посоветует? Он сказал, что, пожалуй, для таких юных технологии MS отсутствуют, но вообще можно посмотреть на программирование роботов и еще несколько вещей, которые могут быть интересны с очень раннего возраста.
На этом я, пожалуй, закончу свой отчет об образе изменяющегося мира, который я увидел на MS DevCon-2014.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.