So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)
Ich habe ein Standard-ASP.NET MVC-Projekt und muss die Anwendungsverfügbarkeit berechnen, um unsere SLA-Ebene herauszufinden . Also muss ich so etwas für unsere Webanwendung bekommen.
Informationen von meinem Hosting-Anbieter
System Availability: 99.9860%
Total Uptime: 30d 10h:22m:44s
Total Downtime: 0d 0h:6m:9s
Total Reboots: 3
Mean Time Between Reboots: 10.15 days
Aber ich muss die Verfügbarkeit für die Anwendung berechnen. Die Frage ist also
Wie kann die Verfügbarkeit von ASP.NET MVC-Anwendungen richtig berechnet werden?
Vielleicht hat jemand das bereits umgesetzt, oder jeder Vorschlag, wie das geht, jede Hilfe wird geschätzt.
Wo soll man anfangen?
Der erste Punkt, den ich denke, ist Application Insights und Verfügbarkeitstest . Das Problem ist, dass der Mindestwert der Testfrequenz 5 Minuten beträgt. Ich brauche genauere Messungen.
Erstellen Sie als Nächstes ein Tool, das meine App jede Sekunde aufruft und Informationen sammelt. Ergebnis: eine sehr große Anzahl von Anfragen.
Besorgen Sie sich auch einige Leistungsindikatoren von IIS oder ähnlichem. Muss untersuchen, ob es möglich ist.
Ich weiß, dass die mögliche Frage zu weit gefasst ist, aber ich habe keine Informationen zur Implementierung der Verfügbarkeit von Anwendungen gefunden. Was denkst du darüber?
Es würde zu lange dauern, wenn ich alle Teile erklären würde, die getan werden können, also werde ich mich kurz fassen.
Normalerweise definieren Sie alle diese Details in einem Service Level Agreement, in dem Sie auch das Verfügbarkeitsziel (dh 99%) definieren, das auch geplante Ausfallzeiten enthält. Ein Ziel von 99% Verfügbarkeit ist es, dass die App ausgeführt wird und ihre Funktionalität wie im Dokument beschrieben mit höchstens ca. 87,6 h pro Jahr. Hier ist ein SLA-Verfügbarkeitsrechner .
Das normale Intervall beträgt 5 Minuten, wie Sie sagen, aber Sie können durch die Verwendung einer externen Site / eines externen Dienstes nachweisen, dass die Lieferanten die Anforderungen nicht erfüllen. Sie berechnen Ihren Verlust (Einnahmeverlust, Arbeitskosten usw.) und fordern das Geld von ihnen an. Sie haben bereits eine Business Impact Analysis (BIA). Ich denke, sonst sollten Sie dies tun.
Ok, jetzt zum Programmier- / DevOps-Teil. Normalerweise entwickle ich Anwendungen / Dienste in diesem Sinne und melde den Status einem Drittanbieter wie NewRelic, Uptrends oder ähnlichem. Als Beispiel verwende ich hierfür auch einen selbst erstellten Dienst, da genaue Anforderungen für die Bereitstellung von Daten mindestens einmal pro Sekunde mit einer harten Frist bestehen. In meiner Lösung verwende ich WebSockets, um Daten nach einem Zeitplan, Ereignis oder bei Bedarf in beide Richtungen zu senden. Ein Vorteil dabei ist, dass Sie den Status (gut oder schlecht) beispielsweise alle 500 ms senden können und innerhalb einer Sekunde wissen, ob die App fehlgeschlagen ist (≈ 499 ms + 500 ms).
Mit einem solchen Dienst können Sie die Verfügbarkeit, benutzerdefinierte Ereignisse von Interesse und mögliche Fehler innerhalb einer Sekunde und einer Menge anderer Metriken messen. Normalerweise innerhalb von 5-100 ms, aber WCET / WCRT ist schwer abzuschätzen.
Um Ihre Frage zu beantworten , können Sie die Verfügbarkeit von Anwendungen nicht mit so wenigen Messpunkten berechnen, da alle 5 Minuten ca. 12 Sekunden pro Stunde und Sie können keine zuverlässige Berechnung daraus haben. Sie können davon ausgehen, dass zwischen den Messpunkten alles in Ordnung war, aber das nennt man Raten. Ich habe Implementierungen mit 14 400 Messpunkten pro Stunde durchgeführt, um eine Genauigkeit von 500 ms (Banken) bereitzustellen.
Ich hoffe, Sie haben eine Antwort erhalten, die Ihnen bei Ihrem Problem hilft.