Ищете рекомендации по измерению приложения высокой доступности, использующего CDN

11

Я работаю в компании из списка Fortune 500, которая борется с точным измерением производительности и доступности для приложений высокой доступности (то есть приложений, которые работают на 99,5% с 5-секундной навигацией по страницам). Мы учитываем как запланированные, так и незапланированные простои, чтобы определить этот номер доступности. Тем не менее, мы недавно добавили CDN в смесь, что немного усложняет наши показатели. CDN теперь обрабатывает около 75% нашего трафика, отправляя остаток на наши собственные серверы.

Мы пытаемся измерить то, что мы называем «истинным пользовательским интерфейсом» (т.е. наши сценарии тестирования эмулируют обычного пользователя, просматривающего приложение). Эти сценарии мониторинга находятся за пределами нашей сети, что означает, что мы обращаемся к CDN примерно на 75% время.

Руководство решило, что для оценки доступности мы используем наихудший сценарий. Таким образом, если у наших серверов происхождения возникают проблемы, но CDN обслуживает контент просто отлично, мы все равно постараемся получить доступность. То же самое верно и наоборот. Я думаю, что до тех пор, пока «пользовательский опыт» будет успешным, мы не должны без необходимости наказывать себя. В конце концов, CDN призван улучшить производительность и доступность!

Мне просто интересно, кто-нибудь знает, как другие компании из списка Fortune 500 рассчитывают свои показатели доступности? Я смотрю на apple.com, например, на витрину магазина, которая использует CDN, который, кажется, никогда не отключается (если не будет анонс крупного продукта). Было бы здорово иметь некоторые точные, фактические данные, потому что я не Не верьте, что нам нужно излишне вредить себе по этим показателям. Мы являемся принятие бизнес - решений на основе этих чисел.

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

Мысли?

(Я ошибочно разместил этот вопрос на StackOverflow, заранее извините за кросс-пост)

Тим Редди
источник

Ответы:

2

В резюме я бы сказал, что вы должны четко определить, что составляет «доступный» или «недоступный», и измерить себя против этого. Например, вы могли бы иметь SLA производительности на стороне клиента для сайта от 1 секунды до «сгиба» и 3 секунды для полностью визуализированной страницы. Если вы не соблюдаете SLA, вы должны считать это ошибкой доступности в течение этого периода времени. Не должно иметь значения, нажимаете ли вы на CDN или нет - важен пользовательский опыт.

Однако, поскольку вы проводите измерения только каждые 5 минут, кажется разумным измерять попадания в CDN по сравнению с основным сайтом отдельно и рассчитывать, что 75% доступности поступает из CDN и 25% - из основного. Трудность здесь в том, что 75% - это просто среднее. Чтобы точно распределить вину за определенный период времени, вам необходимо знать, когда один или другой сайт фактически не обращен к клиенту, например, во время запланированного изменения или после ручного действия при обнаружении проблемы. Вам также необходимо учитывать, что происходит, когда один из мастер-сайтов или CDN не работает. Получает ли клиент HTTP 500 или он просто прозрачно переключается на рабочий сайт? Многое зависит от вашего решения по балансировке нагрузки. Метрика «наихудшего случая», которую вы описали, кажется слишком упрощенной. Спроси себя, "

Что касается того, следует ли брать на себя «вину», когда CDN не работает: абсолютно. Если 75% ваших обращений попадают в CDN, то от них зависит 75% опыта ваших клиентов. Вы несете ответственность за обеспечение хорошего опыта для своих клиентов, поэтому, если у CDN возникают проблемы, вам необходимо использовать свои технические ресурсы, чтобы доказать это и связаться с поставщиком.

Еще одна вещь, о которой стоит подумать, это то, что происходит, когда мастер-сайт недоступен в течение длительного периода времени. Как вы уже описали, похоже, что CDN является статической копией содержимого на главном сайте. Если главный сайт не работает в течение длительного времени, CDN может начать устаревать. Так что, возможно, часть вашего SLA должна быть свежей: 1 секунда для «сгиба» и 3 секунды для полностью визуализированной страницы, содержание которой не старше 15 минут.

user44700
источник
@ user44700: Здесь уловка двоякая - CDN предоставляет массу метрик, похожих на те, что вы описываете ... и у нас есть собственные внутренние тесты каждые 5 минут на исходном сервере. Величина точек данных от CDN по сравнению с внутренними полностью несбалансированна, однако они в значительной степени рассматриваются как сбалансированные (т. Е. (CDN + внутренние) / 2 = время безотказной работы) ... Я не верю, что управление понимает основную статистику ... :)
Тим Редди
2

Я согласен с user44700, лучше отделить тестирование доступности для ваших серверов от CDN и отследить их независимо друг от друга. Ваша настоящая доступность будет: «Сервер доступен» * «Доступ к CDN», поскольку, если какой-либо из них выйдет из строя, вы считаете, что ваша страница / сайт не работает. Это также будет стоить вам дешевле с любым из поставщиков мониторинга.

Я не пошел бы по пути создания одного теста браузера и не посмотрел бы, какие элементы потерпели неудачу, хотя он мог бы работать, и у некоторых компаний, таких как Catchpoint, есть понятие «доступность контента» - это может быть не совсем то, что вы хотите для этого случая. Скажем, например, что на вашей веб-странице есть вызов в CDN для файла, который доставляет 404, большинство решений для мониторинга скажут вам, что это сбой - но действительно ли это был сбой CDN? Этот файл был даже важен? может быть, кто-то просто забыл удалить какую-то реликтовую ссылку, которую никто не заметил

Вы можете прочитать этот пост в блоге для получения дополнительной идеи: http://blog.catchpoint.com/2010/07/21/true-availability-of-a-webpage/

GeorgeU
источник
Спасибо за ссылку ... мы в значительной степени следуем / измеряем в соответствии с этой статьей.
Тим Редди
0

Отчетность SLA должна точно отражать реальность. Если вы измеряете доступность с точки зрения пользователя и проблемы возникают только на сервере, выполняющем измерение, то сообщение об этой проблеме в вашем SLA не будет отражать взаимодействие с пользователем.

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

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

Если информация сообщается как отключение, и это не так, какую ценность предоставляет отчетность?

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

сигнализатор
источник
@Warner: К сожалению, сервер, на котором работают метрики, - это именно то, что руководство считает «пользовательским опытом». Каждый тест проводится с интервалом в 5 минут, поэтому в основном все наши «сбои» выполняются с шагом 5 минут независимо от фактического времени сбоев (оно может составлять 1 секунду). Наш CDN предоставляет метрики с его точки зрения, и он гораздо более детализирован, чем один тест каждые 5 минут ... Я хотел бы сообщить об этом отдельно. К сожалению, руководство решило взять каждое приложение, выбрать наихудший случай и сообщить, что ... что не отражает реального SLA ...
Тим Редди
Похоже, что они не понимают технические детали и не доверяют ситуации, поэтому они по умолчанию используют худший вариант для обеспечения точности.
Warner
Вероятно, вы рассматривали что-то подобное, но в прошлой жизни, поддерживая базу данных бронирования для крупной компании по прокату автомобилей, мы использовали Gomez.com, чтобы дать нам «чтение» времени, чтобы войти на сайт и получить оценку для определенного аренда. В наших конкретных обстоятельствах это дало руководству необходимый вид мер. Всего целью сайта было пять 9-х.
JL.
0

Gomez и Keynote - это принятые на предприятии решения для сбора типов метрик, которые вы упомянули. У Gomez также есть служба, которая отслеживает ваш пользовательский UX, используя файл javascript google-analytics-esque.

Тони
источник
0

Пингдом хороши: http://www.pingdom.com/

Grizly
источник
Вопрос не в том, какой сервис использовать. Это как бороться с описанным сценарием.
GeorgeU
0

Мы Fortune 500 с сайтом с поддержкой CDN, и мы используем несколько вещей. Вы правильно определили, что вам нужно измерять разные вещи, если вы хотите обнаружить разные вещи. Мне непонятно, чего конкретно вы хотите - числа доступности, которые помогут вам определить, когда приложение действительно не работает, или числа, которые лишают вас управления. Тем не мение...

  1. Внешний синтетический мониторинг - Keynote / Gomez / Webmetrics. Мы использовали Keynote, теперь мы используем Gomez. Конечно, как вы заметили, это также включает CDN и любые другие внешние компоненты - что хорошо для измерения вашего общего SLA, но не так хорошо для определения SLA ваших приложений.

Чтобы получить «CDN из него», вы можете взять другой монитор Keynote / Gomez и указать его на свои приложения, а не через CDN, используя альтернативное DNS-имя или еще много чего. Но поскольку он все еще имеет статические ресурсы, он более полезен для производительности, чем для доступности. Кроме того, он поддерживает отключение интернета, агентов и т. Д., Что подходит для некоторых целей, а не для других.

  1. Мониторинг реального пользователя. Есть сетевые (Coradiant, Tealeaf) и основанные на тегах (Jiffy, Gomez). Мы используем Coradiant в качестве сетевого анализатора, и он определяет реальную видимую пользователем производительность ресурсов, размещенных здесь в нашем центре обработки данных, другими словами, реальных приложений, а не всего статического мусора в CDN. Затем мы написали отчеты для определения частоты ошибок приложения и производительности и использовали Apdex (apdex.org) в качестве производной метрики. В некоторых случаях вы не можете использовать сеть (слишком большой трафик, или ваши ресурсы не размещены там, где вы можете попасть в сеть), а метки не настолько надежны. Обладает огромным преимуществом фактического наблюдения за временем отклика конечного пользователя и ошибками - легко настроить синтетический монитор, который не дает ошибок во всех случаях, которые делает реальный пользователь.

  2. Локальный синтетический мониторинг. Nagios / zabbix / sitescope / сотня других. Направьте монитор на ваше приложение локально (не просматривайте CDN). Для действенного (как, например, отправить страницу, чтобы разбудить кого-то) мониторинга доступности, это золотой стандарт. Не учитывает сетевой материал.

  3. Журнал мониторинга. В каком-то смысле это реальный мониторинг пользователей гетто. Но если вы действительно хотите увидеть, когда произошла ошибка, это очень удобно. Имеет преимущество "нет, действительно, так и случилось", благодаря мониторингу реальных пользователей. Только доступность, если только вы не регистрируете время, затрачиваемое на веб-уровне, в этом случае оно показывает, сколько времени потребовалось серверной части - не полезно для пользователя, сталкивающегося с SLA, но очень полезно для «над каким кодом нам нужно работать» «. Используйте спланк.

Это не то или другое, мы используем все это, потому что вам нужна «история конечного пользователя», а также «на что нам нужно полагаться программисту».

Эрнест Мюллер
источник