Vous recherchez une recommandation sur la mesure d'une application à haute disponibilité qui utilise un CDN


11

Je travaille pour une entreprise du Fortune 500 qui a du mal à mesurer avec précision les performances et la disponibilité des applications à haute disponibilité (c.-à-d. Les applications en hausse de 99,5% avec une navigation de page à page en 5 secondes). Nous prenons en compte les temps d'arrêt planifiés et non planifiés pour déterminer ce numéro de disponibilité. Cependant, nous avons récemment ajouté un CDN dans le mélange, ce qui complique un peu nos mesures. Le CDN gère désormais environ 75% de notre trafic, tout en envoyant le reste à nos propres serveurs.

Nous essayons de mesurer ce que nous appelons une «véritable expérience utilisateur» (c'est-à-dire que nos scripts de test émulent un utilisateur typique cliquant sur l'application.) Ces scripts de surveillance se trouvent en dehors de notre réseau, ce qui signifie que nous atteignons le CDN environ 75% des le temps.

La direction a décidé que nous prenions le pire des cas pour mesurer la disponibilité. Donc, si nos serveurs d'origine ont des problèmes, mais que le CDN sert très bien du contenu, nous prenons toujours un coup sur la disponibilité. Il en va de même dans l'autre sens. Ma pensée est que tant que "l'expérience utilisateur" est réussie, nous ne devrions pas nous punir inutilement. Après tout, un CDN est là pour améliorer les performances et la disponibilité!

Je me demande simplement si quelqu'un sait comment les autres sociétés du Fortune 500 calculent leur nombre de disponibilités? Je regarde apple.com, par exemple, d'une vitrine qui utilise un CDN qui ne semble jamais être en panne (à moins qu'il y ait une annonce de produit majeure.) Ce serait formidable d'avoir des données factuelles dures parce que je ne 't croire que nous devons nous blesser inutilement sur ces mesures. Nous sommes des décisions d'affaires basées sur ces chiffres.

Je peux dire, cependant, étant donné que ces mesures sont visibles pour la direction, les problèmes sont résolus et résolus assez rapidement (lire: nous éliminons la paperasse assez rapidement.) Malheureusement, en tant que développeur, je ne veux pas que la direction pense que l'application est en hausse ou en baisse parce qu'un facteur externe (c.-à-d. CDN) influence les chiffres.

Pensées?

(J'ai par erreur posté cette question sur StackOverflow, désolé à l'avance pour le cross-post)

Réponses:


2

Dans l'abstrait, je dirais que vous devriez définir clairement ce qui constitue «disponible» par rapport à «indisponible» et vous mesurer à cela. Par exemple, vous pouvez avoir un SLA de performances côté client pour le site de 1 seconde au "pli" et de 3 secondes pour une page complètement rendue. Lorsque vous ne respectez pas le SLA de performances, vous devez le considérer comme un échec de disponibilité pour cette période. Peu importe que vous frappiez le CDN ou non - l'expérience utilisateur est ce qui compte.

Cependant, comme vous ne prenez des mesures que toutes les 5 minutes, il semble raisonnable de mesurer séparément les accès au CDN par rapport au site maître et de calculer que 75% de la disponibilité provient du CDN et 25% du maître. La difficulté ici est que 75% n'est qu'une moyenne. Pour répartir le blâme avec précision pour une période donnée, vous devez savoir quand l'un ou l'autre site n'est pas réellement en contact avec le client, par exemple, lors d'un changement planifié ou après une action manuelle lorsqu'un problème est détecté. Vous devez également prendre en compte ce qui se passe lorsque l'un des sites maîtres ou le CDN est en panne. Le client obtient-il un HTTP 500 ou bascule-t-il simplement de manière transparente sur le site de travail? Cela dépend beaucoup de votre solution d'équilibrage de charge. La mesure du «pire des cas» que vous avez décrite semble trop simpliste. Demande toi, "

Quant à savoir si vous devriez "blâmer" lorsque le CDN est en panne: absolument. Si 75% de vos hits vont au CDN, alors 75% de votre expérience client en dépend. Vous êtes responsable de fournir une bonne expérience à vos clients, donc si le CDN a des problèmes, vous devez utiliser vos ressources d'ingénierie pour le prouver et faire un suivi avec le fournisseur.

Une autre chose à considérer est ce qui se passe lorsque le site maître n'est pas disponible pendant une période prolongée. Comme vous l'avez décrit, il semble que le CDN soit une copie statique du contenu du site maître. Si le site maître est en panne pendant une longue période, le CDN pourrait commencer à devenir périmé. Alors peut-être qu'une partie de votre SLA devrait être la fraîcheur: 1 seconde au "pli" et 3 secondes pour une page complètement rendue, avec un contenu qui ne dépasse pas 15 minutes.


@ user44700: L'astuce est double: le CDN fournit une tonne de métriques similaires à ce que vous décrivez ... et nous avons nos propres tests internes toutes les 5 minutes sur le serveur d'origine. L'amplitude des points de données du CDN par rapport à l'interne est complètement déséquilibrée, mais ils sont à peu près traités comme s'ils étaient équilibrés (c.-à-d. (CDN + interne) / 2 = disponibilité) ... Je ne crois pas que la direction comprend les statistiques de base ... :)
Tim Reddy

2

Je suis d'accord avec user44700, il est préférable de séparer les tests de disponibilité de vos serveurs par rapport au CDN et de suivre les deux indépendamment indépendamment. Votre véritable disponibilité sera la disponibilité du serveur * la disponibilité du CDN, car si l'un ou l'autre tombe en panne - vous considérez que votre page / site est en panne. Cela vous coûtera également moins cher avec l'un des fournisseurs de surveillance.

Je n'irais pas dans le sens de créer un test de navigateur et de regarder quels éléments ont échoué, alors que cela pourrait fonctionner et que certaines entreprises comme Catchpoint ont le concept de «disponibilité du contenu» - ce n'est peut-être pas exactement ce que vous voulez dans ce cas. Supposons par exemple que votre page Web appelle le CDN pour un fichier qui fournit 404, la plupart des solutions de surveillance vous diront que c'est un échec - mais était-ce vraiment le CDN qui a échoué? Ce dossier était-il même important? peut-être que quelqu'un a juste oublié de supprimer une référence de relique qu'aucun utilisateur ne remarque.

Vous pouvez lire ce billet de blog pour plus d'idées: http://blog.catchpoint.com/2010/07/21/true-available-of-a-webpage/


Merci pour le lien ... nous suivons / mesurons à peu près d'une manière cohérente avec cet article.
Tim Reddy

0

Les rapports SLA doivent refléter fidèlement la réalité. Si vous mesurez la disponibilité du point de vue de l'utilisateur et que seul le serveur effectuant la mesure rencontre des problèmes, signaler ce problème dans votre contrat SLA ne refléterait pas l'expérience utilisateur.

Je peux comprendre vouloir maintenir les informations source à un niveau élevé, peut-être toujours les rapporter même si elles sont inexactes mais avec une note indiquant pourquoi.

Si vous ne pouvez pas vous mettre d'accord, il existe peut-être une solution technique pour rendre le serveur de mesure moins faillible.

Si l'information est signalée comme une panne et qu'elle ne l'a pas été, quelle valeur la déclaration fournit-elle?

Dans mon environnement, nous rapportons à partir de plusieurs sources. Une méthodologie de surveillance externe pour signaler la disponibilité d'un point de vue externe ainsi que pour signaler notre système d'enregistrement interne des pannes, qui est entré par l'homme et tient compte de plusieurs facteurs qui reflètent le plus fidèlement la situation.


@Warner: Malheureusement, le serveur exécutant les métriques est exactement ce que la direction considère comme "l'expérience utilisateur". Chaque test est à 5 minutes d'intervalle, donc fondamentalement toutes nos «pannes» sont par incréments de 5 minutes, quelle que soit la durée réelle de la panne (cela peut être 1 seconde). Notre CDN fournit des mesures de son point de vue, et il est beaucoup plus granulaire qu'un test toutes les 5 minutes ... Je voudrais les signaler séparément. Malheureusement, la direction a décidé de prendre chaque application, de choisir le pire des cas et de signaler que ... qui ne reflète pas un véritable SLA ...
Tim Reddy

Il semble presque qu'ils ne comprennent pas les détails techniques et ne font pas confiance à la situation, ils se tournent donc vers le pire des cas pour assurer la précision.
Warner

Vous avez probablement envisagé quelque chose comme ça, mais dans une vie professionnelle antérieure prenant en charge la base de données de réservation pour une grande entreprise de location de voitures, nous avons utilisé Gomez.com pour nous donner des "lectures" sur le moment d'entrer sur le site Web et d'obtenir un tarif pour un particulier de location. Dans nos circonstances particulières, cela a donné à la direction le type de jauge nécessaire. Tout l'objectif pour le site était de cinq 9.
jl.

0

Gomez et Keynote sont des solutions acceptées par l'entreprise pour rassembler les types de métriques que vous avez mentionnés. Gomez dispose également d'un service qui surveille votre expérience utilisateur finale en recherchant un fichier javascript google-analytics-esque.



0

Nous sommes un Fortune 500 avec un site compatible CDN, et nous utilisons plusieurs choses. Vous avez correctement déterminé que vous devez mesurer différentes choses si vous voulez détecter des choses différentes. Je ne sais pas exactement ce que vous voulez spécifiquement - des numéros de disponibilité pour vous aider à déterminer quand une application est réellement en panne, ou des chiffres qui vous gèrent la gestion. En tous cas...

  1. Surveillance synthétique externe - Keynote / Gomez / Webmetrics. Nous utilisions auparavant Keynote, maintenant nous utilisons Gomez. Bien sûr, comme vous le constatez, cela inclut également le CDN et tous les autres composants externes - ce qui est bon pour mesurer votre SLA global, mais pas si bon pour déterminer les SLA de vos applications.

Pour obtenir le «CDN hors de lui», vous pouvez prendre un autre moniteur Keynote / Gomez et le pointer vers vos applications et non via le CDN en utilisant un autre nom DNS ou autre. Mais comme il possède toujours des actifs statiques, il est plus utile pour les performances que pour la disponibilité. Et il garde les pannes Internet, les coupures d'agents, etc. dans la boucle, ce qui est approprié pour certaines fins et pas pour d'autres.

  1. Surveillance réelle des utilisateurs. Il existe des réseaux (Coradiant, Tealeaf) et des balises (Jiffy, Gomez). Nous utilisons Coradiant comme un renifleur de réseau et il détermine les performances réelles vues par l'utilisateur des actifs hébergés ici dans notre centre de données - en d'autres termes, les applications réelles et pas toutes les ordures statiques sur le CDN. Nous avons ensuite rédigé des rapports pour déterminer les taux d'erreur et les performances des applications et utilisé l'Apdex (apdex.org) comme mesure dérivée. Dans certains cas, vous ne pouvez pas utiliser le réseau (trop de trafic ou vos actifs ne sont pas hébergés où vous pouvez accéder au réseau), et le tag n'est pas fiable. A l'immense avantage de voir réellement le temps de réponse de l'utilisateur final et les erreurs - il est facile de configurer un moniteur synthétique qui ne fait pas d'erreur dans tous les cas qu'un vrai utilisateur fait.

  2. Surveillance synthétique locale. Nagios / zabbix / sitescope / une centaine d'autres. Dirigez un moniteur vers votre application localement (ne passez pas par le CDN). Pour la surveillance de la disponibilité (comme dans, envoyer une page pour réveiller quelqu'un), il s'agit de l'étalon-or. Ne prend pas en compte les éléments du réseau.

  3. Surveillance des journaux. Dans un sens, il s'agit d'une véritable surveillance des utilisateurs du ghetto. Mais si vous voulez vraiment voir ce qui s'est passé, c'est assez pratique. A l'avantage "non, c'est vraiment ce qui s'est passé" d'une véritable surveillance des utilisateurs. Souvent disponible uniquement, sauf si vous vous connectez en fonction du temps sur le niveau Web, auquel cas cela vous montre combien de temps votre serveur a pris - pas utile pour l'utilisateur face au SLA, mais très utile pour "sur quel code devons-nous travailler . " Utilisez splunk.

Ce n'est pas un ou nous utilisons tout cela, parce que vous voulez "l'histoire de l'utilisateur final" ainsi que "sur quel programmeur devons-nous nous appuyer".


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.