Übung: Hinzufügen von Integritätsprüfungen für Webanwendungen

Abgeschlossen

Contoso Shoes benötigt eine Möglichkeit, die Integrität der Webanwendung und ihre Abhängigkeiten auf der API-Ebene zu überprüfen. Sie möchten einen dedizierten Endpunkt für die Integritätsprüfung in der Anwendung implementieren, der in regelmäßigen Abständen den API-Integritätsstatus meldet.

Aktueller Zustand und Problem

Im aktuellen Entwurf protokolliert die Anwendung Fehler, wenn es Runtimeprobleme im API-Code gibt oder bei Aufrufen von abhängigen Diensten Fehler auftreten, z. B. fehlerhafte Datenbankabfragen. Dieser Ansatz ist nützlich bei der Problembehandlung nach einem Vorfall.

Der Ansatz ist jedoch nicht proaktiv. Azure App Service und die externen Überwachungstools verfügen nicht über eine Möglichkeit, den Integritätsstatus der Anwendung selbst zu überprüfen. Diese Lücke wirkt sich auf viele Anwendungsfälle aus, z. B. darauf, wie die Last verteilt wird. Die aktuelle Implementierung beruht ausschließlich auf der durch den App Service-Plan vorgenommenen bestmöglichen gleichmäßigen Verteilung des Datenverkehrs auf die Instanzen, ohne jemals die Integrität der Anwendung zu überprüfen. Bei einem gemeldeten Vorfall wurde der Datenverkehr an fehlerhafte App Service-Instanzen weitergeleitet, was zu Anforderungsfehlern führte.

Spezifikation

Ihre Aufgabe ist es, den dedizierten Integritätsdienst als Erweiterung des bereits bereitgestellten Codes zu erstellen.

  • Führen Sie eine API zur Integritätsprüfung in Ihre Anwendung ein. Die API muss den Integritätsstatus der Anwendung und ihrer Abhängigkeiten überprüfen und den Status zurückgeben. Beispielsweise sollte die API regelmäßig Lese- und Schreibvorgänge in Azure Cosmos DB überprüfen. Implementieren Sie diese Funktionen als separate Integritätstests, damit Lese- und Schreibvorgänge unabhängig voneinander überprüft werden.

    Tipp

    Erweitern Sie die Integritätsprüfung auf nicht-funktionale Dienste wie Azure Key Vault und Azure Container Registry. Dieser Schritt ist wichtig, da sich der Ausfall dieser Dienste auf die Möglichkeit zur Aufskalierung oder Bewältigung des Neustarts einer App Service-Instanz auswirken kann.

  • Der API-Endpunkt für die Integritätsprüfung muss häufig und von mehreren Quellen aufgerufen werden und sollte die Leistung der API nicht beeinträchtigen. Der Azure App Service-Plan muss z. B. zweimal pro Minute Anforderungen an einen Endpunkt senden und fundierte Entscheidungen darüber treffen, an welche App Service-Instanzen der Datenverkehr verteilt werden soll.

  • Optimieren Sie die Leistung der API für Integritätsprüfungen, indem Sie die Ergebnisse für 10 Sekunden im Arbeitsspeicher zwischenspeichern. Nicht jede Abfrage an den Endpunkt der Integritätsprüfung sollte zu einem Back-End-Aufruf führen. Einige dieser Antworten können aus dem Cache bereitgestellt werden.

  • Stellen Sie die Daten der Integritätsprüfung in Azure Monitor für zukünftige Analysen zur Verfügung.

Für die ersten Schritte mit Ihrem Entwurf empfehlen wir den folgenden Ansatz:

1: Integritätsprüfungen

Alle Abfragen, die von der Integritätsprüfungs-API gesendet werden, müssen asynchron und parallel durchgeführt werden. Entwerfen Sie Integritätsprüfungen für kritische Komponenten wie die Datenbank. Die API sollte regelmäßig Lese- und Schreibvorgänge überprüfen. Implementieren Sie diese Funktionen als separate Integritätstests, damit Lese- und Schreibvorgänge unabhängig voneinander überprüft werden.

Verwenden Sie Anforderungen, die das reale Verhalten der Anwendung nachahmen, ohne die Dienste allein durch die Integritätstests zu stark zu belasten. Um auch Schreibanforderungen zu testen, müssen Sie einen Weg finden, Testdaten effizient zu entfernen, sodass sie nicht mit echten Benutzerdaten verwechselt werden.

2: Zwischenspeicherungsmuster

Um eine Überlastung der nachgelagerten Dienste mit Integritätsprüfungen zu vermeiden, sollte die API für Integritätsprüfungen die Ergebnisse für eine konfigurierbare Anzahl von Sekunden zwischenspeichern. Überlegen Sie, wie Sie dieses Ziel erreichen können.

Arbeit überprüfen

Hier folgt ein Beispiel für den Anwendungsintegritätsdienst. Haben Sie bei Ihrem Entwurf alle Aspekte berücksichtigt?

  • Ist der Endpunkt für die Integritätsprüfung mit dem Feature „Integritätsprüfung“ von Azure App Service kompatibel?
  • Haben Sie Prüfungen für Laufzeitabhängigkeiten integriert? Was haben Sie als Proxy/Test verwendet?
    • Cosmos DB-Lese-/Schreibvorgang
    • Drittanbieter-API
  • Haben Sie die Ergebnisse der Integritätsprüfung zwischengespeichert, um den Leistungsmehraufwand zu reduzieren?
  • Haben Sie bei Ihren Integritätsprüfungen Ereignisse protokolliert? Notieren Sie sich die Erfolge und Misserfolge?
  • Haben Sie die Stichprobenentnahme bei Protokollen von Azure Application Insights bei den Protokollen der Integritätsprüfung angewendet?