YÜKLENİYOR...

CI/CD Nedir? Web Projelerinde Sürekli Entegrasyon ve Dağıtım

CI/CD Nedir? Web Projelerinde Sürekli Entegrasyon ve Dağıtım
Modern yazılım geliştirme süreçlerinde kodun sadece yazılması değil, hızlı ve güvenli bir şekilde yayınlanması da en az kod kalitesi kadar önemlidir. Uygulamanın geliştirme ortamından canlı ortama geçişi manuel yapıldığında; hata riski artar, zaman kaybı

Modern yazılım geliştirme süreçlerinde kodun sadece yazılması değil, hızlı ve güvenli bir şekilde yayınlanması da en az kod kalitesi kadar önemlidir. Uygulamanın geliştirme ortamından canlı ortama geçişi manuel yapıldığında; hata riski artar, zaman kaybı yaşanır ve süreç kontrolsüzleşebilir. Bu sorunları ortadan kaldırmak için geliştirilen yöntemlerin başında CI/CD gelir.

CI/CD (Continuous Integration / Continuous Delivery), yazılım geliştirme sürecinde otomatize edilmiş, sürekli ve tekrarlanabilir bir teslimat ve dağıtım akışı sunar. Bu yazıda CI/CD kavramını, neden önemli olduğunu ve gerçek bir projede nasıl uygulandığını sade bir dille ele alıyoruz.


CI/CD Nedir?

  • CI (Continuous Integration - Sürekli Entegrasyon):
    Geliştiricilerin yaptıkları değişiklikleri sürekli olarak (günde birden fazla kez) ortak bir depo üzerine entegre etmesidir. Bu entegrasyon sonrasında otomatik testler ve derleme (build) süreçleri devreye girer.

  • CD (Continuous Delivery / Continuous Deployment):
    Otomatik olarak başarılı şekilde test edilen yazılımın staging (ön izleme) veya production (canlı) ortama manuel ya da otomatik olarak dağıtılmasıdır.

Özetle:
Kod → Otomatik test → Build → Deploy
Bu döngü insan müdahalesi olmadan da tamamlanabilir.


CI/CD Süreci Nasıl İşler?

  1. Kod Değişikliği
    Geliştirici yeni bir özellik ekler veya hatayı düzeltir ve kodu Git gibi bir kaynak kontrol sistemine gönderir (push).

  2. CI Aşaması (Test & Build)

    • Kod çekilir

    • Otomatik testler çalıştırılır (örneğin unit test)

    • Kod derlenir (build)

    • Raporlama yapılır

  3. CD Aşaması (Dağıtım)

    • Başarılı test sonrası uygulama staging ya da production ortamına otomatik olarak gönderilir.

    • Versiyonlama, rollback gibi işlemler de bu aşamada otomatize edilir.


Popüler CI/CD Araçları

Araç Açıklama
GitHub Actions GitHub üzerinden doğrudan CI/CD işlemleri yapılabilir.
GitLab CI GitLab projelerine entegre, YAML tabanlı akış.
Jenkins Esnek, eklenti destekli ve özelleştirilebilir.
Azure DevOps Microsoft tabanlı projeler için güçlü entegrasyon.
CircleCI / Travis CI Bulut tabanlı, hızlı kurulum sağlayan sistemler.

Örnek GitHub Actions CI/CD Akışı (Node.js için)

name: Node.js CI

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Node kurulumu
      uses: actions/setup-node@v3
      with:
        node-version: '18'
    - run: npm install
    - run: npm test
    - run: npm run build

Bu örnekle; main branch'e kod gönderildiğinde testler ve build işlemi otomatik başlatılır.


CI/CD'nin Sağladığı Faydalar

Hız: Kod canlıya çok daha hızlı çıkar.
Güven: Otomatik testler hata riskini azaltır.
Tutarlılık: Her deploy aynı şekilde çalışır.
Sürdürülebilirlik: Ekip içinde entegrasyon kolaylaşır.
Geri dönüş (rollback): Hatalı sürümler hızlıca geri alınabilir.


Gerçek Hayatta Kullanım Örneği

Bir ASP.NET Core uygulaması geliştirdiğinizi düşünün. Kod GitHub’a gönderildiğinde şu işlemler otomatik olur:

  • Kod derlenir

  • Testler çalıştırılır

  • Docker image oluşturulur

  • Azure App Service üzerine otomatik deploy edilir

Bu işlem haftada bir değil, günde onlarca kez güvenli şekilde yapılabilir. Hata ihtimali büyük oranda azalır.

CI/CD her büyüklükte yazılım projesi için uygundur. Özellikle çok geliştiricili ekiplerde sürekli entegrasyon, kod çatışmalarını ve manuel test yükünü azaltırken; sürekli dağıtım ile müşterilere hızlı geri dönüş sağlanabilir.

İster bir mobil uygulama, ister web tabanlı bir e-ticaret sitesi geliştiriyor olun, CI/CD süreçleri sayesinde kaliteli ve sürdürülebilir yazılımlar geliştirmek artık bir tercih değil, zorunluluktur.