Skip to content

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:

  1. isDatabaseConnected() — ucuz ön kontrol, ağ trafiği üretmez.
  2. 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.