Felaket Kurtarma¶
Amaç¶
IQV Flex ERP servislerinin (MongoDB, backend, frontend) veri kaybı, container kaybı veya sunucu arızası durumunda geri alınması için izlenecek prosedürü tanımlar.
Korunması Gereken Bileşenler¶
Gerçek proje yapısına göre (docker-compose.yml, docker-compose.prod.yml):
| Bileşen | Neden kritik |
|---|---|
MongoDB (mongo_data, mongo_config volume'leri) |
ERP verisinin tek kalıcı deposu |
.env |
Secret'lar (ERP_AUTH_SECRET, GO_API_CLIENT_SECRET, MONGO_INITDB_ROOT_PASSWORD vb.) ve ortam yapılandırması |
docker-compose.yml / docker-compose.prod.yml |
Servis tanımları, ağ, healthcheck, kaynak sınırları |
Uygulama imajları (backend, frontend) |
iqvflex/backend/Dockerfile ve dashboard/Dockerfile'dan derlenir; VERSION dosyasıyla etiketlenir |
VERSION |
İmaj etiketlemede kullanılan canonical sürüm |
| Kaynak kod (repository) | git deposunun kendisi — image'lar buradan yeniden derlenir |
Bu depoda reverse proxy/config olarak yalnızca nginx (frontend imajı
içinde, dashboard/nginx.conf) bulunur; ayrı bir reverse proxy servisi
depoda tanımlı değildir.
Yedekleme¶
Aşağıdaki bileşenlerin düzenli olarak yedeklenmesi gerekir:
- MongoDB verisi:
mongo_datavemongo_configadlandırılmış volume'leri (bkz.docker-compose.yml→volumes:).docker compose downbu volume'leri silmez; yalnızcadown -vsiler ve update betiği bunu hiçbir zaman çalıştırmaz. .envdosyası: secret'lar ve ortam yapılandırması yalnızca burada bulunur; kayıp olursa yeniden üretilemez (rastgele üretilen secret'lar kurulum sırasında bir kez oluşturulur).docker-compose.yml/docker-compose.prod.yml: repository'nin parçası olduğu içingitgeçmişiyle zaten korunur.- VERSION: repository'nin parçası,
gitile korunur.
Volume içeriğini disk üzerinde yedeklemek için standart Docker/işletim sistemi seviyesinde yedekleme araçları kullanılabilir (proje kendi özel bir yedekleme aracı sağlamaz).
Geri Yükleme¶
- Yeni host hazırlanır (işletim sistemi, disk alanı, ağ erişimi).
- Docker / Docker Compose kurulu ve çalışır durumda olduğu doğrulanır.
- Repository (veya ilgili release)
git clone/git checkoutile alınır. .envdosyası yedekten restore edilir (yoksa.env.exampleşablonundan yeniden üretilir ve secret'lar yeniden ayarlanır).- MongoDB verisi (
mongo_data/mongo_configvolume'leri) yedekten geri yüklenir. - Container'lar başlatılır:
./install.sh/.\install.ps1(önerilen) ya da doğrudandocker compose up -d. - Health check yapılır:
docker compose ps(STATUS/HEALTH sütunları) vecurl http://localhost:8080/health. - Uygulama tarayıcıdan
http://localhost:8080ile doğrulanır; ERP giriş ve temel işlevler test edilir.
Bu adımlar dışında, proje kodunda tanımlı olmayan özel bir kurtarma komutu
veya otomatik yedekleme sistemi yoktur — yukarıdaki prosedür mevcut
install.sh / install.ps1 / docker compose altyapısına dayanır.
Disaster Senaryoları¶
| Senaryo | Etki | Kurtarma Yaklaşımı |
|---|---|---|
| Container kaybı | Servis durur | Image üzerinden yeniden oluştur (docker compose up -d) |
| Host kaybı | Tüm servisler etkilenir | Yeni host + config + volume restore (yukarıdaki prosedür) |
| MongoDB veri kaybı | ERP verisi etkilenir | Son geçerli backup'tan mongo_data/mongo_config restore |
| Hatalı release | Uygulama hatası | Önceki stabil image/release'e rollback (bkz. Güncelleme / Rollback) |
| Env/config kaybı | Servis başlamaz (zorunlu değişkenler eksik kalır) | Güvenli config backup'tan .env restore |
RTO / RPO değerleri proje kodunda tanımlı değildir; bu nedenle burada sabit bir rakam verilmez:
- RTO: Kurum operasyon politikasına göre belirlenmelidir.
- RPO: Backup periyoduna göre belirlenmelidir.