DevOps

Gerçekten Fark Yaratan DevOps Uygulamaları

Buzzword'leri unutun. Lead time'i kısaltan ve production acısını azaltan DevOps pratikleri, araçları ve metrikleri.

Yazan IWWOMI
· 11 dk okuma
Gerçekten Fark Yaratan DevOps Uygulamaları

“DevOps best practices” yazılarının çoğu araç satıcısı dilek listesi gibi okunuyor. Bu öyle değil. Dört kişilik startup’tan doksan kişilik fintech ekibine kadar pipeline çalıştırdıktan sonra, hangi pratiklerin gerçekten katlandığını ve hangilerinin gösteriş olduğunu gördük. Aşağıdakiler, İstanbul’daki ofisimizde karşımıza otursaydınız önereceklerimiz.

Önemli olan dört şeyi ölçün: DORA

DORA metriklerini takip etmiyorsanız, körlemesine optimize ediyorsunuz demektir. Google’ın State of DevOps araştırmasından çıkan dört sinyal hem organizasyonel performansla hem de mühendis mutluluğuyla korelasyon gösteriyor:

  • Deployment frequency — production’a ne sıklıkta çıkıyorsunuz.
  • Lead time for changes — commit’ten production’a geçiş süresi.
  • Change failure rate — rollback veya hotfix gerektiren deploy yüzdesi.
  • Mean time to recovery (MTTR) — incident’ların ne kadar sürdüğü.

Elite ekipler günde birkaç kez deploy ediyor, lead time bir saatin altında ve recovery yine bir saatin altında. Haftada bir, %20 failure rate ile shipping yapıyorsanız hiçbir Kubernetes bunu çözmez. Önce ölçün, sonra alet seçin.

Haftada iki kez güvenle ship eden bir ekip, günde iki kez panikle ship eden ekipten daha iyidir. Stabilite olmadan frekans sadece kaostur.

CI/CD pipeline anatomisi

İyi bir pipeline hızlı, deterministik ve aşamalı feedback verir. Bir Node servisi için minimal ama production seviyesinde GitHub Actions örneği:

name: ci
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    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 -- --coverage
  build:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: docker/build-push-action@v5
        with:
          push: true
          tags: ghcr.io/iwwomi/api:${{ github.sha }}
          cache-from: type=gha
          cache-to: type=gha,mode=max

Araçlar üzerine dürüst yorum:

  • GitHub Actions — GitHub’daysanız varsayılan tercih. Free tier sonrası Linux runner $0.008/dk. Marketplace rakipsiz. Resmi dokümantasyon gerçekten iyi.
  • GitLab CI — GitLab Premium zaten ödüyorsanız iyi. Merge request ve environment entegrasyonu sıkı. YAML biraz daha temiz hissettiriyor.
  • CircleCI — En hızlı cold start, iOS build için en iyi macOS desteği. Ölçekte pahalı (Performance planında $15/kullanıcı/ay).
  • Jenkins — Sadece dedicated platform ekibiniz varsa. Yoksa unutun.

Genel kural: push’tan “staging’e deploy edildi” mesajına kadar 10 dakikanın altında kalmaya çalışın. Daha uzunsa mühendisler context-switch yapıyor, feedback loop ölüyor, pipeline’a güven kalmıyor.

Infrastructure as Code: birini seçin ve sahip çıkın

AWS console’da tıklamayı bırakın. Her resource code review’dan geçebilmeli, diff alınabilmeli, tekrar üretilebilmelidir. Üç gerçek seçenek:

  • Terraform (1.7+) — Varsayılan. Devasa provider ekosistemi, büyük yetenek havuzu, BSL lisansından endişeleniyorsanız OpenTofu ciddi bir open-source fork. Zor kısmı state yönetimi — S3 + DynamoDB kilitleme ya da Terraform Cloud (Standard planında $0.00014/resource-saat).
  • Pulumi — Aynı primitif’ler, ama TypeScript/Go/Python. HCL’e alerji varsa ya da gerçek loop ve abstraction lazımsa kazanıyor. Bireysel kullanım ücretsiz, takım için $0.18/resource-saat.
  • CloudFormation/CDK — Sadece sonsuza dek %100 AWS iseniz. CDK (TypeScript) gerçekten güzel; ham CloudFormation YAML değil.

Sıkıcı ama production’a hazır bir Terraform örneği:

resource "aws_ecs_service" "api" {
  name            = "api"
  cluster         = aws_ecs_cluster.main.id
  task_definition = aws_ecs_task_definition.api.arn
  desired_count   = var.environment == "prod" ? 3 : 1
  launch_type     = "FARGATE"

  deployment_circuit_breaker {
    enable   = true
    rollback = true
  }
}

Bir tool seçin, modül kütüphanesi yazın, PR review ile zorunlu kılın. En kötü IaC stack’i üç tane yarım kalmış olandır. Bu arada daha geniş provider kararı için cloud migration rehberimizi okuyun.

Container’lar ve orchestration: Kubernetes ne zaman fazla?

Kubernetes muhteşem. Aynı zamanda en az bir mühendis için tam zamanlı bir iş. Ekibiniz 10 kişinin altındaysa ve 20’den az servis çalıştırıyorsanız büyük ihtimalle gerek yok.

Küçük ekipler için daha iyi seçenekler:

  • AWS ECS Fargate / Google Cloud Run / Azure Container Apps — Container push edin, URL alın. Autoscaling, TLS ve health check dahil. Fargate yaklaşık $0.04/vCPU-saat.
  • Fly.io / Render / Railway — Heroku ergonomisi, modern fiyat. Startup’lar için harika.
  • Tek bir VM üzerinde Docker Compose — Gülmeyin. İç araç ya da MVP için, aylık $40’lık Hetzner makinada Compose aylarca yeter.

Kubernetes’e şu durumlarda geçin: 15+ servis, çoklu takım sahipliği, multi-region gereksinimi veya managed runtime’ların kaldıramadığı özel iş yükleri (GPU, batch). EKS, GKE Autopilot veya AKS — 2026’da kendi control plane’inizi kurmayın. Servis ağırlıklı gidiyorsanız microservices architecture yazımız operasyonel tradeoff’ları anlatıyor.

Observability: log, metrik, trace

Göremediğiniz şeyi düzeltemezsiniz. Modern stack’in üç ayağı var ve üçü de gerekli:

  • Loglar — Self-host için Loki + Grafana, değilse CloudWatch Logs ya da Datadog. Sadece structured JSON. Grep’lenebilir log unutun; field-searchable olsun.
  • Metrikler — Prometheus varsayılan. Dashboard için Grafana, alerting için Alertmanager. Managed için: Grafana Cloud (ücretsiz tier, Pro $19/ay) veya Datadog (pahalı ama mükemmel).
  • Trace’ler — OpenTelemetry standart. Depolama için Jaeger veya Tempo. Bütçeniz varsa en iyi sorgu deneyimi Honeycomb’da.

OpenTelemetry SDK ile bir kere instrument edin, istediğiniz backend’e route edin. Telemetri üzerinde vendor lock-in birikimli bir vergidir.

receivers:
  otlp:
    protocols: { grpc: { endpoint: 0.0.0.0:4317 } }
exporters:
  prometheusremotewrite:
    endpoint: https://prometheus.example/api/v1/write
  otlp/tempo:
    endpoint: tempo:4317

Database ağırlıklı servislerde route bazında query duration histogramı koyun — N+1’leri kullanıcılardan önce yakalamanın en ucuz yolu. Tam playbook için database optimization yazımıza bakın.

Secrets yönetimi: .env asla commit edilmez

Repo’nuzda gerçek credential içeren bir .env dosyası varsa, okumayı bırakın ve hemen rotate edin. Sonra birini seçin:

  • HashiCorp Vault — Tam özellikli, dynamic secrets, audit log. Self-host ciddi bir taahhüt.
  • AWS Secrets Manager / GCP Secret Manager / Azure Key Vault — AWS’de $0.40/secret/ay. Sıkıcı, entegre, iş görür.
  • SOPS + age — Secret’ları Git içinde şifrele. IaC ve Kubernetes manifest’leri için harika. Ücretsiz.
  • Doppler / Infisical — Geliştirici dostu managed servisler, yaklaşık $7/kullanıcı/aydan başlıyor.

Hangisini seçerseniz seçin: kısa ömürlü credential, otomatik rotasyon ve audit trail pazarlık konusu değil. Bunu secure web applications rehberimizdeki pratiklerle birleştirin.

Deploy stratejileri: rolling, blue/green, canary

Üç pattern, her birinin yeri var:

  • Rolling — Instance’ları N’er N’er değiştir. ECS, Kubernetes, Nomad’da varsayılan. Backward-compatible değişiklikleri olan stateless servisler için iyi. En ucuzu.
  • Blue/green — Yeni versiyonu eskinin yanına kur, load balancer’da trafiği çevir. Anlık rollback. Deploy sırasında altyapı maliyeti iki katına çıkar ama database migration’ı güvenle yapılır.
  • Canary — Trafiği dakikalar veya saatler içinde 1% → 5% → 25% → 100% yönlendir. Otomatik SLO izleme ile eşleştirin (Kubernetes’te Flagger, AWS CodeDeploy + CloudWatch alarm). Yüksek trafikli servisler için şart.

Güvenilirlik bar’ınızı karşılayan en basit deploy stratejisini seçin. Her şeyi canary etmek harika geliyor — kullanıcıların %3’ünün neden eski veri gördüğünü debug edene kadar.

Çoğu ekip için: dev/staging’de circuit breaker’lı rolling, production’da otomatik rollback’li canary. Blue/green özellikle riskli migration’lar için.

Delivery pipeline’ınızı modernleştirin

DevOps bir departman değildir. Bir alışkanlıklar setidir — ölç, otomatize et, gözlemle, hataların maliyetini düşür. DORA metrikleriyle başlayın, pipeline’ı 10 dakikanın altına indirin, altyapınızı kodlayın, observability’yi ihtiyaç duymadan önce kurun. Etkileri birikimli: bu alana yatırım yapan ekipler bir yıl içinde 2-3 kat daha hızlı ship ediyor, daha az incident yaşıyor.

Pipeline’ınıza, IaC’nize ya da production setup’ınıza ikinci bir göz isterseniz, iletişime geçin. İstanbul ve Avrupa’daki ekiplerin, kırıp dökmeden daha hızlı ship etmesine yardım ediyoruz.

Tüm yazılar
Paylaş
IWWOMI

Bir sonraki projeniz için konuşalım

Bu yazıdaki konularda ekibinizin yardıma ihtiyacı varsa, IWWOMI bir mesaj uzakta.

İletişime geç