← Back to Blog
DEVOPS

CI/CD Nedir?

F. Çağrı BilgehanJanuary 31, 202610 min read
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.

Related Posts

IaC Nedir?

Infrastructure as Code nedir ve neden kullanılır?

What Is Infrastructure as Code? Terraform & Automation Guide

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