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

Если вы не знакомы с Bantam.io, Bantam.io — это облегченный API для предоставления простых несвязанных решений традиционно сложных проблем.

Дежурство в туалете в Диснеевском царстве животных

В прошлой жизни я работал в отделе охраны Диснеевского царства животных — это было так весело. Много дней я дежурил в туалете, что было неплохо, но с трудностями. Уборщики уборных получили 3 туалета, и каждый туалет нужно было убирать каждый час. Так что каждые 20 минут мне приходилось убирать один туалет. С некоторой магией Диснея туалеты можно убрать примерно за 10 минут, что оставляет 10 минут на то, чтобы добраться до туалета. В теории! К полудню в разгар сезона я не мог даже пройти между туалетами за 20 минут, не говоря уже о том, чтобы убрать их за 10 минут.

Итак, вы знаете, что происходит в вашем приложении? Ваше приложение сбивает с толку или у вас медленные вызовы API?

Почему бантамская метрика?

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

Вызов API занимает слишком много времени или пользовательский интерфейс сбивает с толку? Где мы ломаемся?

Нажмите измерение:

bantam.run('@metrics/running-window/push', {
 category:  'image-upload',
 name: 'upload-time',
 type: 'value',
 value: 10,
 window: 60,  // 60 minutes
}); 

Получить метрику:

bantam.run('@metrics/running-window/retrieve', {
 category:  'image-upload',
 name: 'upload-time',
 type: 'value'
}).then(res => {
 // Example:
 /*
  {
    "category": "image-upload",
    "name": "upload-time",
    "type": "value",
    "info": {
        "avg": 10,
        "records": 100,
        "sum": 1000,
        "max": 15,
        "min": 5
     }
  }
 */
})

Создать или получить

После установки Bantam вы начинаете работу с метриками с помощью bantam.run('@metrics/running-window/, за которым следует pushдля создания измерения или получения для чтения.Когда вы retrieve метрика, вы возвращаете количество записей, запись с наивысшим значением и запись с наименьшим значением в течение окна.

Окно и период

Значение window (в push-объекте) — это время жизни метрики в минутах. Максимум 120 минут. Когда вы переходите к retrieve метрике, вы возвращаете количество записей, запись с наивысшим значением и запись с наименьшим значением в течение окна.

Для многих показателей нам нужно видеть тенденцию. Добавив period к объекту получить, вы сможете увидеть тенденцию.

period: 5

С периодом, равным 5, и окном, равным 120, вы получите массив до 24 объектов, по одному объекту каждые 5 минут за последние 2 часа. Каждый объект будет включать максимальное, минимальное и среднее значение за 5-минутный период. Примечание: если за период не было создано ни одной записи, то объект не будет возвращен.

Тип и значение

Записать показатель можно двумя способами: value или rate (в двоичном формате). Если вы отслеживаете сбои, то type должно быть rate, а значение должно быть true или false. В противном случае, если вы отслеживаете другое измерение (например, время), используйте type из value,, а свойство value должно быть числовым значением для отслеживания.

Категория и название

Категория и имя могут быть любой строкой. Для организации кода вы можете рассматривать category как имя класса, а name — как функцию.

category:  'image-upload',
name: 'upload-time',

Пример

Вместо того, чтобы измерять время, необходимое для перехода между туалетами и уборки этих туалетов, посмотрите пример, в котором мы измеряем время, необходимое пользователю для выбора изображения, и время, необходимое API-интерфейсу Bantam для загрузки изображения. Используя библиотеку метрик, вы можете быстро получить отзывы о впечатлениях пользователей.

Посмотрите пример кода в Fiddler. Дайте Bantam тест-драйв с бесплатным аккаунтом. Для начала не требуется кредитная карта.