Übung: Erstellen eines Anwendungsintegritätsmodells

Abgeschlossen

Contoso Shoes benötigt eine Möglichkeit, Probleme in dieser Architektur zu erkennen, zu diagnostizieren und vorherzusagen. Sie möchten ein Integritätsmodell erstellen, das durch einen auf Benutzer- und Systemabläufe angewandten Integritätsstatus messbar ist. Ziel ist es, potenzielle Fehlerpunkte zu identifizieren, bevor sie einen Ausfall verursachen können.

Aktueller Zustand und Problem

Bisher haben Sie eine API für die Integritätsprüfung hinzugefügt und Funktionen für mehrere Regionen in Ihrer Architektur erstellt. Es gibt jedoch keine Möglichkeit, Einblicke in die komplexe Topologie zu erhalten, die Benutzer- und Systemabläufe umfasst. Diese Lücke muss geschlossen werden, damit das SRE-Team Probleme schnell erkennen und beheben kann.

Bei einem kürzlich aufgetretenen Vorfall war das Team nicht in der Lage, die kaskadenartigen Auswirkungen eines Problems zu erkennen, das durch eine API-Komponente verursacht wurde, die ihre Plattformabhängigkeiten beeinträchtigte. Die Problembehandlung nahm viel Zeit in Anspruch, da die fehlerhafte Komponente nicht sofort erkannt werden konnte. Letztendlich führte diese Ineffizienz zu längeren Ausfallzeiten und damit zu finanziellen Verlusten für das Unternehmen.

Spezifikation

  • Entwerfen Sie ein Integritätsmodell, das die Beziehungen zwischen allen Komponenten der Architektur einschließlich der Anwendungskomponenten und der Plattformabhängigkeiten zeigt. Berücksichtigen Sie Elemente, die innerhalb des Anforderungsflusses existieren, einschließlich Gateway, Compute, Datenbanken, Speicher, Caches usw. Schließen Sie auch Komponenten ein, die normalerweise außerhalb des Anforderungsflusses existieren. Beispiel: OCI-Artefakte (Open Container Initiative), Geheimnisspeicher, Konfigurationsdienste und andere. Alle Azure-Dienste müssen für das Senden von Diagnosedaten konfiguriert sein.

  • Fügen Sie eine einheitliche Datensenke in die Architektur ein, um Daten aus verschiedenen Quellen zu sammeln.

  • Definieren Sie einen allgemeinen Integritätsstatus auf der Grundlage aggregierter Verlaufsprotokolle und -metriken. Stellen Sie den Status in einem der drei Integritätszustände dar: fehlerhaft, heruntergestuft und fehlerfrei.

  • Visualisieren Sie den Integritätsstatus aller Komponenten in einer Hierarchie, die alle Abläufe darstellt.

Wir empfehlen Ihnen, die folgenden Schritte zu befolgen, um mit Ihrem Entwurf zu beginnen.

Wichtig

Die Integritätsmodellierung ist eine umfassende Aufgabe. Der in diesem Abschnitt beschriebene Ansatz soll Ihnen den Einstieg erleichtern. Wenden Sie das Modell umfassend auf alle funktionalen und nicht funktionalen Abläufe in Ihrem unternehmenskritischen Entwurf an, um eine ganzheitliche Sicht auf das System zu erhalten.

1: Starten der Integritätsmodellierung

Dies ist eine theoretische Übung. Integritätsmodellierung im Rahmen einer Top-Down-Entwurfsaktivität, bei der Sie eine umfassende Liste der in der Architektur verwendeten Komponenten benötigen. Diese Liste sollte alle Anwendungskomponenten und die Azure-Dienste enthalten.

Platzieren Sie diese Komponenten in einem Abhängigkeitsdiagramm, das eine hierarchische Ansicht der Lösung zeigt. Auf der obersten Ebene befinden sich die Benutzerabläufe, die die Anforderungen des Endbenutzers an die Website nachverfolgen, sowie die Abläufe auf der Ebene der Anwendungs-API. Die unterste Ebene enthält die Systemabläufe aus den Azure-Diensten. Ordnen Sie auch die Abhängigkeiten zwischen den Azure-Ressourcen zu.

Ihr Diagramm sollte in etwa so aussehen:

Diagramm, das ein Abhängigkeitsdiagramm für ein Integritätsmodell zeigt.

Überprüfen Sie Ihren Fortschritt: Mehrschichtige Anwendungsintegrität

2: Definieren der Integritätsbewertungen

Sammeln Sie für jede Komponente Metriken und Metrikschwellenwerte und entscheiden Sie dann, bei welchem Wert die Komponente als fehlerfrei, heruntergestuft und fehlerhaft eingestuft werden soll. Diese Entscheidung sollte von der erwarteten Leistung und den nicht funktionalen Geschäftsanforderungen beeinflusst werden. Kategorisieren Sie Ihre Metriken wie folgt:

  • Anwendungsmetriken: Datenpunkte aus Anwendungscode, z. B. die Ausnahmeanzahl.

  • Dienstmetriken: Datenpunkte aus Azure-Diensten, etwa verwendete Datenbanktransaktionseinheiten (Database Transaction Units, DTUs).

  • Lösungsmetriken: Datenpunkte auf Lösungsebene, z. B. End-to-End-Verarbeitungszeit einer Anforderung.

Hier folgt ein Beispiel für Azure App Services:

App-Dienste Integritätsstatus
Antwortzeit < 200 ms
HTTP-Serverfehler < 2
Zeigt einen fehlerfreien grünen Zustand an.
Antwortzeit < 500 ms
HTTP-Serverfehler < 2
Zeigt einen heruntergestuften gelben Status an.
Antwortzeit > 500 ms
HTTP-Serverfehler > 2
Zeigt einen fehlerhaften roten Zustand an.

3: Definieren eines allgemeinen Integritätsstatus

Definieren Sie für jeden Benutzer- und Systemablauf einen Gesamtstatus. Sie müssen den Integritätsstatus der einzelnen Komponenten, die an diesem Ablauf beteiligt sind, zusammenfassen.

Angenommen, ein Systemablauf besteht aus einer Anwendungskomponente, einem Azure App Service-Plan und App Services.

API App Service-Plan App-Dienste Integritätsstatus
Maximale Wartezeit < 30 ms CPU in % < 70 %
Länge der HTTP-Warteschlange < 5
Antwortzeit < 200 ms
HTTP-Serverfehler < 2
Grün angezeigter, zusammengesetzter Integritätszustand.
Maximale Wartezeit < 30 ms CPU in % < 90 %
Länge der HTTP-Warteschlange < 5
Antwortzeit < 500 ms
HTTP-Serverfehler < 2
Gelb angezeigter, zusammengesetzter heruntergestufter Zustand.
Maximale Wartezeit > 30 ms CPU in % > 90 %
Länge der HTTP-Warteschlange > 5
Antwortzeit > 500 ms
HTTP-Serverfehler > 2
Rot angezeigter, zusammengesetzter fehlerhafter Zustand.

Die Integritätsbewertung für einen Benutzerablauf sollte durch die niedrigste Bewertung aller zugeordneten Komponenten dargestellt werden. Wenden Sie für Systemabläufe eine angemessene Gewichtung auf der Grundlage der geschäftlichen Bedeutung an. Zwischen den beiden Abläufen sollten die finanziell bedeutsamen oder den Kunden zugewandten Benutzerabläufe priorisiert werden.

Überprüfen Sie Ihren Fortschritt: Beispiel – Mehrschichtiges Integritätsmodell

4: Sammeln von Überwachungsdaten

Sie benötigen in jeder Region eine einheitliche Datensenke, die Protokolle und Metriken für alle Anwendungen und Plattformdienste sammelt, die im Rahmen des regionalen Stempels bereitgestellt werden. Sie benötigen eine weitere Senke für die Speicherung von Metriken, die von globalen Ressourcen wie Azure Front Door und Cosmos DB ausgegeben werden.

Diagramm, das Datensammlungen aus verschiedenen Anwendungs- und Plattformdiensten zeigt.

Auswahl der Technologie

  • Azure Application Insights: Wird verwendet, um alle Anwendungstelemetriedaten zu sammeln.
  • Azure Monitor-Protokolle: Sammeln von Application Insights gesendete Daten sowie Plattformmetriken für Azure-Dienste.
  • Azure Log Analytics: Wird als zentrales Tool für die Analyse von Protokollen und Metriken von allen Anwendungs- und Infrastrukturkomponenten verwendet.

Überprüfen Sie Ihren Fortschritt: Einheitliche Datensenke für die korrelierte Analyse

5: Einrichten von Abfragen für Überwachungsdaten

Die Kusto-Abfragesprache (KQL) ist vollständig in Log Analytics integriert. Implementieren Sie benutzerdefinierte KQL-Abfragen als Funktionen zum Abrufen von Daten aus Azure Monitor.

Speichern Sie benutzerdefinierte Abfragen im Coderepository, sodass sie automatisch als Teil Ihrer CI/CD-Pipelines (Continuous Integration/Continuous Delivery) importiert und angewendet werden.

6: Visualisieren des Integritätsstatus

Sie können das Abhängigkeitsdiagramm mit Integritätsbewertungen durch die Darstellung einer Ampel visualisieren. Verwenden Sie Tools wie Azure-Dashboards, Monitor-Arbeitsmappen oder Grafana. Hier sehen Sie ein Beispiel:

Diagramm, das eine Beispielintegritätsbewertung in einem Abhängigkeitsdiagramm zeigt.

Überprüfen Sie Ihren Fortschritt: Visualisierung

7: Einrichten von Warnungen bei Statusänderungen

Sie sollten Dashboards mit Warnungen verwenden, um sofort über Probleme informiert zu werden.

Wenn sich der Integritätszustand einer Komponente in Heruntergestuft oder Fehlerhaft ändert, sollte der Operator sofort benachrichtigt werden. Legen Sie Warnungen auf dem Stammknoten fest, da jede Änderung an diesem Knoten auf einen fehlerhaften Zustand der zugrunde liegenden Benutzerabläufe oder Ressourcen hinweist.

Überprüfen Sie Ihren Fortschritt: Warnungen

Arbeit überprüfen

Schauen Sie sich diese Demo zur Überwachung und Integritätsmodellierung an. Haben Sie bei Ihrem Entwurf alle Aspekte berücksichtigt?

  • Verfügen Sie über eine einheitliche Datensenke für korrelierte Analysen?
  • Haben Sie Anwendungsprotokolle, Plattformmetriken und Lösungsdatenpunkte einbezogen?
  • Haben Sie Dashboards eingerichtet, um den Integritätsstatus aller Komponenten zu visualisieren?
  • Haben Sie bei jedem Dienst (oder einem Teil dieses Diensts) Fehlerpunkte berücksichtigt, die einen Ausfall verursachen oder Sie an der Skalierung, Bereitstellung und Überwachung hindern könnten?
  • Haben Sie Abfragepakete in Betracht gezogen, um wichtige Abfragen zu erfassen, mit denen Sie Probleme schneller selektieren können?
  • War Ihre Integritätsprüfungs-API bei diesem Modell hilfreich? Mussten Sie diese API ändern, um sie besser an das Integritätsmodell anzupassen?

Wissensbeurteilung

1.

Was muss in Ihre Integritätsbewertung einbezogen werden, die den allgemeinen Integritätsstatus der Anwendung darstellt?

2.

Welche dieser Azure-Dienste können als einheitliche Datensenke für Telemetriedaten und Analysen verwendet werden?