CI/CD nedir? Tipik bir backend CI/CD pipeline'ının aşamaları nelerdir?

Cevap

  • Continuous Integration (CI): her commit/PR'da kodun otomatik olarak derlenmesi ve test edilmesi. Amaç hataları erken yakalamak, ana dalı her zaman çalışır tutmak.
  • Continuous Delivery: her değişiklik production'a çıkmaya hazır bir artefakt üretir; yayın tek tıkla (onaylı) yapılır.
  • Continuous Deployment: testleri geçen her değişiklik insan onayı olmadan otomatik production'a çıkar.

Tipik pipeline

  1. Checkout + bağımlılık kurulumu (cache ile hızlandırılır)
  2. Lint ve statik analiz (ESLint, ruff, tip kontrolü)
  3. Unit testler
  4. Integration testler (gerçek PostgreSQL/Redis container'ları ile)
  5. Güvenlik taramaları (bağımlılık açıkları, secret taraması)
  6. Docker image build ve commit SHA ile etiketleyip registry'ye push
  7. Staging'e deploy + veritabanı migration'ları + smoke test
  8. Production'a deploy (onaylı veya otomatik)
  9. Deploy sonrası izleme ve gerekirse geri alma (rollback)
# .github/workflows/ci.yml (GitHub Actions)
name: ci
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16
        env: { POSTGRES_PASSWORD: test }
        ports: ["5432:5432"]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: npm }
      - run: npm ci
      - run: npm run lint
      - run: npm test

Deployment stratejileri

StratejiNasıl çalışırNot
RollingInstance'lar tek tek yenilenirVarsayılan, ek kaynak az
Blue-greenYeni ortam hazırlanır, trafik bir anda geçirilirAnında rollback, iki kat kaynak
CanaryTrafiğin küçük yüzdesi yeni sürüme yönlendirilirRiski azaltır, iyi metrik gerektirir

Veritabanı migration'ları geriye uyumlu yazılmalıdır (expand/contract): önce yeni sütunu ekle, kodu güncelle, eski sütunu sonraki sürümde kaldır. Böylece rolling deploy sırasında eski ve yeni kod aynı şemayla çalışabilir.

  1. Ortam değişkenleri ve secret'lar (şifre, API anahtarı) güvenli şekilde nasıl yönetilir?OrtaDocker & DevOpsBackend
  2. İyi bir Dockerfile nasıl yazılır? Multi-stage build ne işe yarar?OrtaDocker & DevOpsBackend
  3. Docker Compose ne işe yarar? Basit bir örnekle açıklayın.KolayDocker & DevOpsBackend
  4. Container ile sanal makine (VM) arasındaki fark nedir?KolayDocker & DevOpsBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle