← Blog'a Dön
DEVOPS

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

F. Çağrı Bilgehan31 Ocak 202610 dk okuma
ci/cddevopsgithub actionsotomasyon

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

"Kodu FTP ile sunucuya yükle" devri kapandı. Modern yazılım geliştirmede CI/CD, kodun üretim ortamına güvenli ve otomatik şekilde ulaştırılmasını sağlar.

Temel Kavramlar

Continuous Integration (CI) — Sürekli Entegrasyon

Geliştiricilerin kodlarını sık sık (günde birden fazla) ana dala birleştirmesi ve her birleştirmede otomatik testlerin çalıştırılması:

Developer Push → Build → Lint → Unit Test → Integration Test
                                              ↓
                                    ✅ Merge / ❌ Reject

Continuous Delivery (CD) — Sürekli Teslimat

CI'dan geçen kodun her an üretime hazır durumda tutulması. Deploy düğmesiyle tek tıkla üretime çıkabilme.

Continuous Deployment — Sürekli Dağıtım

Testten geçen her değişikliğin otomatik olarak üretime dağıtılması. İnsan müdahalesi yok.

CI → CD (teslimat) → Manuel onay → Deploy
CI → CD (dağıtım) → Otomatik Deploy  ← Fark bu!

Neden CI/CD?

| Metrik | CI/CD Öncesi | CI/CD Sonrası | |--------|-------------|--------------| | Deploy sıklığı | Ayda 1 | Günde N | | Bug tespit süresi | Günler | Dakikalar | | Deploy başarı oranı | %60-70 | %95+ | | Geri alma süresi | Saatler | Saniyeler | | Manuel test eforu | Yüksek | Minimal |

CI/CD Pipeline Tasarımı

İdeal bir pipeline aşamaları:

1. Source     → Kod değişikliği algıla
2. Build      → Projeyi derle / container image oluştur
3. Test       → Unit + Integration + E2E test
4. Security   → SAST/DAST tarama
5. Staging    → Test ortamına dağıt
6. Approval   → Manuel onay (opsiyonel)
7. Production → Üretime dağıt
8. Monitor    → Smoke test + izleme

GitHub Actions Örneği

name: CI/CD Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint
      - run: npm test

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: google-github-actions/deploy-cloudrun@v2
        with:
          service: bilgeone
          region: europe-west1

CI/CD Araçları Karşılaştırması

| Araç | Tür | Avantaj | Dezavantaj | |------|-----|---------|-----------| | GitHub Actions | Cloud | GitHub entegrasyonu, ücretsiz katman | GitHub'a bağımlı | | GitLab CI | Cloud/Self-hosted | Built-in, kapsamlı | Karmaşık konfigürasyon | | Jenkins | Self-hosted | Esnek, plugin ekosistemi | Bakım yükü | | CircleCI | Cloud | Hızlı, basit | Maliyet | | Azure DevOps | Cloud | Enterprise, kapsamlı | Microsoft ekosistemi |

CI/CD Best Practices

1. Her Şeyi Otomatikleştir

Lint, test, build, deploy — manuel adım olmamalı.

2. Hızlı Geri Bildirim

Pipeline 10 dakikayı geçmemeli. Uzarsa paralel çalıştırma ve caching kullanın.

3. Trunk-Based Development

Uzun yaşayan branch'lerden kaçının. Küçük, sık merge yapın.

4. Feature Flags

Yarım kalan özellikleri flag arkasına koyun. Deploy ≠ Release.

5. Rollback Stratejisi

Her zaman bir önceki versiyona dönebilecek mekanizma olmalı.

BilgeOne CI/CD Pipeline'ı

BilgeOne projemizde kullandığımız pipeline:

  1. PR açılır → Otomatik lint + test
  2. Test geçer → Preview environment deploy
  3. PR merge → Staging deploy + smoke test
  4. Manuel onay → Production deploy (Cloud Run)
  5. Deploy → Health check + Slack bildirimi

Sonuç

CI/CD, modern yazılım geliştirmenin olmazsa olmazıdır. Hata riskini azaltır, deploy hızını artırır ve ekip verimliliğini katlar. Başlangıçta yatırım gerektirir, ancak ilk haftadan itibaren geri dönüş sağlar.

CI/CD pipeline tasarımını ve DevOps pratiklerini LabLudus platformunda interaktif görevlerle öğrenin.

İlgili Yazılar

Infrastructure as Code (IaC) Nedir? Terraform ve Altyapı Otomasyonu

Infrastructure as Code nedir? Terraform, Pulumi, CloudFormation ile altyapı otomasyonu, versiyon kontrolü ve tekrarlanabilir deployment rehberi.

What Is Infrastructure as Code? Terraform & Automation Guide

IaC explained: Terraform, Pulumi, CloudFormation for infrastructure automation, version control, and repeatable deployments.