Codeceres
Tüm yazılara dön

Yayın tarihi

ERP projelerinde Docker ve Jenkins ile kesintisiz dağıtım

DevOpsCI/CDDocker

ERP gibi işletmenin günlük operasyonunun bağlı olduğu bir sistemde, "sunucuya elle dosya kopyalayıp yeniden başlatma" şeklindeki dağıtım yöntemleri er ya da geç bir soruna yol açar. Yanlış dosya, unutulan bir konfigürasyon, ya da kimin hangi sürümü sunucuda bıraktığının bilinmemesi — bunların hepsi gerçek dünyada karşılaştığımız problemler.

Neden Docker?

Docker, uygulamanızı ve tüm bağımlılıklarını (çalışma zamanı, kütüphaneler, konfigürasyon) tek bir imaj içinde paketler. Bu sayede "benim makinemde çalışıyordu" problemi ortadan kalkar — geliştirme, test ve production ortamlarında aynı imaj çalışır.

ERP projelerinde bunu genelde Docker Compose ile birleştiriyoruz: backend, frontend, veritabanı ve dosya depolama servisleri (MinIO gibi) tek bir docker-compose.yml dosyasıyla tanımlanıyor ve tek komutla ayağa kalkıyor.

Neden Jenkins / CI-CD hattı?

Docker imajı oluşturmak yeterli değil — bu imajın nasıl ve ne zaman sunucuya dağıtılacağının da otomatikleştirilmesi gerekiyor. Jenkins tabanlı bir CI/CD hattında tipik akış şöyle işliyor:

  1. Kod deposuna (git) bir değişiklik push edilir
  2. Jenkins otomatik olarak build alır, testleri çalıştırır
  3. Başarılı build, bir imaj registry'sine (örneğin Harbor) push edilir
  4. Production sunucusunda, önceden tanımlanmış bir dağıtım script'i yeni imajı çeker ve kontrollü şekilde devreye alır

Bu akış sayesinde her dağıtım, aynı adımlardan geçer — insan hatası riski büyük ölçüde azalır.

Kesintiyi minimuma indirmek

Kritik bir ERP sisteminde dağıtım sırasında kesinti yaşanmasını istemezsiniz. Bunun için:

  • Veritabanı migrasyonlarını geriye dönük uyumlu (backward-compatible) tasarlamak
  • Yeni sürümü devreye almadan önce otomatik health-check ile doğrulamak
  • Sorun durumunda önceki imaja hızlıca geri dönebilecek bir rollback mekanizması bulundurmak

Sonuç

Docker ve Jenkins tabanlı bir CI/CD hattı, ilk kurulumda biraz zaman gerektirse de, uzun vadede dağıtımı sıradan, öngörülebilir ve düşük riskli bir işlem haline getirir. Codeceres olarak geliştirdiğimiz her ERP sistemine bu altyapıyı standart olarak kuruyoruz.