Анализ поведения пользователей в приложениях с использованием Application Insights

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

Современный мир состоит из 99% разбалованных потребителей и 1% разработчиков, которые днем и ночью пашут на удовлетворение потребностей этих самых разбалованных потребителей. Нет, ну чего им не хватает? Видите ли, сайт загружается долго... Ну или подумаешь, отвалился на час DNS, и никто не может зайти на сайт. Или меню слишком сложное. Вот все им не нравится. А представьте: во всем интернете есть только один сайт. И этот сайт — ваш:) И никаких проблем: не нравится меню? Долго загружается? Нуу... попробуйте найти другой сайт.

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

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

Я же хотел рассказать о новом сервисе от Visual Studio, который позволяет снимать телеметрические данные из вашего приложения. Сервис называется Application Insights. Сервис сейчас в Preview, но в Microsoft используется уже немало времени.

Что это такое

Внимание! То, что будет написано далее может перевернуть ваше мировоззрение и привести к психическому расстройству. Я настоятельно не рекомендую читать далее эту статью людям младше 18 лет, с неустойчивой психикой, сторонников теории заговора, людей типа «Big brother watching you», «Microsoft — это империя зла» и «я храню код на флешке под паролем, шоб нэ вкралы».

Это была моя шутка, а на самом деле все так: в инструмент Visual Studio встроен механизм отправки данных о пользовательской активности. При этом объем этих данных реально огромен. За секунду, при нормальной работе в Visual Studio, может отправляться порядка 2-8 телеметрических нотификаций.

Я достаточно часто читаю презентации об инструменте Visual Studio в разных компаниях, и после таких слов глаза разработчиков и особенно безопасников становятся примерно такими:

Отойдя от шока, мне сразу задают вопрос: как отключить??? Ответ: никак.

Причем то, что эти данные действительно отправляются, можно увидеть в Fiddler после запуска Visual Studio:

После этого глаза становятся вот такие:

Но не стоит паниковать. Во-первых, если вы думаете, что другие крупные вендоры поступают по-иному — ошибаетесь:). Ну а во-вторых, давайте всё-таки разберемся, о каких именно телеметрических данных идет речь.
1. Отчеты об ошибках и деградации производительности;
2. Пользовательская активность в приложении.

Последний пункт хочу раскрыть детальнее: речь не идет о том, что Microsoft, используя Visual Studio, передает ваш код на свои серверы для того, чтоб это бесценное творение потом продать под видом своего приложения. Есть люди, которые на полном серьезе так и думают. Я себе это представляю: сидит миллион индусов, или китайцев и пересматривают ваш код. При этом оценивают перспективу его продать. Чесслово, даже весело :)

Речь идет о передаче информации о вызовах меню, нажатиях на кнопки (не клавиатуры, а внутри инструмента), запуск каких-то внутренних процессов. С помощью этой информации в привязке ко времени и IP адресу можно смоделировать ваше поведение в инструменте. На базе такой статистики, получаемой автоматом от множества пользователей, можно легко понять:
— Какой стандартный функционал используется чаще всего. Это нужно для того, чтоб обратить внимание на его развитие в последующих версиях. Возможно, вывести горячую кнопку вызова этого функционала на видное место;
— Как приживается новый функционал;
— Как много пользователь тратит времени на то, чтобы добраться до нужного его функционала

И так далее.

Имея эту информацию Microsoft может фокусировать свои усилия на улучшении инструмента в тех его местах, где это более важно для пользователей, а не для разработчиков инструмента Visual Studio.

Как использовать

В Visual Studio 2015 при создании, например, нового веб проекта вы можете увидеть галочку «Add application insights to project»:

В универсальных приложениях под Windows это выглядит так:

Важно иметь активированную Azure подписку. Для теста, можно взять бесплатный пробный период на 30 дней.

Но вернемся к веб проекту. Если галочку не убрали, то после создания проекта в списке подключенных библиотек вы увидите:

В случае, если у вас уже есть веб проект без Application Insights, то его можно добавить следующим образом:

Зайти на портал управления Azure и добавить новый Application Insights ресурс:

Скопировать ключ:

В проекте Visual Studio, используя Nuget, проинсталлировать SDK:

В проекте, в файлике ApplicationInsights.config вставить ключ в строку:
<InstrumentationKey> the instrumentation key you copied </InstrumentationKey>

Для сбора информации из браузера нужно на портале взять сгенерированный Javascript и добавить на каждую страницу в теге перед всеми остальными скриптами (или в _Layout.cshtml в проекте MVC):

Теперь можно запустить проект. Если запустились в режиме Debug, то диагностическая тула в Visual Studio 2015 покажет, какие данные отправляются на сервер:

На портале Azure, открыв ваш Application Insights ресурс, через какое-то время вы увидите графики активности ваших пользователей:

При этом графики интерактивные и можно провалится до деталей, например, более детально посмотреть на Server Response:

Или что происходит на клиентском браузере:

Так же можно отловить медленные запросы в БД:

В дополнение к этому скажу, что можно мониторить разные версии приложений, собирать IIS Performance Counters, следить за доступностью из разных точек мира и многое другое. Я уже не говорю о том, что эти данные можно загнать в сервис Azure Machine Learning и строить рекомендательную или предиктивную аналитику.

Более детально о сервисе и примеры настроек можно посмотреть в официальной документации. Также есть возможность попробовать сервис за 60 секунд. Сам инструмент Visual Studio можно скачать бесплатно.

До новых статей! Если есть вопросы, готов ответить в комментариях.

Похожие статьи:
На правах рекламы Производственно-торговая компания Rubin представляет обновленную линейку телевизоров серии SE9 с новыми...
Технологічна компанія Akamai, яка надає широкий спектр веб-послуг, призупиняє свою діяльність у росії та білорусі через...
Situated on massive grounds of 34.5 hectares nothing the Oktoberfest does…is small. From 2018 data it’s recorded that over 13,000 people were employed at the event over the two weeks via carnival attractions,...
Дорогие друзья! Хотим предложить Вашему вниманию интересный и очень созвучный нашему времени курс компании Zhuko.net —...
В отличие от первой статьи, никаких Жозефин, уточек, пьяных альпинистов с комплексом «трёхлитровки» и прочих...
Яндекс.Метрика