Ищете рекомендации по измерению приложения высокой доступности, использующего CDN
Я работаю в компании из списка Fortune 500, которая борется с точным измерением производительности и доступности для приложений высокой доступности (то есть приложений, которые работают на 99,5% с 5-секундной навигацией по страницам). Мы учитываем как запланированные, так и незапланированные простои, чтобы определить этот номер доступности. Тем не менее, мы недавно добавили CDN в смесь, что немного усложняет наши показатели. CDN теперь обрабатывает около 75% нашего трафика, отправляя остаток на наши собственные серверы.
Мы пытаемся измерить то, что мы называем "истинным пользовательским опытом" (т.е. наши сценарии тестирования эмулируют обычного пользователя, просматривающего приложение). Эти сценарии мониторинга находятся за пределами нашей сети, что означает, что мы обращаемся к CDN примерно на 75% время.
Руководство решило, что мы используем наихудший сценарий для оценки доступности. Так что, если у наших серверов происхождения возникают проблемы, но CDN обслуживает контент просто отлично, мы все равно пострадаем от доступности. То же самое верно и наоборот. Я думаю, что до тех пор, пока "пользовательский опыт" будет успешным, мы не должны без необходимости наказывать себя. В конце концов, CDN призван улучшить производительность и доступность!
Мне просто интересно, знает ли кто-нибудь, как другие компании из списка Fortune 500 рассчитывают свои показатели доступности? Я смотрю на apple.com, например, на витрину магазина, которая использует CDN, который, кажется, никогда не работает (если не будет анонс крупного продукта). Было бы здорово иметь некоторые точные, фактические данные, потому что я не Не верьте, что нам нужно излишне вредить себе по этим показателям. Мы принимаем деловые решения на основе этих цифр.
Однако я могу сказать, что, учитывая, что эти метрики видны руководству, проблемы решаются и решаются довольно быстро (читай: мы довольно быстро проходим волокиту). К сожалению, как разработчик, я не хочу, чтобы менеджмент думал что приложение работает вверх или вниз, потому что какой-то внешний фактор (например, CDN) влияет на цифры.
Мысли?
(Я ошибочно разместил этот вопрос на StackOverflow, заранее извините за кросс-пост)
7 ответов
В резюме я бы сказал, что вы должны четко определить, что составляет "доступный" или "недоступный", и измерить себя против этого. Например, вы могли бы иметь 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, лучше отделить тестирование доступности для ваших серверов от CDN и отследить их независимо друг от друга. Ваша настоящая доступность будет: "Сервер доступен" * "Доступ к CDN", поскольку, если любой из них выйдет из строя, вы считаете, что ваша страница / сайт не работает. Это также будет стоить вам дешевле с любым из поставщиков мониторинга.
Я не пошел бы по пути создания одного теста браузера и посмотрел бы, какие элементы потерпели неудачу, хотя это могло бы работать, и у некоторых компаний, таких как Catchpoint, есть понятие "доступность контента" - это может быть не совсем то, что вы хотите для этого случая. Скажем, например, что на вашей веб-странице есть вызов CDN для файла, который доставляет 404, большинство решений по мониторингу скажут вам, что это сбой - но действительно ли это был сбой CDN? Этот файл был даже важен? может быть, кто-то просто забыл удалить какую-то реликтовую ссылку, которую никто не замечает.
Вы можете прочитать этот пост в блоге, чтобы узнать больше идей: http://blog.catchpoint.com/2010/07/21/true-availability-of-a-webpage/
Мы Fortune 500 с сайтом с поддержкой CDN, и мы используем несколько вещей. Вы правильно определили, что вам нужно измерять разные вещи, если вы хотите обнаружить разные вещи. Мне непонятно, чего конкретно вы хотите - номера доступности, которые помогут вам определить, когда приложение действительно не работает, или номера, которые не позволяют вам управлять. Тем не мение...
- Внешний синтетический мониторинг - Keynote/Gomez/Webmetrics. Мы использовали Keynote, теперь мы используем Gomez. Конечно, как вы заметили, это также включает CDN и любые другие внешние компоненты - что хорошо для измерения вашего общего SLA, но не так хорошо для определения SLA ваших приложений.
Чтобы получить "CDN из него", вы можете взять другой монитор Keynote / Gomez и направить его на свои приложения, а не через CDN, используя альтернативное DNS-имя или еще много чего. Но поскольку он все еще имеет статические ресурсы, он более полезен для производительности, чем для доступности. Кроме того, он поддерживает отключение интернета, агентов и т. Д., Что подходит для некоторых целей, а не для других.
Мониторинг реального пользователя. Есть сетевые (Coradiant, Tealeaf) и основанные на тегах (Jiffy, Gomez). Мы используем Coradiant в качестве сетевого анализатора, и он определяет реальную видимую пользователем производительность ресурсов, размещенных здесь в нашем центре обработки данных, другими словами, реальных приложений, а не всего статического мусора в CDN. Затем мы написали отчеты для определения частоты ошибок приложения и производительности и использовали Apdex (apdex.org) в качестве производной метрики. В некоторых случаях вы не можете использовать сеть (слишком большой трафик, или ваши ресурсы не размещены там, где вы можете попасть в сеть), а основанные на тегах не настолько надежны. Обладает огромным преимуществом фактического наблюдения за временем отклика конечного пользователя и ошибками - легко настроить синтетический монитор, который не дает ошибок во всех случаях, которые делает реальный пользователь.
Локальный синтетический мониторинг. Nagios/zabbix/sitescope/ сотня других. Направьте монитор на ваше приложение локально (не просматривайте CDN). Для действенного (например, отправить страницу, чтобы разбудить кого-то) мониторинга доступности это золотой стандарт. Не учитывает сетевой материал.
Журнал мониторинга. В каком-то смысле это настоящий мониторинг пользователей гетто. Но если вы действительно хотите увидеть, когда произошла ошибка, это очень удобно. Имеет преимущество "нет, действительно, так и случилось", благодаря мониторингу реальных пользователей. Только доступность, если только вы не регистрируете время, затрачиваемое на веб-уровне, и в этом случае оно показывает, сколько времени потребовалось серверной части - не полезно для пользователя, сталкивающегося с SLA, но очень полезно для "над каким кодом нам нужно работать" ". Используйте спланк.
Это не то или другое, мы используем все это, потому что вы действительно хотите "историю конечного пользователя", а также "на какого программиста нам нужно опираться".
Gomez и Keynote - это принятые на предприятии решения для сбора типов метрик, которые вы упомянули. У Gomez также есть служба, которая отслеживает ваш пользовательский UX, используя javascript-файл google-analytics-esque.
Отчетность SLA должна точно отражать реальность. Если вы измеряете доступность с точки зрения пользователя и проблемы возникают только на сервере, выполняющем измерение, то сообщение об этой проблеме в вашем SLA не будет отражать взаимодействие с пользователем.
Я могу понять, что хочу поддерживать исходную информацию на высоком уровне, возможно, всегда сообщать о ней, даже если она неточна, но с пометкой, указывающей, почему.
Если вы не можете прийти к соглашению, возможно, есть техническое решение, которое сделает измерительный сервер менее подверженным ошибкам.
Если информация сообщается как отключение, и это не так, какую ценность предоставляет отчетность?
В моем окружении мы сообщаем из нескольких источников. Методология внешнего мониторинга, позволяющая сообщать о доступности с внешней точки зрения, а также сообщать о нашей внутренней системе регистрации отключений, которая вводится человеком и учитывает множество факторов, которые наиболее точно отражают ситуацию.