Warum „läuft“ nicht genügt
Ein Prozess kann laufen und trotzdem nutzlos sein: Die Datenbankverbindung ist abgerissen, der Speicher ist voll, eine Endlosschleife blockiert alles. Von außen sieht das aus wie ein gesunder Server – nur antwortet er nicht mehr sinnvoll.
Deshalb prüft man nicht den Prozess, sondern die Funktion: Ein Pfad in der Anwendung antwortet auf eine einfache Anfrage. Kommt nichts oder etwas Falsches zurück, gilt die Instanz als krank.
Ein guter Check
// Beispiel in Express
app.get("/health", async (_req, res) => {
try {
await db.query("SELECT 1"); // Kann ich die Datenbank erreichen?
res.status(200).send("ok");
} catch {
res.status(503).send("datenbank");
}
});
- Schnell: unter einer Sekunde. Der Check läuft alle paar Sekunden.
- Ohne Nebenwirkung: nichts schreiben, nichts zählen, keine Mail schicken.
- Ehrlich: Wenn eine Abhängigkeit fehlt, die für die Arbeit nötig ist, darf er nicht „ok“ sagen.
- Sparsam: nicht jede fremde Schnittstelle mitprüfen – sonst nimmt der Ausfall eines Drittanbieters deine Anwendung mit, obwohl sie noch arbeiten könnte.
Wie es bei Branchway läuft
Für jede App stellst du Pfad, Abstand, Zeitlimit und die Zahl der erlaubten Fehlversuche ein. Antwortet eine Instanz mehrfach nicht, wird sie neu gestartet – und wenn sie sich wiederholt nicht fängt, bekommst du eine E-Mail statt einer Endlosschleife aus Neustarts.
Derselbe Check entscheidet auch beim Deployment, ob die neue Fassung Verkehr bekommt.
Häufige Fragen
Was, wenn meine App keinen Health-Pfad hat?
Dann wird die Startseite geprüft. Das funktioniert, ist aber ungenauer: Eine Startseite kann aus dem Zwischenspeicher kommen, obwohl dahinter nichts mehr geht.
Sollte der Healthcheck öffentlich erreichbar sein?
Er sollte nichts Vertrauliches verraten – keine Versionsnummern, keine Namen interner Dienste. „ok“ genügt völlig.