Suchen Sie nach einer Empfehlung zum Messen einer Hochverfügbarkeits-App, die ein CDN verwendet


11

Ich arbeite für ein Fortune 500-Unternehmen, das Schwierigkeiten hat, Leistung und Verfügbarkeit für Hochverfügbarkeitsanwendungen genau zu messen (dh Apps, die mit einer 5-Sekunden-Navigation von Seite zu Seite um 99,5% zulegen). Wir berücksichtigen sowohl geplante als auch außerplanmäßige Ausfallzeiten, um diese Verfügbarkeitsnummer zu ermitteln. Wir haben jedoch kürzlich ein CDN in den Mix aufgenommen, was unsere Metriken etwas kompliziert. Das CDN verarbeitet jetzt etwa 75% unseres Datenverkehrs und sendet den Rest an unsere eigenen Server.

Wir versuchen zu messen, was wir als "echte Benutzererfahrung" bezeichnen (dh unsere Testskripte emulieren einen typischen Benutzer, der durch die Anwendung klickt). Diese Überwachungsskripte befinden sich außerhalb unseres Netzwerks, was bedeutet, dass wir das CDN zu etwa 75% erreichen die Zeit.

Das Management hat entschieden, dass wir das Worst-Case-Szenario verwenden, um die Verfügbarkeit zu messen. Wenn also unsere Ursprungsserver Probleme haben, das CDN jedoch Inhalte einwandfrei bereitstellt, wird die Verfügbarkeit immer noch beeinträchtigt. Das gleiche gilt umgekehrt. Mein Gedanke ist, dass wir uns nicht unnötig bestrafen sollten, solange die "Benutzererfahrung" erfolgreich ist. Schließlich ist ein CDN dazu da, Leistung und Verfügbarkeit zu verbessern!

Ich frage mich nur, ob jemand weiß, wie andere Fortune 500-Unternehmen ihre Verfügbarkeitszahlen berechnen. Ich schaue auf apple.com zum Beispiel auf eine Storefront, die ein CDN verwendet, das niemals ausgefallen zu sein scheint (es sei denn, es wird eine wichtige Produktankündigung geben). Es wäre großartig, einige harte, sachliche Daten zu haben, weil ich nicht Ich glaube nicht, dass wir uns bei diesen Metriken unnötig verletzen müssen. Wir sind Geschäftsentscheidungen auf Basis dieser Zahlen.

Ich kann jedoch sagen, dass diese Kennzahlen für das Management sichtbar sind und Probleme ziemlich schnell behoben werden (lesen Sie: Wir haben den bürokratischen Aufwand ziemlich schnell abgebaut). Leider möchte ich als Entwickler nicht, dass das Management darüber nachdenkt dass die Anwendung hoch oder runter ist, weil ein externer Faktor (dh CDN) die Zahlen beeinflusst.

Gedanken?

(Ich habe diese Frage fälschlicherweise auf StackOverflow gepostet. Entschuldigung für den Cross-Post im Voraus.)

Antworten:


2

In der Zusammenfassung würde ich sagen, Sie sollten scharf definieren, was "verfügbar" oder "nicht verfügbar" bedeutet, und sich daran messen. Beispielsweise könnten Sie eine clientseitige Leistungs-SLA für die Site von 1 Sekunde bis zum "Falten" und 3 Sekunden für eine vollständig gerenderte Seite haben. Wenn Sie die Leistungs-SLA nicht erfüllen, sollten Sie dies als Verfügbarkeitsfehler für diesen Zeitraum betrachten. Es sollte keine Rolle spielen, ob Sie das CDN erreichen oder nicht - die Benutzererfahrung ist entscheidend.

Da Sie jedoch nur alle 5 Minuten Messungen durchführen, erscheint es sinnvoll, die Treffer für das CDN im Vergleich zur Master-Site separat zu messen und zu berechnen, dass 75% der Verfügbarkeit vom CDN und 25% vom Master stammen. Die Schwierigkeit dabei ist, dass 75% nur ein Durchschnitt sind. Um die Schuld für einen bestimmten Zeitraum genau aufzuteilen, müssen Sie wissen, wann die eine oder andere Site nicht tatsächlich dem Kunden zugewandt ist, z. B. während einer geplanten Änderung oder nach manuellen Maßnahmen, wenn ein Problem erkannt wird. Sie müssen auch berücksichtigen, was passiert, wenn einer der Master-Standorte oder das CDN ausgefallen sind. Bekommt der Kunde ein HTTP 500 oder führt er nur ein transparentes Failover auf die Arbeitsstelle durch? Viel hängt von Ihrer Lastausgleichslösung ab. Die von Ihnen beschriebene "Worst-Case" -Metrik scheint zu einfach. Frag dich selbst, "

Was die Frage betrifft, ob Sie "Schuld" tragen sollten, wenn das CDN ausgefallen ist: absolut. Wenn 75% Ihrer Treffer an das CDN gehen, hängen 75% Ihrer Kundenerfahrung von ihnen ab. Sie sind dafür verantwortlich, Ihren Kunden eine gute Erfahrung zu bieten. Wenn das CDN also Probleme hat, müssen Sie Ihre technischen Ressourcen verwenden, um dies zu beweisen und mit dem Anbieter Kontakt aufzunehmen.

Eine andere Sache, über die Sie nachdenken sollten, ist, was passiert, wenn die Master-Site für einen längeren Zeitraum nicht verfügbar ist. Wie Sie es beschrieben haben, scheint das CDN eine statische Kopie des Inhalts auf der Master-Site zu sein. Wenn die Master-Site längere Zeit nicht verfügbar ist, kann das CDN veralten. Vielleicht sollte ein Teil Ihrer SLA die Frische sein: 1 Sekunde bis zum "Falten" und 3 Sekunden für eine vollständig gerenderte Seite mit einem Inhalt, der nicht älter als 15 Minuten ist.


@ user44700: Der Trick hier ist zweifach - das CDN bietet eine Menge Metriken, die denen ähneln, die Sie beschreiben ... und wir haben alle 5 Minuten unsere eigenen internen Tests auf dem Ursprungsserver. Die Größe der Datenpunkte aus dem CDN im Vergleich zum internen ist völlig unausgewogen, aber sie werden so behandelt, als wären sie ausgeglichen (dh (CDN + intern) / 2 = Betriebszeit) ... Ich glaube nicht, dass das Management versteht grundlegende Statistiken ... :)
Tim Reddy

2

Ich stimme dem Benutzer 44700 zu. Es ist besser, die Verfügbarkeitstests für Ihre Server vom CDN zu trennen und die beiden unabhängig voneinander zu verfolgen. Ihre wahre Verfügbarkeit ist Server Avail * CDN Avail, da Sie davon ausgehen, dass Ihre Seite / Site nicht verfügbar ist, wenn einer von beiden ausfällt. Dies kostet Sie bei jedem Überwachungsanbieter weniger.

Ich würde nicht den Weg gehen, einen Browsertest zu erstellen und zu prüfen, welche Elemente fehlgeschlagen sind, obwohl dies funktionieren könnte und einige Unternehmen wie Catchpoint das Konzept "Verfügbarkeit von Inhalten" haben - es ist möglicherweise nicht genau das, was Sie für diesen Fall wollen. Angenommen, Ihre Webseite ruft das CDN nach einer Datei auf, die 404 liefert. Die meisten Überwachungslösungen geben an, dass dies ein Fehler ist. Aber war es wirklich das CDN, das fehlgeschlagen ist? War diese Datei überhaupt wichtig? Vielleicht hat jemand einfach vergessen, eine Reliktreferenz zu entfernen, die kein Benutzer bemerkt.

Sie können diesen Blog-Beitrag für weitere Ideen lesen: http://blog.catchpoint.com/2010/07/21/true-availability-of-a-webpage/


Vielen Dank für den Link ... wir folgen / messen so ziemlich in einer Weise, die mit diesem Artikel übereinstimmt.
Tim Reddy

0

Die SLA-Berichterstattung sollte die Realität genau widerspiegeln. Wenn Sie die Verfügbarkeit aus Benutzersicht messen und nur der Server, der die Messung durchführt, Probleme hat, spiegelt das Melden dieses Problems in Ihrem SLA nicht die Benutzererfahrung wider.

Ich kann verstehen, dass ich die Quellinformationen auf einem hohen Standard halten möchte und sie möglicherweise immer melden möchte, auch wenn sie ungenau sind, aber mit einem Hinweis, warum.

Wenn Sie sich nicht einigen können, gibt es möglicherweise eine technische Lösung, um den Messserver weniger fehlbar zu machen.

Welchen Wert bietet die Berichterstattung, wenn die Informationen als Ausfall gemeldet werden und dies nicht der Fall war?

In meiner Umgebung berichten wir aus mehreren Quellen. Eine externe Überwachungsmethode zur Meldung der Verfügbarkeit aus einer externen Perspektive sowie zur Meldung unseres internen Ausfallaufzeichnungssystems, das vom Menschen eingegeben wurde und mehrere Faktoren berücksichtigt, die die Situation am genauesten widerspiegeln.


@Warner: Leider ist der Server, auf dem die Metriken ausgeführt werden, genau das, was das Management als "Benutzererfahrung" betrachtet. Jeder Test ist 5 Minuten voneinander entfernt, sodass alle unsere "Ausfälle" unabhängig von der tatsächlichen Ausfallzeit (es kann 1 Sekunde sein) in Schritten von 5 Minuten erfolgen. Unser CDN bietet aus seiner Sicht Metriken und ist viel detaillierter als eine Test alle 5 Minuten ... Ich möchte diese separat melden. Leider hat das Management beschlossen, jede einzelne Bewerbung anzunehmen, den schlimmsten Fall auszuwählen und zu melden, dass ... was keine echte SLA widerspiegelt ...
Tim Reddy

Es hört sich fast so an, als würden sie die technischen Details nicht verstehen und der Situation nicht vertrauen. Daher verwenden sie standardmäßig den schlimmsten Fall, um die Genauigkeit zu gewährleisten.
Warner

Sie haben wahrscheinlich über so etwas nachgedacht, aber in einem früheren Berufsleben, in dem wir die Reservierungsdatenbank für eine große Autovermietung unterstützt haben, haben wir Gomez.com verwendet, um uns "Lesevorgänge" zu geben, wenn wir die Website betreten und einen Preis für eine bestimmte Person erhalten Vermietung. Unter unseren besonderen Umständen gab es dem Management die Art von Messgerät, die benötigt wurde. Alle Ziele für die Website waren fünf Neuner.
jl.

0

Gomez und Keynote sind von Unternehmen akzeptierte Lösungen zum Erfassen der von Ihnen genannten Arten von Metriken. Gomez verfügt auch über einen Dienst, der Ihre Endbenutzer-UX überwacht, indem er eine Google Analytics-ähnliche Javascript-Datei bezieht.



0

Wir sind ein Fortune 500 mit einer CDN-fähigen Site und verwenden verschiedene Dinge. Sie haben richtig festgestellt, dass Sie verschiedene Dinge messen müssen, wenn Sie verschiedene Dinge erkennen möchten. Mir ist nicht klar, was Sie speziell wollen - Verfügbarkeitsnummern, mit denen Sie feststellen können, wann eine App tatsächlich nicht verfügbar ist, oder Nummern, die das Management von Ihrem Rücken abbringen. Wie auch immer...

  1. Externe synthetische Überwachung - Keynote / Gomez / Webmetrics. Früher haben wir Keynote verwendet, jetzt verwenden wir Gomez. Wie Sie bemerken, umfasst dies natürlich auch CDN und andere externe Komponenten. Dies ist gut, um Ihre gesamte SLA zu messen, aber nicht so gut, um die SLAs Ihrer Anwendungen zu bestimmen.

Um das "CDN herauszubekommen", können Sie einen anderen Keynote / Gomez-Monitor nehmen und ihn mit einem alternativen DNS-Namen oder so weiter auf Ihre Apps richten, nicht über das CDN. Da es jedoch immer noch statische Assets enthält, ist es für die Leistung nützlicher als für die Verfügbarkeit. Und es hält Internetausfälle, Agentenausfälle usw. auf dem Laufenden, was für einige Zwecke geeignet ist und für andere nicht.

  1. Echte Benutzerüberwachung. Es gibt netzwerkbasierte (Coradiant, Tealeaf) und tagbasierte (Jiffy, Gomez). Wir verwenden Coradiant als Netzwerk-Sniffer und es bestimmt die tatsächliche vom Benutzer gesehene Leistung von Assets, die hier in unserem Rechenzentrum gehostet werden - mit anderen Worten, die tatsächlichen Anwendungen und nicht den gesamten statischen Müll auf dem CDN. Wir haben dann Berichte geschrieben, um die App-Fehlerraten und die Leistung zu bestimmen, und den Apdex (apdex.org) als abgeleitete Metrik verwendet. In einigen Fällen können Sie nicht netzwerkbasiert verwenden (zu viel Datenverkehr oder Ihre Assets werden nicht dort gehostet, wo Sie im Netzwerk verfügbar sind), und tagbasiert ist nicht so zuverlässig. Hat den immensen Vorteil, dass die Antwortzeit und die Fehler des Endbenutzers tatsächlich angezeigt werden. Es ist einfach, einen synthetischen Monitor einzurichten, der nicht in allen Fällen fehlerhaft ist, die ein echter Benutzer tut.

  2. Lokale synthetische Überwachung. Nagios / zabbix / sitescope / hundert andere. Richten Sie einen Monitor lokal auf Ihre App (gehen Sie nicht durch das CDN). Dies ist der Goldstandard für eine umsetzbare Verfügbarkeitsüberwachung (wie in, senden Sie eine Seite, um jemanden aufzuwecken). Berücksichtigt keine Netzwerk-Inhalte.

  3. Protokollüberwachung. In gewissem Sinne ist dies eine echte Benutzerüberwachung im Ghetto. Aber wenn Sie wirklich nur sehen wollen, was wann fehlerhaft ist, ist es ziemlich praktisch. Hat der Vorteil "Nein, das ist wirklich passiert" der echten Benutzerüberwachung. Oft nur Verfügbarkeit, es sei denn, Sie protokollieren die Zeit, die auf der Webebene benötigt wird. In diesem Fall wird angezeigt, wie lange Ihr Serverende gedauert hat - nicht hilfreich für Benutzer mit SLA, aber sehr hilfreich für "An welchem ​​Code müssen wir arbeiten?" . " Verwenden Sie Splunk.

Es ist kein Entweder oder, wir verwenden all diese, weil Sie die "Endbenutzer-Story" sowie "Auf welchen Programmierer müssen wir uns stützen" wollen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.