Ana içeriğe geç

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_data ve mongo_config adlandırılmış volume'leri (bkz. docker-compose.yml → volumes:). docker compose down bu volume'leri silmez; yalnızca down -v siler ve update betiği bunu hiçbir zaman çalıştırmaz.
  • .env dosyası: 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çin git geçmişiyle zaten korunur.
  • VERSION: repository'nin parçası, git ile 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

  1. Yeni host hazırlanır (işletim sistemi, disk alanı, ağ erişimi).
  2. Docker / Docker Compose kurulu ve çalışır durumda olduğu doğrulanır.
  3. Repository (veya ilgili release) git clone / git checkout ile alınır.
  4. .env dosyası yedekten restore edilir (yoksa .env.example şablonundan yeniden üretilir ve secret'lar yeniden ayarlanır).
  5. MongoDB verisi (mongo_data / mongo_config volume'leri) yedekten geri yüklenir.
  6. Container'lar başlatılır: ./install.sh / .\install.ps1 (önerilen) ya da doğrudan docker compose up -d.
  7. Health check yapılır: docker compose ps (STATUS/HEALTH sütunları) ve curl http://localhost:8080/health.
  8. Uygulama tarayıcıdan http://localhost:8080 ile 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.