Цели уровня обслуживания (3 серии деталей)
Теоретически, соты всегда в норме. Наши серверы работают без сбоев, наше пользовательское интерфейс быстро загружается и очень отзывчив, а наше двигатель запросов молниенос. На практике это не всегда совсем так — и преданные читатели этого блога узнали о том, как мы Используйте этот опыт, чтобы улучшить продукт .
Теперь мы могли бы провести все время на стабильность системы. Мы могли бы отполировать код фронтального кода и искать неэффективность; Бросьте вечно загадочные тестовые клосы на задний план. (Есть несколько разработчиков, которые являются вокальными защитниками этого подхода!) Но мы также хотим сделать продукт лучше — и поэтому мы продолжаем развертываться так много Отличные функции !
Как мы решаем, когда работать над улучшением стабильности, и когда мы сможем сделать забавные настройки?
От организационных целей до событий
Итак, допустим, мы договоримся друг с другом о том, как плохие »вещи. Когда дела идут плохо — когда мы чувствуем себя погрязскими в небольших ошибках или в одной большой ошибке, которая снимает сервис, — мы можем замедлить разработку прохладных функций и переключаться на работу стабильности. И наоборот, когда все чувствует себя разумно стабильным, мы можем поверить, что у нас есть довольно прочная инфраструктура для разработки, и мы можем замедлить ремонт и техническое обслуживание.
Как будет выглядеть это соглашение?
Во -первых, это означает, что можно хорошо взглянуть на нашу систему. Сота имеет зрелый уровень наблюдения Поэтому мы чувствуем себя уверенными, что у нас есть необработанные инструменты, чтобы посмотреть, как мы делаем, — где пользователи испытывают проблемы, и где в нашей системе появляются ошибки.
Во -вторых, это означает понимание, что ни одна система не идеальна. Если наша цель на 100% постоянно для всех запросов, то мы будем разочарованы, потому что некоторые вещи время от времени пройдут. Но мы можем придумать заявления о качестве обслуживания Анкет Сота проводила внутреннюю встречу, на которой мы работали, чтобы количественно оценить это:
- Мы в значительной степени никогда хочу потерять данные клиентов. Мы живем и умираем, храня данные клиентов, поэтому мы хотим каждый Партия клиентской телеметрии, чтобы вернуть положительный ответ и быстро. Допустим, мы хотим, чтобы с ними обрабатывались менее чем за 100 мс, без ошибок, для 99,95% запросов. (Это означает, что в течение целого года мы могли бы иметь 4 часа от простоя.)
- Мы хотим, чтобы наш основной сервис был почти каждый раз, когда кто -то нажимает на honeycomb.io, и мы хотим, чтобы он загрузился довольно быстро. Допустим, мы хотим загрузить страницу без ошибок, в течение секунды, для 99,9% запросов.
- Иногда, когда вы запускаете запрос, он занимает немного больше времени. Для этого мы решили, что 99,5% запросов данных должны вернуться в течение 10 секунд и не вернуть ошибку.
Это совершенно разумные цели. Замечательно, что они могут быть выражены на серверах для собак Honeycomb как Выводятся выражения столбцов :
Например, мы бы написали этот первый — тот, который о приглашении данных — как «мы говорим о событиях, где request.endpoint
использует конечную точку и вход - это
Пост запрос. Когда они это сделают, они должны вернуть код 200, и
DUGURY_MS должно быть ниже 100.
Давайте назовем это «индикатором уровня обслуживания», потому что мы используем его, чтобы указать, как работает наш сервис. В нашем Полученный язык столбцов , это похоже на
IF( AND( EQUALS($request.endpoint, "batch"), EQUALS($request.method, "POST") ), AND( EQUALS($response.status_code, 200), LT($duration_ms, 100) ) )
Мы называем эту колонку «SLI», и мы можем генерировать счет и тепловую карту на нем
Это выглядит довольно в здравоохранении: мы видим, что есть еще много моментов (индикатор в порядке! Все здорово!), чем ложь (о, нет, они потерпели неудачу!); И мы видим, что все медленные точки находятся в «Ложной» группе.
Давайте вытащим наш верный карманный калькулятор: 35 тыс. События с «ложным»; 171 миллион с правдой. Это примерно 0,02% отказа — мы выросли на 99,98%. Похоже, у нас все в порядке!
Но есть еще некоторые неудачи. Я хотел бы знать, почему!
Нажав на вкладку BubbleUp, я могу узнать, у кого этот медленный опыт. Я выделяю все самые медленные запросы, и BubbleUp показывает мне гистограмму для каждого измерения в наборе данных. Найдя те столбцы, которые больше всего отличаются от всего остального, я вижу, где эти ошибки выделяются.
… и я вижу, что это один конкретный клиент и одна конкретная команда. Не только это, но они используют довольно необычный API для сотовых (это четвертая запись, request.header.user-agent
)
Это здорово и очень активно! Я могу связаться с клиентом и выяснить, что случилось; Я могу отправить нашу команду по интеграциям, чтобы посмотреть на этот конкретный пакет и посмотреть, делаем ли мы что -то, что затрудняет использование хорошо.
Количественная оценка качества обслуживания означает, что вы можете измерить его
Таким образом, вернув это туда, где мы начали: мы нашли способ начать с организационных целей и нашли способ количественно оценить нашу абстрактную концепцию: «Всегда поднимается и быстро» теперь имеет значение и измеримо. Затем мы можем использовать это, чтобы диагностировать то, что происходит не так, и выяснить, как сделать это быстрее.
Часть 2, скоро: подождите, почему мне пришлось вытащить карманный калькулятор? Разве у нас нет компьютеров для этого? Кроме того, этот термин «sli», он как -то знаком …
Прочитайте следующий пост в серии: Honeycomb SLO в настоящее время обычно доступен: успех, определяется.
Взволнованный тем, как выглядит будущее оперативного совершенства? Начните с Соты бесплатно Анкет
Цели уровня обслуживания (3 серии деталей)
Оригинал: «https://dev.to/honeycombio/working-toward-service-level-objectives-slos-part-1-4oed»