CI/CD Temelleri: Sürekli Entegrasyon ve Sürekli Dağıtım Nedir?

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Yazılım dünyasında "hız" ve "kalite" genellikle birbiriyle çatışan iki kavram gibi görünür. Çok hızlı kod yazarsanız hata yapma riskiniz artar; çok titiz ve yavaş hareket ederseniz rakiplerinizin gerisinde kalırsınız. İşte CI/CD (Continuous Integration / Continuous Deployment), bu paradoksu çözmek için modern yazılım geliştirmenin kalbine yerleşmiş olan mekanizmadır.

CI/CD, yazılım teslimatını otomatize eden bir boru hattı (pipeline) gibidir. Gelin, bu yapının temel taşlarını ve neden her geliştiricinin bilmesi gerektiğini inceleyelim.


1. CI: Sürekli Entegrasyon (Continuous Integration) Nedir?​

Continuous Integration (CI), bir projedeki tüm geliştiricilerin yazdıkları kodları gün içerisinde defalarca ana depo (main branch) ile birleştirmesi pratiğidir. Ancak CI, sadece kodu "kopyalayıp yapıştırmak" değildir; asıl sihir kod gönderildiği an başlar.

CI Süreci Nasıl İşler?​

  1. Kod Gönderimi: Geliştirici değişikliği yapar ve Git gibi bir versiyon kontrol sistemine gönderir.
  2. Otomatik Derleme (Build): Sistem kodu otomatik olarak çeker ve derler.
  3. Otomatik Testler: Yazılan kodun mevcut özellikleri bozup bozmadığını anlamak için birim testler (unit tests) ve entegrasyon testleri çalıştırılır.
  4. Geri Bildirim: Eğer testler başarısız olursa, geliştiriciye anında bildirim gider: "Hey, yazdığın kod sistemi bozdu, lütfen düzelt!"

2. CD: Sürekli Teslimat ve Sürekli Dağıtım Arasındaki Fark​

CD kısaltması iki farklı kavram için kullanılır: Continuous Delivery ve Continuous Deployment. Aralarındaki fark küçük ama kritiktir.

Sürekli Teslimat (Continuous Delivery)​

Kod, CI aşamasından başarıyla geçtikten sonra otomatik olarak bir "staging" (hazırlık) ortamına aktarılır. Kod canlıya gitmeye her an hazırdır; ancak canlıya (production) çıkış için bir insanın "Yayınla" butonuna basması gerekir. Bu, genellikle iş kararları veya son onay mekanizmaları için tercih edilir.

Sürekli Dağıtım (Continuous Deployment)​

Bu aşamada insan müdahalesi tamamen ortadan kalkar. Testlerden başarıyla geçen her kod değişikliği, otomatik olarak canlıdaki kullanıcılara ulaşır. Eğer testleriniz mükemmel değilse bu riskli bir yöntemdir, ancak Amazon ve Netflix gibi devler bu sayede günde binlerce kez güncelleme yapabilmektedir.


CI/CD Pipeline Yapılandırması: Bir Örnek​

Bir CI/CD sürecini hayal etmek için, Docker tabanlı bir uygulamanın otomatik olarak nasıl test edilip imaj haline getirildiğini gösteren bir yapılandırma scriptine göz atalım. Aşağıdaki örnek, XenForo eklentileri veya modern web uygulamaları geliştirenlerin sıklıkla kullandığı bir GitLab CI veya GitHub Actions mantığına yakındır:

# Örnek bir CI/CD Pipeline Konfigürasyonu (YAML)
stages:
- build
- test
- deploy

# Adım 1: Uygulamayı Derle
build_job:
stage: build
script:
- echo "Uygulama derleniyor ve bağımlılıklar yükleniyor..."
- npm install
- npm run build

# Adım 2: Testleri Çalıştır
test_job:
stage: test
script:
- echo "Birim testleri ve güvenlik taramaları yapılıyor..."
- npm test
- ./security_scan.sh

# Adım 3: Canlı Ortama Dağıt (Deployment)
deploy_job:
stage: deploy
script:
- echo "Kod üretim sunucusuna (Production) aktarılıyor..."
- rsync -avz ./dist/ user@server:/var/www/html/
- ssh user@server "systemctl restart nginx"
only:
- main # Sadece ana branch'e gelen kodlar canlıya gitsin

CI/CD’nin Sağladığı 5 Kritik Avantaj​

  • Hata Erken Tespiti: Bir hatayı yazıldıktan 5 dakika sonra bulmak, 5 hafta sonra bulmaktan çok daha kolaydır.
  • Daha Az "Merge" Kabusu: Kodlar küçük parçalar halinde sürekli birleştirildiği için, haftalarca süren kod çakışmaları yaşanmaz.
  • Güvenilir Yayınlar: Dağıtım süreci manuel (elle) değil, kodlanmış bir script üzerinden yapıldığı için insan hatası sıfıra iner.
  • Geliştirici Mutluluğu: Geliştiriciler sunucuya dosya yüklemekle değil, kod yazmakla ilgilenirler.
  • Pazara Çıkış Hızı (Time-to-Market): Yeni bir özellik fikri, dakikalar içinde son kullanıcıya ulaşabilir.

En Popüler CI/CD Araçları​

Bu süreci yönetmek için piyasada pek çok araç bulunmaktadır. İhtiyacınıza göre bunlardan birini seçebilirsiniz:

  1. Jenkins: Açık kaynaklı, çok güçlü ve binlerce eklentiye sahip "yaşlı kurt".
  2. GitHub Actions / GitLab CI: Kod deponuzla entegre gelen, modern ve kurulum gerektirmeyen çözümler.
  3. CircleCI: Hızıyla tanınan bulut tabanlı bir platform.
  4. ArgoCD: Özellikle Kubernetes (K8s) dünyasında popüler olan GitOps aracı.

Sonuç: Nereden Başlamalı?​

CI/CD dünyasına girmek için devasa bir altyapıya ihtiyacınız yok. Kendi küçük projelerinizde bile bir GitHub Action oluşturarak kodunuz her push edildiğinde otomatik testlerin çalışmasını sağlayabilirsiniz.

Unutmayın; "manuel olan her şey hataya açıktır". Otomasyona yatırım yapmak, gelecekteki uykusuz gecelerinizden tasarruf etmektir.
 
Geri
Üst