Alle Fachbeiträge

Health Checks für Anwendungen richtig planen

Warum ein erfolgreiches Deployment noch nichts über den Zustand einer Anwendung sagt – und weshalb jeder Check eine betriebliche Entscheidung auslösen muss.

Inhalt· 7 Abschnitte

Das Wichtigste in Kürze

  1. Ein Health Check ist eine vereinbarte Aussage über den Zustand einer Anwendung, kein Endpunkt, der pauschal 200 OK zurückgibt.
  2. Nicht jede Abhängigkeit gehört in jeden Check: Vollprüfungen aller Dienste erzeugen Ketteneffekte und können Störungen verschärfen.
  3. Ein Health Check ohne nachvollziehbare Reaktion ist nur ein Messwert, ein Alarm ohne klare Zuständigkeit wird zur Hintergrundkulisse.

Ein erfolgreicher Deployment-Job sagt nur, dass Software ausgeliefert wurde. Er sagt nicht, ob Nutzer sich anmelden können, ob eine Schnittstelle Antworten liefert oder ob Hintergrundprozesse weiterarbeiten. Health Checks für Anwendungen schaffen genau diese Unterscheidung. Sie machen den Zustand eines Systems überprüfbar und geben Betriebsteams eine belastbare Grundlage für Reaktionen – automatisiert und nachvollziehbar.

Für Entscheider ist das kein Detail der Infrastruktur. Ohne klar definierte Prüfungen bleiben Störungen oft länger unentdeckt, Releases werden schwerer abzusichern und Verantwortlichkeiten verschwimmen. Ein guter Health Check verbindet technische Beobachtung mit einer klaren betrieblichen Entscheidung: Ist diese Anwendung gerade bereit, Verkehr anzunehmen? Muss sie neu gestartet werden? Oder braucht es einen Menschen, weil ein fachlich kritischer Prozess nicht mehr funktioniert?

Was Health Checks für Anwendungen tatsächlich prüfen

Ein Health Check ist kein einzelner Endpunkt, der pauschal 200 OK zurückgibt. Er ist eine vereinbarte Aussage über den Zustand einer Anwendung. Welche Aussage sinnvoll ist, hängt von Architektur, Geschäftsprozess und Betriebsmodell ab.

Bei einer öffentlichen Webanwendung kann eine einfache Erreichbarkeitsprüfung zunächst genügen. Bei einer Plattform mit API, Datenbank, Warteschlangen, externem CRM und Zahlungsdienst wäre dieselbe Prüfung zu wenig. Die Startseite kann erreichbar sein, während Bestellungen nicht verarbeitet oder Daten nicht synchronisiert werden. Verfügbarkeit muss deshalb an den Funktionen gemessen werden, die für Nutzer und Fachbereich tatsächlich relevant sind.

In Kubernetes-Umgebungen haben sich drei unterschiedliche Prüfarten etabliert. Eine Liveness-Prüfung beantwortet, ob ein Prozess noch arbeitsfähig ist. Schlägt sie wiederholt fehl, kann Kubernetes den Container neu starten. Eine Readiness-Prüfung entscheidet, ob eine Instanz Anfragen erhalten darf. Erst wenn sie erfolgreich ist, wird die Instanz in den Load Balancer aufgenommen. Eine Startup-Prüfung schützt Anwendungen mit längerer Initialisierung davor, während des Hochfahrens voreilig neu gestartet zu werden.

Diese Trennung ist praktisch relevant. Eine Anwendung kann laufen, aber noch keine Datenbankverbindung aufgebaut haben. Dann wäre sie lebendig, aber nicht bereit für Nutzerdaten. Umgekehrt darf ein kurzfristig langsamer externer Dienst nicht zwingend dazu führen, dass sämtliche Instanzen einer Plattform neu starten. Health Checks müssen deshalb gezielt wirken, statt nur technisch vollständig auszusehen.

Welche Abhängigkeiten in den Check gehören

Die häufigste Fehlentscheidung lautet: Jeder abhängige Dienst wird bei jedem Health Check vollständig geprüft. Das erzeugt Ketteneffekte. Wird etwa eine externe Schnittstelle langsam oder nicht erreichbar, kann eine große Zahl von Instanzen gleichzeitig Prüfungen auslösen und das Problem verschärfen. Außerdem wird die eigene Anwendung unter Umständen aus dem Verkehr genommen, obwohl sie für andere Funktionen weiterhin nutzbar wäre.

Sinnvoll ist eine abgestufte Betrachtung. Für die Readiness-Prüfung gehören meist Abhängigkeiten hinein, ohne die die Anwendung ihre Kernfunktion nicht erfüllen kann – beispielsweise die primäre Datenbank oder ein zwingend benötigter interner Service. Externe Systeme sollten differenzierter bewertet werden. Kann eine Anwendung Anfragen entgegennehmen und einen Auftrag sicher in einer Queue ablegen, obwohl das Zielsystem temporär nicht antwortet, ist sie möglicherweise weiterhin bereit. Der Fehler muss sichtbar sein, aber er rechtfertigt nicht automatisch den Entzug allen Traffics.

Bei Integrationen mit Dynamics 365, Zahlungsanbietern oder Fachsystemen sollte daher nicht nur die technische Erreichbarkeit überwacht werden. Entscheidend sind fachliche Signale: Wie viele Synchronisationsvorgänge schlagen fehl? Wie lange liegen Nachrichten in einer Warteschlange? Wann wurde ein erfolgreicher Abgleich zuletzt abgeschlossen? Solche Indikatoren ergänzen technische Health Checks dort, wo ein einzelner HTTP-Endpunkt nicht ausreicht.

Health Checks müssen zum Deployment passen

Ein automatisiertes Deployment ist erst dann betrieblich abgesichert, wenn es nach der Auslieferung den tatsächlichen Zustand prüft. Nach einem Release sollte die Pipeline nicht allein auf einen erfolgreichen Build oder ein gestartetes Container-Image vertrauen. Sie sollte warten, bis die neuen Instanzen bereit sind, und anschließend definierte Smoke Tests ausführen.

In einer Kubernetes-Umgebung kann das so aussehen: Neue Pods starten, bestehen ihre Startup- und Readiness-Prüfungen und werden schrittweise mit Traffic versorgt. Treten Fehler auf, bleibt die alte Version aktiv oder ein automatischer Rollback setzt sie wieder ein. Das reduziert das Risiko eines vollständigen Ausfalls, ersetzt aber keine saubere Fehleranalyse. Ein Rollback ist eine Schutzmaßnahme, keine Erklärung für die Ursache.

Auch bei mobilen Anwendungen oder Firebase-basierten Backends gilt dieses Prinzip. Der Client lässt sich nicht auf Knopfdruck zurückholen, sobald er installiert ist. Umso wichtiger ist es, Backend-Änderungen abwärtskompatibel bereitzustellen und deren Erreichbarkeit sowie Antwortverhalten vor einer breiten Aktivierung zu prüfen.

Alarme brauchen eine betriebliche Konsequenz

Ein Health Check ohne nachvollziehbare Reaktion ist lediglich ein Messwert. Ein Alarm ohne klare Zuständigkeit wird zur Hintergrundkulisse. Deshalb müssen Schwellwerte, Eskalationswege und Handlungsoptionen gemeinsam definiert werden.

Nicht jede Abweichung verlangt nachts einen Eingriff. Eine einzelne fehlgeschlagene Prüfung kann ein Netzwerkproblem sein. Wiederholte Ausfälle über mehrere Instanzen, ein wachsender Rückstau in einer Queue oder eine deutlich erhöhte Fehlerrate sind andere Signale. Hier zählt die Kombination aus Dauer, Ausmaß und fachlicher Wirkung. Für einen Terminbuchungsprozess ist ein Ausfall während der Geschäftszeiten anders zu bewerten als ein verzögerter Analysejob.

Gute Betriebsprozesse dokumentieren deshalb nicht nur, dass ein Alarm ausgelöst wurde, sondern auch, was als Nächstes passiert: automatische Wiederherstellung, Ticket, Benachrichtigung an den Bereitschaftsdienst oder fachliche Information an Verantwortliche. Das schafft Verbindlichkeit und verhindert, dass technische Meldungen ohne Entscheidung im Monitoring verbleiben.

Sicherheitsgrenzen nicht übersehen

Health-Endpunkte wirken harmlos, können aber Informationen über Architektur und Abhängigkeiten preisgeben. Ein öffentlich erreichbarer Endpunkt sollte daher nur die Information liefern, die ein Load Balancer oder Monitoring-System benötigt. Interne Details wie Datenbanknamen, Zugangsdaten, Stacktraces oder Zustände einzelner Fremdsysteme gehören nicht in die Antwort.

Detaillierte Diagnoseinformationen können in einem geschützten internen Bereich sinnvoll sein. Auch dort gilt: Zugriffe protokollieren, Berechtigungen begrenzen und sensible Daten vermeiden. Sicherheitsprüfungen und Betriebsprüfungen gehören zusammen, weil ein zu freizügiger Health Check selbst zum Risiko werden kann.

Von der Anforderung bis zum laufenden Betrieb

Health Checks sollten nicht erst kurz vor dem Go-live ergänzt werden. Ihre Grundlage entsteht bereits in der Architekturentscheidung. Zunächst wird geklärt, welche Nutzerwege und Geschäftsprozesse kritisch sind. Daraus folgt, welche Komponenten zwingend verfügbar sein müssen und welche Ausfälle kontrolliert abgefangen werden können.

In der Umsetzung werden Endpunkte, Timeouts und Fehlerzustände gezielt gebaut und automatisiert getestet. Bei einem NestJS-Backend kann das beispielsweise ein separater Readiness-Endpunkt sein, der die Verbindung zu notwendigen internen Diensten bewertet, ohne teure Vollprüfungen bei jeder Anfrage auszuführen. In der Integrationsphase werden diese Signale mit Deployment, Monitoring und Alarmierung verbunden. Erst im Betrieb zeigt sich dann, ob Grenzwerte und Reaktionen zur realen Nutzung passen.

Das ist kein einmaliges Architekturthema. Neue Funktionen, zusätzliche Integrationen und geänderte Lastprofile verändern auch die Aussagekraft bestehender Checks. Wenn ein System wächst, müssen die Prüfungen mitwachsen. Entwicklung und Betrieb gehören zusammen, weil ein Endpunkt nur dann nützlich ist, wenn seine Aussage im Störungsfall auch zu einer sinnvollen Handlung führt.

Typische Fehler, die vermeidbare Ausfälle verlängern

Ein häufiger Fehler ist ein einziger Endpunkt für alle Zwecke. Dann kann eine aggressive Liveness-Prüfung wegen einer temporär nicht erreichbaren Abhängigkeit Neustart-Schleifen auslösen. Ebenso problematisch sind Checks, die zu aufwendig sind: Wenn jeder Aufruf komplexe Datenbankabfragen oder externe API-Anfragen startet, werden sie unter Last selbst zur Belastung.

Auch ein immer erfolgreicher Health Check ist wertlos. Er schützt zwar vor Fehlalarmen, verdeckt aber reale Probleme. Das Gegenstück ist ein Check, der auf jede geringe Verzögerung reagiert und damit dauernd Alarm auslöst. Beide Varianten untergraben Vertrauen in das Monitoring.

Die bessere Entscheidung liegt meist dazwischen: kleine, klar abgegrenzte technische Prüfungen für den Plattformbetrieb und ergänzende fachliche Kennzahlen für die tatsächliche Servicequalität. Was genau dazugehört, hängt vom Produkt ab. Ein internes Verwaltungswerkzeug braucht andere Signale als eine transaktionskritische Kundenplattform.

Ein belastbarer Health Check beantwortet nicht nur die Frage, ob ein Server antwortet. Er zeigt, ob ein digitales Produkt seinen vereinbarten Zweck unter realen Bedingungen noch erfüllt. Wer diese Signale früh in Architektur, Deployment und Betriebsverantwortung verankert, erkennt Probleme nicht erst durch Kundenanrufe – und kann sie mit klaren Entscheidungen beheben.

Geschrieben von

Felix Nithammer

Inhaber

Schreibt bei dreißigelf über Cloud, Produktentwicklung, Integration und KI – für Leserinnen und Leser, die entscheiden müssen, ohne selbst vom Fach zu sein.

Betrifft Sie das Thema gerade selbst?

Dann sprechen wir über Ihren Fall. Sie bekommen die Einschätzung, die wir für Ihr Vorhaben geben würden, auch dann, wenn sie gegen eine Eigenentwicklung ausfällt.

Anforderungen besprechen