Вступление
Сейчас в разработке ПО весьма популярно использование методологии DevOps. В этой статье я опишу основные подходы DevOps и расскажу о средствах от Microsoft, которые помогают реализовать эти подходы в мире .NET.
Что такое DevOps?
DevOps — набор методик, реализующих простую идею, отраженную в названии. Название DevOps — результат слияния слов Development и Operations, и главное здесь — взаимодействие команды разработчиков (Development) и команды, отвечающей за эксплуатацию ПО (Operations). DevOps утверждает, что близкое взаимодействие между Development и Operations позволит выпускать новые версии программного продукта быстрее и с меньшим количеством ошибок.
![](https://habrastorage.org/files/434/d45/c4a/434d45c4ac4e4f35a134ca8ebbefb63b.jpg)
Методология DevOps довольно молодая — появилась в 2007 г. и развилась в сообществе IT-профессионалов, что обусловило ее практическую направленность.
Когда и как используют DevOps?
DevOps используют при разработке сложных проектов с развитой инфраструктурой. Использование подходов DevOps полезно, когда:
- Разрабатывают сложные приложения, требующие сложных процессов установки.
- Требуется поддерживать и обеспечивать работу многих компьютеров.
- Требуются частые релизы.
- Отслеживание работы приложений на продакшн и быстрое исправление неполадок играет важную роль.
В таких условиях всё упирается во время. Важно уменьшить время установки приложения на продакшн-окружение и ускорить доставку команде разработчиков отзывов о работе установленного приложения.
![](https://habrastorage.org/files/91d/5a5/93f/91d5a593f7fb4e16b3338d89d962977e.jpg)
Для ускорения взаимодействия команд Development и Operations используют средства автоматизации. Мы можем автоматизировать:
- Управление релизами.
- Мониторинг установленных приложений и доставку команде разработчиков отзывов о работе установленного приложения.
Далее будут описаны средства автоматизации, предлагаемые Microsoft.
Управление релизами с помощью Microsoft Release Management (Development to Operations)
Сложные приложения требуют сложных процессов развертывания. Такие процессы могут включать множество шагов, выполняемых на различных компьютерах. В развертывании могут участвовать люди из разных команд: разработка, контроль качества, экспулатация. Выполнение развертывания вручную приводит к ошибкам и проблемам с коммуникацией.
В такой ситуации решение — использование единой автоматизированной системы для всех вовлеченных в процесс развертывания. И Microsoft Release Management — как раз такая система.
![](https://habrastorage.org/files/478/064/d17/478064d175d04ddf91a611ff6a1e5f1f.png)
Возможности Microsoft Release Management
Главная функция Microsoft Release Management — автоматизация развертывания приложения через цепь тестовых окружений на продакшн.
Основной объект системы — Release Template, описание шагов, которые нужно пройти для развертывания релиза. Release Template создается через графический интерфейс WPF-клиента. Чтобы создать Release Template, нужно определить набор виртуальных машин и добавить для каждой набор действий по развертыванию. Эти наборы действий можно копировать между виртуальными машинами.
![](https://habrastorage.org/files/9aa/114/4f5/9aa1144f5a8f418db662f8efbf5eafa7.png)
Установка на каждое окружение может быть одобрена или отклонена. Можно назначить ответственного за каждый этап установки.
![](https://habrastorage.org/files/d07/10d/230/d0710d230d3d4a158a1004d8911e10e1.png)
Но это еще не всё, что может Microsoft Release Management. Система предоставляет:
- Большой набор действий по установке. Microsoft Release Management умеет работать с файлами, с реестром, с IIS, выполнять SQL-скрипты, устанавливать Reporting Services, Windows Services, манипулировать виртуальными машинами Windows Azure, запускать тесты с помощью Microsoft Test Manager.
- Управление файлами конфигурации. Config-файлы можно параметризовать и подставлять нужные значения параметров для каждого окружения.
- Возможность отката установки. Можно определить последовательность действий, откатывающих установку. Откат запускается автоматически при сбое в процессе установки.
- Интеграцию с TFS. Релиз можно запустить автоматически по завершению билда в TFS.
Мониторинг и предоставление информации о работающих приложениях(Operations to Development)
Теперь перейдем к описанию другого вида взаимодействия Development и Operations — передаче информации о работающем приложении команде разработчиков. Эта информация может содержать и сообщение об ошибке, и отзыв пользователя о работе с приложением. Microsoft предоставляет несколько средств для автоматизации таких процессов.
Microsoft System Center 2012 Operations Manager
Microsoft Operations Manager — часть линейки продуктов Microsoft System Center. Microsoft Operations Manager позволяет следить за несколькими приложениями через одну консоль и легко посылать информацию о произошедших событиях разработчикам.
Мы можем таким образом отслеживать работу веб-приложений, разработанных на .NET, веб-страниц и веб-сервисов. Также последние версии Operations Manager позволяют мониторинг работы Windows-сервисов. Можно отслеживать сбои и проблемы с производительностью приложений и на стороне клиента, и на сервере.
Однако это еще не самое интересное умение Operations Manager. Кроме возможностей мониторинга, приложение замечательно интеграцией с TFS. Собранную информацию о сбоях и проблемах с производительностью можно легко послать разработчикам — всего в один клик.
![](https://habrastorage.org/files/fb0/472/4f4/fb04724f4136488080d95e1f4d5afb63.png)
После того как мы отослали информацию о событии разработчикам, в TFS автоматически создается Work Item, содержащий необходимые для отладки данные в виде IntelliTrace-файла.
![](https://habrastorage.org/files/7ad/e3d/e06/7ade3de069014897811b57e870d67cd3.png)
Используя информацию, предоставленную в Work Item, разработчики могут немедленно начать работу над правкой.
Microsoft Monitoring Agent
Microsoft Operations Manager — удобное, но тяжеловесное решение. Простую альтернативу предоставляет Microsoft Monitoring Agent. Используя это средство, можно локально отслеживать работу веб-приложений, разработанных на .NET.
![](https://habrastorage.org/files/971/1c5/792/9711c579212e45e9863ff1b4a83eae04.png)
Microsoft Monitoring Agent собирает данные только о локально установленных приложениях, собранные данные сохраняются в IntelliTrace-файл, который можно послать разработчикам вручную. Управляется Microsoft Monitoring Agent с помощью скриптов PowerShell.
Application Insights
Application Insights — новое и перспективное средство мониторинга. Сейчас Application Insights предоставляется в превью-версии. Приложение доступно как часть Visual Studio Online. Application Insights предоставляет:
- Мониторинг доступности и времени отклика веб-приложения. Для этого достаточно только указать URL приложения или предоставить веб-тест Visual Studio.
- Мониторинг ошибок и производительности. Этот случай похож на описанные ранее варианты. На компьютер, где работают отслеживаемые приложения, устанавливается Microsoft Monitoring Agent, затем он связывается с Application Insights. После этого собираемая информация становится доступна в Application Insights. Интеграции с TFS нет, так что IntelliTrace-файл придется посылать разработчикам вручную.
- Анализ действий пользователя. Application Insights умеет отслеживать, с какой частотой происходят события в приложении (например, загрузка того или иного экрана). Эта опция доступна для следующих типов приложений:
- Windows Phone 8.
- Windows Store.
- Веб-сервисов.
- Веб-страниц.
![](https://habrastorage.org/files/aeb/c0f/a0f/aebc0fa0f9bb4a4ab6ba8988144b7b24.png)
Автоматизация получения отзывов о приложении с помощью Microsoft Feedback Client
С помощью Microsoft Feedback Client разработчики могут запрашивать и получать отзыв о работающем приложении от пользователей. Запрос на отзыв разработчики создают через Team Web Access и посылается по Email.
![](https://habrastorage.org/files/42e/af0/a57/42eaf0a57df64e58a0715b1c883b0538.png)
Пользователь приложения получает запрос, и с помощью локально установленного Microsoft Feedback Client записывает отзыв о взаимодействии с приложением. Отзыв может содержать видео, скриншоты, аудио, текстовые комментарии. Созданный отзыв отправляется разработчикам через интерфейс Microsoft Feedback Client.
![](https://habrastorage.org/files/761/644/b4d/761644b4d5b14896b7e2a599ad155983.png)
![](https://habrastorage.org/files/f1f/281/8cd/f1f2818cde1e414a8c5c252b1b1fa01c.png)
Полученный отзыв сохраняется в TFS и может быть присоединён к Work Item.
![](https://habrastorage.org/files/920/9cb/241/9209cb24177c41ce92aa913dba41f55a.png)
Автор: Александр Попов, .NET-разработчик.
Комментарии (3)
vba
25.06.2015 09:52Релиз манагер выглядит неплохо но это он только так выглядит. Пока у него под капотом лежит Xaml, как и в tfs, а это такой один сплошной огромный геморрой. Может RM 2015 тоже будет без Xaml кто знает.
OnYourLips
Как-то все сумбурно и без конкретики.
Можно небольшой пример?
Например скрипт, который ставит на виртуалку Windows 8.1 RUS, устанавовает на нее VisualStudio 2013 и собирает проект из git, ставя все зависимости?
lair
(но зачем?)
Вообще же, предлагаемые инструменты на это не рассчитаны. Они предполагают, что вы уже собрали проект, и у вас есть готовый релиз.