Анализ поведения пользователей в приложениях с использованием 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 можно скачать бесплатно.

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

Похожие статьи:
Нещодавно monobank організував перший за шість років Bug Bounty, який тривав з 17 листопада до 1 грудня. Chief Information Officer Fintech Band Максим Пугач...
Painless Docker is a Guide to Master Docker and its Ecosystem Continuous Improvement The Roadmap to Becoming a DevOps Dude — From Server to Serverless 17 правил, как стать самым крутым DevOps...
UPD від 19 серпня: Співзасновник Monobank Олег Гороховський повідомив, що атака припинилася. «Усього за три доби ми отримали...
Мінцифри тестує ChatGPT для надання послуг українцям у «Дії», запровадження «єВідрядження» обовʼязково відбудеться,...
Оператор «МегаФон» объявил о снижении цен на самой популярной линейке тарифов «Всё включено». Изменения...
Яндекс.Метрика