Yalan Söyleyen Sağlık Kontrolleri
Pod'larımız sağlıklı olduğunu bildiriyor ama trafik sunamıyor. Nasıl olur?
Sağlık kontrolü:
livenessProbe:
httpGet:
path: /health
port: 8080
İşleyici (Handler):
@GetMapping("/health")
public String health() {
return "OK"; // Her zaman OK döner
}
Sorun:
- Uygulama başlar, "OK" döner
- Veritabanı bağlantısı başarısız
- Önbelleğe ulaşılamıyor
- Harici API zaman aşımına uğradı
- Ama sağlık kontrolü: "OK" ✅
Daha iyi yaklaşım:
@GetMapping("/health/ready")
public ResponseEntity<HealthStatus> readiness() {
boolean dbOk = checkDatabase();
boolean cacheOk = checkCache();
if (dbOk && cacheOk) {
return ResponseEntity.ok(status);
}
return ResponseEntity.status(503).body(status);
}
Ders: Sağlığı kontrol etmeyen bir sağlık kontrolü, hiç sağlık kontrolü olmamasından daha kötüdür.