Introduction
Now in software development, the use of the DevOps methodology is very popular. In this article, I will describe the main DevOps approaches and talk about Microsoft tools that help implement these approaches in the .NET world.
What is DevOps?
DevOps - a set of techniques that implement a simple idea, as reflected in the title. The name DevOps is the result of the merging of the words Development and Operations, and the main thing here is the interaction of the development team (Development) and the team responsible for the operation of the software (Operations). DevOps claims that close interaction between Development and Operations will allow to release new versions of the software product faster and with fewer errors.

')
The DevOps methodology is quite young - it appeared in 2007 and developed in the IT-professional community, which led to its practical orientation.
When and how to use DevOps?
DevOps is used in the development of complex projects with a developed infrastructure. Using DevOps approaches is useful when:
- Develop complex applications that require complex installation processes.
- It is required to support and ensure the work of many computers.
- Frequent releases are required.
- Tracking application performance in production and quick troubleshooting is important.
In such conditions, everything rests on time. It is important to reduce the installation time of the application to the production environment and speed up the delivery of feedback to the development team of the installed application.

To speed up the interaction between Development and Operations teams, they use automation tools. We can automate:
- Release Management.
- Monitoring installed applications and delivering feedback to the development team of the installed application.
Next will be described automation tools offered by Microsoft.
Release Management with Microsoft Release Management (Development to Operations)
Complex applications require complex deployment processes. Such processes may include many steps performed on different computers. People from different teams can participate in the deployment: development, quality control, exploitation. Performing a manual deployment leads to errors and communication problems.
In this situation, the solution is to use a single automated system for all involved in the deployment process. And Microsoft Release Management is just such a system.

Microsoft Release Management Features
The main function of Microsoft Release Management is to automate the deployment of an application through a chain of test environments for production.
The main object of the system is the Release Template, a description of the steps to be taken to deploy the release. The release template is created through a graphical user interface of a WPF client. To create the Release Template, you need to define a set of virtual machines and add a set of deployment actions for each. These sets of actions can be copied between virtual machines.

Installation on each environment can be approved or rejected. You can assign a responsible for each stage of the installation.

But that's not all Microsoft Release Management can do. The system provides:
- Large set of installation steps. Microsoft Release Management can work with files, with the registry, with IIS, execute SQL scripts, install Reporting Services, Windows Services, manipulate Windows Azure virtual machines, run tests using Microsoft Test Manager.
- Manage configuration files. Config-files can be parametrized and substitute the necessary parameter values for each environment.
- Ability to roll back the installation. You can define a sequence of actions that roll back the installation. The rollback starts automatically if the installation process fails.
- Integration with TFS. The release can be launched automatically upon completion of the TFS build.
Monitoring and providing information about running applications (Operations to Development)
We now turn to the description of another type of interaction between Development and Operations - the transfer of information about a running application to a team of developers. This information may contain both an error message and a user feedback about working with the application. Microsoft provides several tools to automate such processes.
Microsoft System Center 2012 Operations Manager
Microsoft Operations Manager is part of the Microsoft System Center product line. Microsoft Operations Manager allows you to monitor multiple applications through a single console and easily send information about events to developers.
We can thus monitor the work of web applications developed on .NET, web pages and web services. Also, the latest versions of Operations Manager allow you to monitor the performance of Windows services. You can track crashes and application performance issues on both the client and the server.
However, this is not the most interesting skill in Operations Manager. In addition to monitoring capabilities, the application is remarkably integrated with TFS. Collected information about crashes and performance issues can be easily sent to developers - just one click away.

After we have sent the event information to the developers, a Work Item is automatically created in TFS containing the data needed for debugging as an IntelliTrace file.

Using the information provided in the Work Item, developers can immediately begin work on editing.
Microsoft Monitoring Agent
Microsoft Operations Manager is a convenient, but heavy solution. A simple alternative is the Microsoft Monitoring Agent. Using this tool, you can locally track the work of web applications developed on .NET.

Microsoft Monitoring Agent collects data only about locally installed applications, the collected data is saved in an IntelliTrace file, which can be sent to developers manually. Managed by the Microsoft Monitoring Agent using PowerShell scripts.
Application insights
Application Insights is a new and promising monitoring tool. Application Insights is now available in a preview version. The application is available as part of Visual Studio Online. Application Insights provides:
- Monitoring the availability and response time of the web application. To do this, you just need to specify the URL of the application or provide a web test to Visual Studio.
- Monitoring errors and performance. This case is similar to the previously described options. The Microsoft Monitoring Agent is installed on the computer where the monitored applications are running, then it communicates with Application Insights. After that, the collected information becomes available in Application Insights. There is no integration with TFS, so the IntelliTrace file will have to be sent to the developers manually.
- Analysis of user actions. Application Insights can track the frequency with which events occur in an application (for example, loading a screen). This option is available for the following types of applications:
- Windows Phone 8.
- Windows Store.
- Web services.
- Web pages.

Automate the receipt of feedback on the application using the Microsoft Feedback Client
Using the Microsoft Feedback Client, developers can request and receive feedback on a running application from users. Developers create a request for feedback through Team Web Access and are sent via email.

The application user receives the request and, using a locally installed Microsoft Feedback Client, writes a feedback on the interaction with the application. A review may contain video, screenshots, audio, text comments. The created feedback is sent to developers through the Microsoft Feedback Client interface.


The feedback received is stored in TFS and can be attached to the Work Item.

Author: Alexander Popov, .NET developer.