Visual Studio Online

Введение в Visual Studio Online

Эд Бланкеншип

В этой статье обсуждается ограниченная предварительная версия Visual Studio Online Application Insights.

Продукты и технологии:

Visual Studio Online, Team Foundation Server, Team Foundation Service, Windows 8, Microsoft Azure

В статье рассматриваются:

  • разработка с помощью Visual Studio Online;
  • подготовка вашей первой итерации;
  • создание схемы рабочих элементов;
  • нагрузочное тестирование по запросу (on-demand load testing);
  • дистанционный сбор данных.

Являетесь вы членом группы или индивидуальным разработчиком, с помощью Visual Studio Online вы можете легко планировать, создавать, конструировать, компилировать, тестировать и вести мониторинг требовательных к ресурсам приложений из любой точки мира. Вам не нужна большая группа, отвечающая за инфраструктуру, и не требуется касаться ни одного сервера. Как консультант, помогавший в сотнях развертываний и обновлений Team Foundation Server (TFS), мне очень нравится, что вся нудная работа по рутинному сопровождению этого продукта теперь стала делом прошлого. Visual Studio Online автоматически и постоянно обновляется, поэтому вы можете сосредоточиться на том, что вам нужно больше всего: на создании приложений!

Что нового?

Меня часто спрашивают: «Является ли Visual Studio Online просто TFS в облаке?». Ответ: и да, и нет.

TFS был выпущен восемь лет назад, а в 2012 году был начат перенос этого продукта в облачный ALM-сервис (application lifecycle management), как только в том же году выпустили Team Foundation Service. С первого же дня началось его широкое внедрение как отдельными группами разработчиков, так и компаниями даже средних масштабов, которые предпочли избавиться от соответствующей инфраструктуры в своих организациях. Самое важное заключается в следующем: каждые несколько недель вашей группе предоставляются новые средства, которые группа продуктовой линейки TFS выпускает как внутренние пакеты. Владельцы учетных записей могут узнавать о новинках, просматривая Features Timeline по ссылке bit.ly/17DV8Yl или через социальные сети, например VSOnline в Twitter (twitter.com/vsonline).

Так что, да, Visual Studio Online — это следующий виток эволюции TFS и Team Foundation Service, который приносит фундаментальные основы ALM в облако. И нет, это не совсем одно и то же.

Пока Microsoft трансформируется в компанию, создающую устройства и сервисы, многие из вас спрашивают: «Что это означает для меня как для разработчика?». Благодаря Visual Studio Online компания Microsoft теперь располагает платформой сервисов, преимущества которых можно использовать независимо от того, работаете вы в одиночку над персональными проектами или участвуете в гораздо более крупных проектах как один из членов группы. Я исследую некоторые из этих сервисов.

ALM и прочее

Как облачный сервис Visual Studio Online обеспечивает высокую производительность и широкие возможности.

Сборка в облаке Нет серверов, нет и издержек — отлично. Ваш код стартует на чистом образе сервера при каждом выполнении сборки. Всякие зависимости и машинные конфигурации, от которых сплошная головная боль? Побоку. Вам по-прежнему нужен полный доступ к вашим сбросам сборок (build drops), потому что они также хранятся в вашем репозитарии исходного кода в Visual Studio Online. Требуется более сложная конфигурация? Подумайте о гибридном решении: экономьте драгоценные локальные ресурсы для рабочих процессов или инфраструктуры с высокой степенью настройки и используйте Visual Studio Online для таких базовых вещей, как непрерывная интеграция (continuous integration).

Нагрузочный тест в облаке Индивидуальным разработчикам, стартапам (начинающим фирмам) и даже более крупным командам трудно выполнять должное тестирование производительности под нагрузкой хотя бы потому, что необходимые ресурсы весьма дороги, а сам процесс требует много времени. Как вы сможете окупить расходы, не зная, будет ли созданное вами приложение популярным? Вместо того чтобы надеяться на одну удачу, теперь у вас есть доступ к полноценному нагрузочному тестированию как к сервису, выполняемому в инфраструктуре Microsoft, который всегда использует новейшую версию соответствующего программного обеспечения. Вы не ограничены списанными машинами, которые были выклянчены на складе, и больше не придется разбираться в том, что нужно для установки и конфигурирования; вы можете настраивать и масштабировать свои тесты так, как вам нужно, чтобы их прогон давал реалистичные результаты. Сервис нагрузочного тестирования способен обеспечить вам проверку в условиях любой нагрузки.

Полный мониторинг приложения в реальном времени У вас нет круглосуточного сервис-центра, который отслеживал бы состояние ваших производственных систем? Теперь он у вас есть — благодаря Visual Studio Online. Visual Studio Online Application Insights собирает ото всех ваших приложений детализированную операционную информацию, сведения о производительности и данные об использовании клиентами, где бы эти приложения ни находились — на вашем предприятии, в Microsoft Azure, у сторонних облачных провайдеров или во всех трех местах. Это позволяет не только предотвращать остановку ваших систем, но и вести мониторинг использования на опережение, что поможет вам решить, какую функциональность следует создать в следующей версии. Этот сервис также использует преимущества мета-информации приложения, которая помогает при исследовании проблем в выполняемых процессах, например информации сборки и развертывания, что дает возможность возвращаться к вашему решению и исходному коду в любой из ваших сред (включая производственную). Сервису уже известны необходимые данные, так как все необходимое находится в том же хранилище данных, что и ваша остальная информация ALM, а это экономит вам время.

Используйте любую IDE или облегченный редактор кода в своем браузере Visual Studio Online упрощает обновление вашего кода любым способом, в любое время и откуда угодно. Конечно, у вас имеется Visual Studio, и теперь вы можете использовать настоящий репозитарий Git для бесшовного подключения к Eclipse, Xcode и многим другим IDE при разработке кросс-платформенных проектов. В ином случае старайтесь ничего не усложнять: вносите изменения «на лету» из любого современного браузера с помощью нового облегченного редактора кода из Visual Studio Online под кодовым названием «Monaco». Этот редактор кода расширяет возможности использования вашей Visual Studio, выполняемой на настольном ПК.

Как и вы, Microsoft стремится к непрерывному совершенствованию и расширению функционала, каждые три недели выпуская обновления Visual Studio Online. Если у вас есть интересная идея по какому-то функционалу, вы можете даже участвовать в голосовании на UserVoice. Так чего же вы ждете? Отправляйтесь на visualstudio.com и приступайте. Этот продукт бесплатен для первых пяти пользователей и включает ряд дополнительных возможностей для подписчиков на MSDN; кроме того, для остальных членов вашей группы будут действовать начальные скидки на предоплатные сервисы и дополнительные пользовательские планы Visual Studio Online. Вам не придется заботиться о дополнительном хранилище, транзакциях, полосе пропускания, вычислительных циклах и других вещах, так как они включены в пользовательские планы и предоплатные сервисы.

«Из грязи в князи»: настройте свой проект на успех

Хотите понять, как Visual Studio Online может помочь вам в выпуске следующего убойного приложения? Ниже я изложу сценарий, в котором я проведу вас по начальной итерации примера в Visual Studio Online. Если вы пользовались TFS или Team Foundation Service, некоторые этапы будут вам знакомы.

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

Начать можно легко, быстро и безболезненно. Отправляйтесь на visualstudio.com, найдите в правом верхнем углу ссылку Get started for free, заполните форму и… все готово.

Получив учетную запись, вам нужно место, где будете работать вы и ваша группа. В Visual Studio Online контейнером верхнего уровня является Team Project, поэтому ваш первый шаг — создание одного из таких групповых проектов. В этот момент вы должны принять два важных решения.

  1. Какого рода репозитарий для управления версиями исходного кода вы собираетесь задействовать?
  2. Какой шаблон процесса лучше всего подходит для отслеживания ваших рабочих элементов?

Вы можете выбирать между распределенной системой управления версиями исходного кода с Git и традиционной системой управления версиями, с которой вы знакомы по TFS. Например, ваша группа в настоящее время пишет приложение Windows Phone 8 и его сервисы на серверной стороне, но в конечном счете планируется перенести это мобильное приложение на iPhone и устройства с Android. Зная, что вам придется работать на нескольких платформах и с разными IDE, вы выбираете Git в качестве репозитария для системы управления версиями исходного кода. Подробнее о выборе между Team Foundation Version Control (TFVC) и Git см. в видеоролике на Channel 9 по ссылке bit.ly/16XPcUK.

Шаблон процесса определяет ваш рабочий процесс (workflow): как называются ваши рабочие элементы (work items), через какие состояния они проходят по мере работы над ними, а также другие метаданные. Вы можете выбирать из трех шаблонов: Scrum, Agile и Capability Maturity Model Integration (CMMI). Если ваша группа следует CMMI или более формальному процессу, то, по-видимому, вам следует выбрать этот шаблон. Если же ваша группа придерживается гибкого стиля (agile) или у вас вообще нет конкретного процесса, выбирайте между шаблонами Agile и Scrum. Самое крупное различие между ними в том, как обрабатываются ошибки и какие имена используются для элементов списка незавершенных работ (backlog). В шаблоне Agile ошибки обрабатываются как задачи, тогда как в шаблоне Scrum они отображаются в вашем списке незавершенных работ наряду с его другими элементами. Если вы не уверены, придерживайтесь шаблона Scrum — недаром он предлагается по умолчанию. Выбор шаблона Scrum не означает, что вы должны работать в стиле Scrum; это значит, что для типов рабочих элементов будет использоваться терминология Scrum. В Scrum требования рассматриваются как Product Backlog Items (PBI), а в Agile — как User Stories. Узнать больше о работе с групповыми проектами и о ключевых различиях между шаблонами процесса можно по ссылке bit.ly/Vh0azl.

Как только вы получили свою учетную запись и создали групповой проект, добавьте членов группы. Для этого убедитесь, что у вас есть их учетные записи Microsoft (ранее Live ID), перейдите на начальную страницу своего проекта (myawesometeam.visualstudio.com) и следуйте схеме, показанной на рис. 1.

Добавление членов группы
Рис. 1. Добавление членов группы

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

Настройка связей: подготовка вашей первой итерации

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

Прежде чем заниматься рабочими элементами, я кратко расскажу вам о некоторых деталях. Выбор шаблона Scrum означает, что вы будете работать в основном с функциями (features), PBI, ошибками и задачами (существуют и другие типы рабочих элементов, но большинство из них помогает вам «закулисно»). На рис. 2 схематически показаны взаимосвязи между этими типами рабочих элементов, которые поддерживаются ссылками на рабочие элементы.

Взаимосвязи рабочих элементов
Рис. 2. Взаимосвязи рабочих элементов

Features/Themes Функции/Темы
Features Функции
Units of Value Единицы ценности
Bugs Ошибки
Product Backlog Items Элементы списка незавершенных работ по продукту (PBI)
Units of Work Единицы работы
Tasks Задачи

В принципе, функция (feature) представляет некий объем работы, распространяющейся на итерации (их иногда называют эпопеями [epics]), PBI — это единицы ценности для клиента, которые можно завершить за одну итерацию, а задачи — единицы работы, которые можно выполнить в течение пары дней. Использование их таким способом позволяет разбивать представление проекта на любой уровни детализации, имеющие смысл на данный момент. С рабочими элементами связано гораздо больше, чем я могу рассказать вам здесь, поэтому предлагаю почитать соответствующие статьи в MSDN, если вам нужно больше информации.

Одно последнее замечание по рабочим элементам: если вы видите какое-то поле, это еще не значит, что вы обязаны использовать его. Используйте те поля, которые имеют смысл для вашей группы и игнорируйте остальные. Совет из моего прошлого опыта в помощи многим группам — по возможности никогда ничего не усложняйте.

Теперь пора приступить к заполнению списка незавершенных работ, поэтому щелкните вкладку Work на странице проекта. Тем самым вы перейдете в список незавершенных работ по своему продукту.

Меню слева позволяет получать представление с соответствующим уровнем детализации, и вы можете добавлять элементы на этот уровень из списка справа. Для расстановки приоритетов в списке незавершенных работ можно вертикально переупорядочить PBI.

Теперь, когда у вас есть какая-то работа в Product Backlog, настала пора подумать о первой итерации. Ваша группа хочет продвигаться быстро, поэтому решает доставлять результаты итераций еженедельно, например по вторникам. Первым делом назначьте своей итерации какие-то даты. Это можно сделать в меню настроек или, если ваше представление детализировано до конкретной итерации, по ссылке Set Dates.

После этого можно приступить к связыванию PBI из списка незавершенных работ с вашей итерацией, перетаскивая их справа и помещая на соответствующую итерацию слева. Как только PBI оказываются в итерации, вы можете разбить их на индивидуальные задачи для членов группы, как показано на рис. 3.

Планирование итерации
Рис. 3. Планирование итерации

Это лишь верхушка айсберга, относящегося к тому, что можно делать с помощью средств гибкого планирования (agile planning tools). Когда численность вашей группы увеличится и ваши потребности станут сложнее, вы сможете добавлять такие вещи, как планирование пропускной способности (capacity planning), прогнозирование и управление планом тестов. А пока вам достаточно того, что уже есть, поэтому приступайте к работе над PBI.

По мере «сгорания» (burn through) элементов в списке незавершенных работ, вам нужно отслеживать продвижение в работе. Вашей группе требуется получать более качественное представление о состоянии текущей итерации, поэтому в ходе краткого ежедневного совещания вы используете доску с графиком задач итерации (iteration task board).

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

Доска с графиком задач итерации хороша для отслеживания работы, но, чтобы прочувствовать продуктивность рабочего процесса в группе, вам нужна доска с областью на уровне PBI или функции. Переключитесь на доску Kanban, доступную из Product Backlog.

Отсюда вы можете задать границы выполняемой работы (work-in-progress limits) для каждого столбца, отслеживать ход работы и просматривать диаграмму суммарного потока работ в вашей группе. Вам нужно, чтобы доска Kanban отражала рабочий процесс вашей группы, поэтому щелкните кнопку Customize columns и внесите соответствующие изменения. Модифицируйте названия столбцов и добавляйте новые так, как вам требуется. Очень удобно, что в каждой группе можно настраивать столбцы в соответствии с ее потребностями, не влияя на планы других групп.

Теперь предположим, что вы привели своего первого инвестора! К сожалению, эта компания-инвестор не собирается молча сидеть и ждать окончания работ, и, чтобы получать от них финансирование, вы должны еженедельно предоставлять им обновления состояния по достигнутым ценности и качеству продукта. На первый взгляд, это требует уймы издержек. К счастью, вам известно о диаграммах рабочих элементов (рис. 4), которые позволяют легко и быстро создавать необходимые отчеты.

Диаграммы рабочих элементов
Рис. 4. Диаграммы рабочих элементов

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

Обеспечение ценности: создание вашего приложения

Вы знаете, как писать код. Вам также известно, что поддержание должного уровня качества имеет первостепенное значение для ваших клиентов. К сожалению, и вас, и вашу группа так переполняют новые идеи, что иногда очень легко перекинуться на следующую концепцию, не полностью реализовав текущую.

Ваша кодовая база не всегда компилируется успешно. После краткого ретроспективного совещания (quick retrospective) ваша группа решает, что нужна начать использовать автоматизированную сборку с применением непрерывной интеграции (continuous integration, CI) или даже шлюзовой постановки кода на контроль (gated check-in), чтобы плохой код не попадал в репозитарий. У вас нет инфраструктуры или времени на установку и настройку собственного локального сервера сборки. Вот здесь и приходит на помощь облачный сервис сборки Visual Studio Online.

Из Team Explorer в Visual Studio IDE выберите страницу сборки, а затем New Build Definition. Присвойте имя новому определению, выберите триггер и пройдите остальную часть мастера. Не забудьте по окончании сохранить свое определение сборки.

Только потому, что это CI-сборка (или сборка с любым другим типом триггера), еще не значит, что вы не сможете вручную запускать ее внепланово, если в том возникнет потребность. Конечно, вы могли бы запускать ее из Team Explorer, но разве это интересно? Открывайте любимый браузер и отправляйтесь на вкладку Build на странице своего проекта. Выберите вашу сборку из списка слева и щелкните Queue Build.

Подготовив CI-сборку, зайдите в помещение, где располагается ваша группа, чтобы посмотреть результаты и поделиться хорошими новостями. Подробнее о процессах сборки см. по ссылке bit.ly/158otoM.

Нагрузочное тестирование по запросу

Ваша база пользователей быстро растет, но пользователи сообщают о больших задержках на вашем сайте. Вы не в состоянии локализовать источник задержек, поэтому хотите создать какие-то реалистичные тесты производительности и нагрузочные тесты, чтобы выявить узкие места. Вы начинаете записывать некие тесты веб-производительности с применением Visual Studio Ultimate. Каждый тест представляет типичный способ, которым пользователь взаимодействует с вашим сайтом; такой тест называется синтетической транзакцией.

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

Как только вы сбалансировали свои тесты производительности и объединили их в нагрузочный тест, вы указываете его выполнение в Visual Studio Online, открыв файл параметров теста и выбрав Visual Studio Online. Затем вы наблюдаете, как нарастает объем данных (рис. 5).

Просмотр результатов нагрузочного теста
Рис. 5. Просмотр результатов нагрузочного теста

Да, вы сделали то же самое меньше, чем за час. Подробнее об этом процессе см. по ссылке bit.ly/18hIcCm.

Мониторинг и постоянное изучение: дистанционный сбор данных

Ваше приложение и поддерживающие его сайты и сервисы Microsoft Azure активны. Пользователи вроде бы нормально скачивают его. Люди вроде бы переходят на сайт, и клиентское приложение взаимодействует с сервисами на серверной стороне. Но, по крайней мере иногда, происходит что-то непонятное. Вы не вполне уверены, что именно…

Вам нужно начать дистанционный сбор данных по всему приложению. Не просто от веб-страниц, сервера и приложения Windows Phone 8 или только от уровня данных Microsoft Azure. Вам требуется полное представление всего, что происходит в этой комплексной пользовательской среде. Встречайте новый сервис Application Insights в Visual Studio Online.

Чтобы задействовать сервис Application Insights, перейдите на начальную страницу вашей учетной записи Visual Studio Online и щелкните плитку Application Insights. Вам нужно зарегистрировать свое приложение с использованием пригласительного кода, так как в настоящее время этот сервис находится на стадии предварительной версии и доступ к нему ограничен. После этого вы можете подготовить простой тест для отправки команд ping по URL (New Single URL Test) и наблюдать за потоком данных. Это пример базового ping-теста, но вы можете использовать и синтетические транзакции, созданные вами в качестве тестов веб-производительности для проводившегося ранее нагрузочного теста. Затем вы можете вести мониторинг своего приложения с помощью базовых ping-тестов или синтетических транзакций из множества информационных центров по всему миру.

Кроме того, можно сконфигурировать Microsoft Monitoring Agent, чтобы он формировал отчеты по данным мониторинга производительности приложения сервису Application Insights. Это обеспечит еще более качественное представление того, как ведут себя сервисы вашего приложения со своими зависимостями, включая базы данных и другие сервисы.

Для большинства сайтов и подключенных приложений нет ничего более важного, чем время безотказной работы (uptime). Ваше приложение ничем от них не отличается в этом плане, и, к несчастью, вы были ошарашены сообщениями от некоторых клиентов, что ваш сервис не работал, хотя вы были уверены в обратном. Вам нужен активный постоянный мониторинг доступности, чтобы вы первым узнали о провале теста или падении своего сайта. Это как раз то, что может дать вам Application Insights.

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

Теперь, когда у вас есть информация мониторинга производительности от Application Insights, вы сможете радикально сократить среднее время исправления и восстановления сервиса.

Впервые выйдя на рынок со своим приложением, вы твердо понимали, что оно будет делать и как ваши клиенты намерены взаимодействовать с ним. Теперь потребности ваших клиентов возросли, и ваше приложение должно параллельно развиваться, чтобы удовлетворять растущие потребности. У вас есть много гипотез насчет того, как улучшить работу клиентов, но для их проверки требуются телеметрические и мета-телеметрические данные. С включением мониторинга использования в Application Insights вы получаете многомерные данные, которые помогут вам правильно инвестировать в свое приложение (рис. 6).

Информационная панель Application Insights
Рис. 6. Информационная панель Application Insights

По мере того как ваша группа будет все теснее работать с Application Insights, вы начнете понимать, что пережили смену парадигмы в плане разработки ПО. Больше никаких запоздалых озарений; вы сделали этот процесс полноправной частью вашего жизненного цикла приложения, что кардинально повлияло на то, как ваша группа рассматривает это приложение. Вы можете даже использовать SDK, чтобы начать формировать отчеты по собственным бизнес-показателям, которые можно отслеживать на ваших информационных панелях или получать собственные трассировочные события.

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

Заключение

Итак, это было краткое введение в новейший продукт в семействе Visual Studio. Visual Studio Online является облачной платформой для инструментария и сервисов, которые помогают планировать, развертывать и управлять вашими приложениями. Это результат эволюционного развития TFS и Team Foundation Service, переноса платформы Microsoft ALM в облако и ее усиления новыми сервисами вроде Application Insights и онлайновой IDE. И это только начало. Даже если вы используете локальный TFS на предприятии, вы можете задействовать преимущества таких сервисов Visual Studio Online, как нагрузочное тестирование и Application Insights. Группа Visual Studio Online стремится к постоянному совершенствованию этого продукта, выпуская значимые обновления каждые несколько недель.


Эд Бланкеншип  (Ed Blankenship) — менеджер по продуктам для Visual Studio Online и Visual Studio ALM в Microsoft. До перехода в Microsoft был избран Microsoft MVP of the Year (Visual Studio ALM, Team Foundation Server) в 2010 г. и был Microsoft MVP в течение пяти лет. Главный автор двух книг по Team Foundation Server, в том числе «Professional Team Foundation Server 2012» (Wrox, 2013).

Выражаю благодарность за рецензирование статьи экспертам — ALM-консультантам Northwest Cadence Эндрю Клиру (Andrew Clear) и Черил Хаммонд (Cheryl Hammond).