Mimari Genel Bakış¶
flowchart LR
ERP[ERP Sistemleri] -->|POST /api/v1/inbound/work-orders| API[iqv-integration-api serve]
API --> Mongo[(Müşteri MongoDB)]
API --> IQV[IQV platform / domain verisi]
Worker[iqv-integration-api worker] -.->|planlanan outbound| External[Harici API’ler]
Worker -.-> Mongo
API --> Health[GET /health/live /ready /details]
Servis tek binary’dir. serve üretim HTTP sürecidir. worker bir iskelettir ve outbound iş çalıştırmaz.
Paket sınırları¶
| Paket | Sorumluluk |
|---|---|
cmd/iqv-integration-api |
Süreç giriş noktası |
internal/command |
CLI yönlendirme |
internal/app |
Çalışma zamanı bağlama ve yaşam döngüsü |
internal/config |
Tipli yapılandırma |
internal/logging |
stdout’a yapılandırılmış slog |
internal/database/mongodb |
MongoDB istemcisi ve sağlık kontrolü |
internal/httpserver |
HTTP sunucusu ve rotalar |
internal/middleware |
Request ID, log, limit, recover |
internal/health |
Liveness / readiness / details |
internal/response / httperror |
Standart zarflar ve kodlar |
internal/inbound/workorder |
Decode, doğrulama, actor, kalıcılık |
internal/idempotency |
Idempotency-Key deposu |
internal/outbound/* |
Olay ve performans okuma API’leri |
internal/worker |
Worker iskeleti |
internal/migration |
Migration çalıştırıcısı |
internal/windowsservice |
Native Windows Service host |
internal/security |
Ayrılmış paket adı; kimlik doğrulama internal/auth içindedir |
internal/telemetry |
Metrik/push için ayrılmış |
Handler’lar ortam değişkenlerini doğrudan okumamalı veya MongoDB istemcisi oluşturmamalıdır.
Dağıtım katmanı¶
Kurucu ve güncelleme scriptleri Go binary’sinin dışındadır:
- Windows Native:
scripts/windows/service - Windows Docker:
scripts/windows/docker - Linux Native:
scripts/linux/service(offline paket bunlarıscripts/altına kopyalar) - Linux Docker:
scripts/linux/docker
Servis/konteyner yaşam döngüsü, yedek, health kapıları ve deployment metadata bunlardadır. MongoDB kurulmaz veya geri alınmaz.
Health uç noktaları¶
| Yol | Anlam |
|---|---|
GET / |
Servis adı, sürüm, ortam |
GET /health/live |
Süreç canlılığı (MongoDB yok) |
GET /health/ready |
MongoDB ping |
GET /health/details |
HEALTH_DETAILS_ENABLED=true iken ayrıntı |
İlgili diyagramlar¶
- Veri akışı — inbound istek yolu
- Güncelleme ve geri alma — güncelleme işlemi
- Sürüm süreci — yayın hattı