Как вы оцениваете опыт вашего конечного пользователя? В этой статье будет рассмотрен вариант с 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 тест-драйв с бесплатным аккаунтом. Для начала не требуется кредитная карта.