Sağlık Kontrolleri
Uygulama ucu
GET /health — kimlik doğrulaması gerektirmez. Gerekçe router
dosyasında yazılıdır: container sağlık kontrolü ve harici izleme araçları
token üretemez. Uç hiçbir gizli bilgi döndürmediği için bu güvenli bir
tercihtir.
Kontrol iki adımlıdır:
isDatabaseConnected()— ucuz ön kontrol, ağ trafiği üretmez.getDatabase().command({ ping: 1 })— bağlantının gerçekten çalıştığını doğrular. Yalnızca "bağlantı nesnesi var mı" bakılmaz.
Yanıt gövdeleri için API / Uç Noktalar.
Docker Compose
| Servis | Komut | interval / timeout / retries / start_period |
|---|---|---|
backend |
node -e "fetch('http://127.0.0.1:3001/health')..." |
15s / 5s / 5 / 20s |
frontend |
wget -qO- http://127.0.0.1/ |
15s / 5s / 5 / 10s |
Backend kontrolünde curl/wget yerine Node kullanılır çünkü imajda bu
araçlar yoktur, Node zaten vardır. r.ok yalnızca 2xx için doğrudur; 503
yanıtı sağlıksız sayılır.
frontend servisi backend'e depends_on: condition: service_healthy ile
bağlıdır — backend yalnızca başlamak değil, sağlıklı olmak zorundadır.
Bilinen boşluk
backend/Dockerfile, dashboard/Dockerfile ve ci/Dockerfile içinde
HEALTHCHECK yönergesi yoktur. Sağlık kontrolleri yalnızca
docker-compose.yml düzeyinde tanımlıdır; düz docker run ile
çalıştırıldığında devreye girmez.
CI servisleri (ci/docker-compose.ci.yml)
| Servis | Kontrol | Parametreler |
|---|---|---|
mongo-ci |
mongosh --eval "db.adminCommand('ping').ok" |
5s / 5s / 20 / 10s |
minio-ci |
Yok — imajda güvenilir araç bulunmadığı için | — |
minio-ci-init |
mc alias set başarılı olana kadar (en fazla ~60 sn) |
— |
mailpit |
/mailpit healthcheck |
5s / 5s / 20 / 5s |
CI aralıkları üretimden kısadır; amaç izleme değil, testlerin bir an önce başlayabilmesidir.
Kurulum / güncelleme kapıları
install.ps1 ve update.ps1, Wait-HttpOk yardımcısıyla (varsayılan 20
deneme, 5 sn zaman aşımı, 3 sn bekleme) şu adresleri bekler:
- Docker modu: frontend
/,/api/v1/health,/openapi.json - Native mod: backend
/health, frontend/,/openapi.json
Wait-HttpOk HTTP 401'i de başarılı sayar — JWT korumalı bir uçtan 401
almak, sunucunun ayakta olduğunu ve isteğin auth katmanına ulaştığını kanıtlar.
Güncellemede kapılardan biri başarısız olursa Invoke-Rollback çağrılır.
Kapsam dışı
Sağlık yanıtı yalnızca MongoDB durumunu bildirir. MinIO, SMTP ve
hatırlatıcı zamanlayıcısının durumu yanıtta yer almaz; MinIO erişilemez
durumdayken /health yine 200 döner. Ayrıca liveness/readiness ayrımı ve
/metrics ucu mevcut kaynak kodda tanımlı değildir.