Dynamis

CI/CD nedir? Yazılım deployment süreci nasıl otomatikleştirilir?

CI/CD nedir, nasıl çalışır? Continuous Integration, Delivery ve Deployment farkını; pipeline, artifact, rollback ve deployment otomasyonunu pratik olarak öğrenin.

Bu konuyu bir mühendisle konuşun30 dakikalık görüşme, mevcut durumunuz ve hedefinizle.
Özet çıkarımlar
  1. 01CI/CD, kod değişikliklerini sık entegre etmek, otomatik doğrulamak ve güvenilir biçimde release/deploy edilebilir hale getirmek için kullanılan yazılım teslim yaklaşımıdır.
  2. 02Continuous Delivery production'a hazır artifact üretir ancak manuel approval içerebilir; Continuous Deployment gerekli kontrolleri geçen değişiklikleri otomatik olarak production'a gönderir.
  3. 03Sağlıklı pipeline yalnız deploy etmez; build, test, quality/security checks, artifact, deployment ve post-deploy verification adımlarını kapsar.
  4. 04CI/CD Kubernetes'e bağlı değildir; VM, bare metal, container host, serverless veya managed platformlara deployment yapabilir.
  5. 05Pipeline performansı build süresinin yanında change lead time, deployment frequency ve change fail rate gibi delivery metrikleriyle birlikte değerlendirilmelidir.
CI/CD pipeline, build, test, artifact ve deployment otomasyon akışını gösteren kapak görseli

Kısaca

CI/CD, yazılım değişikliklerini daha sık entegre etmek, otomatik test etmek ve kontrollü biçimde release/deploy edilebilir hale getirmek için kullanılan teslim yaklaşımıdır. CI, kod değişikliklerinin sürekli entegrasyonuna ve doğrulanmasına; CD ise yazılımın güvenilir biçimde teslim veya deploy edilmesine odaklanır. Dynamis Teknoloji, CI/CD'yi yalnız bir pipeline dosyası değil; build, test, artifact, güvenlik kontrolü, deployment ve production doğrulamasından oluşan uçtan uca teslim süreci olarak ele alır.

CI/CD nedir?

CI/CD iki temel yaklaşımı birleştirir:

  • Continuous Integration
  • Continuous Delivery veya Continuous Deployment

Bu akışın amacı, kod değişikliklerini büyük release'ler halinde biriktirmek yerine daha küçük parçalarla doğrulamak ve production'a taşımaktır.

Basit akış:

Kod değişikliği → build → test → artifact → deploy → doğrulama

İyi tasarlanmış bir CI/CD pipeline manuel adımları azaltır, hatayı daha erken yakalar ve deployment sürecini tekrarlanabilir hale getirir.

Continuous Integration nedir?

Continuous Integration, geliştiricilerin kod değişikliklerini sık aralıklarla ortak repository'ye entegre etmesi ve her değişikliğin otomatik kontrollerden geçmesi yaklaşımıdır.

Tipik CI aşamaları:

  1. Commit veya pull request tetiklenir
  2. Dependency'ler yüklenir
  3. Build alınır
  4. Unit test çalışır
  5. Lint/static analysis çalışır
  6. Security scan uygulanabilir
  7. Artifact üretilir

Amaç integration problemlerini release gününde değil, değişikliğe yakın zamanda bulmaktır.

Continuous Delivery nedir?

Continuous Delivery, testlerden geçen yazılımın her an production'a çıkabilecek durumda tutulmasıdır.

Burada production deployment otomatik olmak zorunda değildir.

Örneğin:

  • CI başarılı
  • staging deploy edildi
  • integration test geçti
  • artifact production için hazır
  • son production geçişi manuel approval ile yapılıyor

Bu model Continuous Delivery'dir.

Continuous Deployment nedir?

Continuous Deployment, gerekli otomatik kontrollerden geçen değişikliklerin manuel release adımı olmadan production'a gönderilmesidir.

Bu modelde pipeline:

  • test
  • security policy
  • deployment
  • smoke test

aşamalarını otomatik yürütür.

Her şirket continuous deployment kullanmak zorunda değildir.

Finans, sağlık veya yüksek riskli production ortamlarında kontrollü manuel approval noktaları gerekli olabilir.

CI/CD pipeline nedir?

Pipeline, yazılım değişikliğinin source code'dan production'a kadar geçtiği otomatik aşamalar zinciridir.

Örnek pipeline:

AşamaAmaç
SourceDeğişikliği tetiklemek
BuildUygulamayı paketlemek
TestFonksiyonel hatayı erken yakalamak
QualityLint/static analysis
SecurityDependency, secret veya image scan
ArtifactTekrarlanabilir release çıktısı üretmek
DeployHedef ortama göndermek
VerifySmoke/health test yapmak

Pipeline uygulamaya göre daha basit veya daha karmaşık olabilir.

Pipeline'ın amacı sadece deploy etmek değildir

Yaygın hata CI/CD'yi yalnız "server'a kod gönderme" olarak görmektir.

Asıl amaç:

  • değişiklik kalitesini doğrulamak
  • manuel hatayı azaltmak
  • tekrar üretilebilir release oluşturmak
  • deployment geçmişini izlemek
  • rollback'i kolaylaştırmak
  • feedback süresini kısaltmak

olmalıdır.

Bir rsync veya SSH script'i deployment automation olabilir; ancak tek başına sağlıklı CI/CD pipeline değildir.

Artifact neden önemlidir?

Build çıktısının tek ve değişmez artifact olarak üretilmesi, staging ile production arasında farklı binary/package kullanılmasını önler.

Örnek artifact:

  • Docker image
  • JAR
  • .NET package
  • Node.js build
  • Helm chart
  • VM image

İyi modelde aynı artifact farklı environment'lara promote edilir.

Bu yaklaşım "staging'de çalışan kod production'da neden farklı?" problemini azaltır.

Environment farklarını nasıl yönetmelisiniz?

Kod aynı kalmalı, environment configuration ayrışmalıdır.

Örneğin:

  • database URL
  • API key
  • feature flag
  • secret
  • external endpoint

environment bazında yönetilebilir.

Bunları source code içine hard-code etmek yerine secret/configuration katmanında tutun.

CI/CD ve secret management

Pipeline'lar production credential'larına erişebildiği için güvenlik açısından kritik sistemlerdir.

Kaçının:

  • secret'ı repository'ye yazmak
  • uzun ömürlü root credential kullanmak
  • herkesin production deploy edebilmesi
  • pipeline loglarında secret göstermek

Tercih edin:

  • short-lived credential
  • environment scoped secret
  • least privilege
  • protected branch
  • approval rule
  • audit log

Branch strategy pipeline'ı etkiler

Tek bir doğru branch modeli yoktur.

Örnekler:

  • trunk-based development
  • short-lived feature branch
  • GitFlow

DORA araştırmaları küçük batch'leri ve sık entegrasyonu destekler.

Uzun yaşayan branch'ler integration riskini artırabilir.

Bu nedenle branch modelini release akışınız ve ekip büyüklüğünüzle uyumlu seçin.

Mevcut durumunuzu bu tabloya biz yerleştirelim.

Pull request pipeline'ı nasıl olmalı?

Pull request aşamasında hızlı kontroller çalışmalıdır.

Örnek:

  • build
  • unit test
  • lint
  • static analysis
  • secret scan

Amaç geliştiriciye dakikalar içinde feedback vermektir.

30-40 dakika süren tüm testleri her küçük değişiklikte zorunlu çalıştırmak developer feedback loop'u yavaşlatabilir.

Testleri risk seviyesine göre katmanlayın.

Staging gerekli mi?

Her proje için zorunlu değildir.

Staging şu durumlarda değerlidir:

  • integration dependency fazlaysa
  • production benzeri environment gerekiyorsa
  • database migration test edilecekse
  • business acceptance gerekiyorsa
  • release riski yüksekse

Ancak staging production'dan çok farklıysa yanlış güven hissi yaratabilir.

Database migration CI/CD içinde nasıl yönetilir?

Database değişiklikleri deployment'ın en riskli parçalarından biridir.

Tercih edilen yaklaşım:

  • backward-compatible schema değişikliği
  • migration script version control
  • backup/rollback planı
  • migration öncesi validation
  • uygulama ve schema uyumluluğu

Örneğin önce yeni column eklemek, uygulamayı geçirmek ve eski column'u daha sonra kaldırmak daha güvenli olabilir.

Tek adımda destructive schema değişikliği rollback'i zorlaştırabilir.

Deployment stratejileri

Rolling deployment

Instance'lar kademeli güncellenir.

Avantaj:

  • düşük ek kapasite ihtiyacı

Risk:

  • eski ve yeni sürüm bir süre birlikte çalışır

Blue-green

Eski ve yeni environment paralel tutulur.

Avantaj:

  • hızlı rollback

Risk:

  • daha fazla altyapı maliyeti

Canary

Trafiğin küçük yüzdesi yeni sürüme yönlendirilir.

Avantaj:

  • production riskini sınırlı kullanıcı grubunda gözlemleme

Risk:

  • routing ve observability daha karmaşıktır

Deployment stratejisi uygulama riskine göre seçilmelidir.

CI/CD pipeline'da rollback nasıl tasarlanır?

Rollback pipeline sonradan eklenen bir script olmamalıdır.

Önceden belirleyin:

  • hangi metrik rollback tetikler
  • önceki artifact nerede
  • database backward-compatible mı
  • config geri alınabiliyor mu
  • trafik nasıl dönecek

Deployment sonrası error rate veya latency belirli sınırı aşarsa otomatik veya yarı otomatik rollback uygulanabilir.

Deployment sonrası doğrulama

Pipeline "deploy successful" dediğinde iş bitmez.

Kontrol edin:

  • health endpoint
  • error rate
  • latency
  • critical user flow
  • database connection
  • queue/worker health
  • external integration

Smoke test production doğrulamasının ilk katmanıdır.

CI/CD için Kubernetes gerekli mi?

Hayır.

CI/CD şu hedeflere deploy edebilir:

  • VM
  • bare metal
  • Docker host
  • Kubernetes
  • serverless
  • managed app platform

Kubernetes yalnız deployment hedeflerinden biridir.

DevOps nedir? rehberinde de belirttiğimiz gibi DevOps ve CI/CD, Kubernetes'ten bağımsız uygulanabilir.

GitHub Actions, GitLab CI veya Jenkins hangisi?

Araç seçimi pipeline tasarımından sonra gelmelidir.

GitHub Actions

Repository GitHub'daysa güçlü entegrasyon ve hızlı başlangıç sunar.

GitLab CI/CD

GitLab repository, registry ve deployment akışını tek platformda tutmak isteyen ekipler için uygundur.

Jenkins

Çok esnek ve uzun yıllardır kullanılan platformdur; ancak self-hosted Jenkins operasyon ve plugin yönetimi gerektirir.

Araç seçiminde:

  • repository platformu
  • self-hosted ihtiyacı
  • runner modeli
  • secret yönetimi
  • compliance
  • ekip deneyimi

değerlendirilmelidir.

Pipeline performansı nasıl ölçülür?

Pipeline seviyesinde:

  • build süresi
  • test süresi
  • failure rate
  • queue time
  • flaky test oranı

izlenebilir.

Delivery seviyesinde DORA metrikleri kullanabilirsiniz:

  • change lead time
  • deployment frequency
  • failed deployment recovery time
  • change fail rate
  • deployment rework rate

Amaç yalnız pipeline süresini kısaltmak değil, toplam teslim sürecini iyileştirmektir.

Pipeline çok yavaşsa ne yapılmalı?

Önce darboğazı ölçün.

Yaygın nedenler:

  • dependency her seferinde yeniden indiriliyor
  • cache yok
  • testler seri çalışıyor
  • container image gereksiz büyük
  • runner kapasitesi düşük
  • integration test kapsamı yanlış aşamada

İyileştirmeler:

  • dependency cache
  • parallel test
  • incremental build
  • küçük Docker image
  • autoscaling runner
  • test katmanlama

olabilir.

CI/CD güvenlik kontrolünü nereye koymalı?

Her kontrol aynı aşamada çalışmak zorunda değildir.

Örnek:

Commit/PR:

  • secret scan
  • lint
  • unit test
  • static analysis

Build:

  • dependency scan
  • image scan

Pre-production:

  • integration test
  • policy check

Production:

  • approval
  • runtime validation
  • post-deploy monitoring

Amaç güvenliği son release gate'e yığmak değil, erken feedback sağlamaktır.

Küçük ekip için minimum pipeline

5-20 kişilik ekip için ilk pipeline şöyle olabilir:

  1. Pull request açılır
  2. Build çalışır
  3. Unit test çalışır
  4. Main'e merge edilir
  5. Artifact/container image oluşturulur
  6. Staging otomatik deploy edilir
  7. Smoke test çalışır
  8. Production manuel approval ile deploy edilir
  9. Health check doğrulanır

Bu model karmaşık olmadan tekrarlanabilir deployment sağlar.

CI/CD projesine nereden başlanmalı?

Adım 1: Mevcut deployment sürecini yazın

Kim, hangi komutlarla, hangi erişimle deploy ediyor?

Adım 2: Tekrarlanan manuel adımları bulun

Her release'te yapılan işleri listeleyin.

Adım 3: Build'i tekrarlanabilir hale getirin

Geliştirici laptop'una bağlı build sürecini kaldırın.

Adım 4: Testleri pipeline'a taşıyın

Önce hızlı ve kritik testlerle başlayın.

Adım 5: Artifact standardı kurun

Her release için versiyonlanmış artifact üretin.

Adım 6: Staging/deployment otomasyonu kurun

Hedef ortama tekrar üretilebilir deployment sağlayın.

Adım 7: Production gate belirleyin

Risk seviyesine göre manuel veya otomatik karar verin.

Adım 8: Deployment sonrası gözlemleyin

Monitoring ve rollback mekanizmasını bağlayın.

Dynamis'te CI/CD yaklaşımı

Dynamis'in DevOps hizmeti kapsamında CI/CD çalışmasına yalnız YAML dosyası yazarak başlamıyoruz.

Önce:

  • repository
  • branch modeli
  • mevcut deployment
  • test kapsamı
  • environment'lar
  • artifact modeli
  • secret yönetimi
  • production access
  • rollback
  • monitoring

incelenir.

Sonra ihtiyaca göre:

  • GitHub Actions
  • GitLab CI/CD
  • Jenkins
  • container registry
  • Infrastructure as Code
  • Kubernetes deployment
  • VM deployment

gibi bileşenler seçilir.

Amaç aracı standardize etmek değil, release sürecini tekrarlanabilir ve ölçülebilir hale getirmektir.

Sık yapılan hatalar

CI/CD = deploy script demek: Test, artifact ve doğrulama eksik kalır.

Continuous Delivery ile Deployment'ı aynı sanmak: Production'a otomatik çıkış farklı bir karardır.

Secret'ları repository'ye koymak: Pipeline güvenlik riskine dönüşür.

Rollback düşünmeden otomasyon yapmak: Hızlı deployment, hızlı recovery olmadan eksik kalır.

Her testin her commit'te çalışması: Feedback loop gereksiz yavaşlayabilir.

Pipeline aracını strateji sanmak: GitHub Actions veya Jenkins seçmek tek başına CI/CD tasarımı değildir.

Sırada ne var

Kaynaklar

Kaynaklar

  1. 1.
    Continuous integration solutionsGoogle Cloud · 2026-09-21
  2. 2.
  3. 3.
    CI/CD pipelinesGitLab Docs · 2026-09-21
  4. 4.

Sık sorulan sorular

CI/CD nedir?

CI/CD, kod değişikliklerini sürekli entegre etmek, otomatik test etmek ve güvenilir biçimde release/deploy edilebilir hale getirmek için kullanılan yazılım teslim yaklaşımıdır. CI entegrasyon ve doğrulamaya, CD ise teslim veya deployment otomasyonuna odaklanır.

Continuous Delivery ile Continuous Deployment arasındaki fark nedir?

Continuous Delivery, yazılımı her an production'a çıkabilecek durumda tutar ancak production release'i manuel onay içerebilir. Continuous Deployment ise gerekli kontrolleri geçen değişiklikleri otomatik olarak production'a gönderir.

CI/CD pipeline hangi aşamalardan oluşur?

Basit bir pipeline genellikle source/trigger, build, automated test, security veya quality checks, artifact üretimi, deployment ve deployment sonrası doğrulama aşamalarından oluşur. Gerçek akış uygulama ve risk modeline göre değişir.

CI/CD için Kubernetes gerekli mi?

Hayır. CI/CD VM, bare metal, container platformu, serverless veya Kubernetes üzerinde uygulanabilir. Kubernetes deployment hedeflerinden biri olabilir; CI/CD yaklaşımının kendisi Kubernetes'e bağlı değildir.

CI/CD pipeline kurarken hangi metrikler izlenmeli?

Pipeline süresi, başarısız build/test oranı, deployment frequency, change lead time, failed deployment recovery time ve change fail rate gibi ölçüler kullanılabilir. Amaç yalnız pipeline'ı hızlandırmak değil, teslim sürecindeki bekleme ve hata noktalarını azaltmaktır.

Dynamis Teknoloji

Kararı sizin yerinize hesaplayan bir ekip.

Raff platformunu geliştiren ve işleten mühendisler. Ankara merkezli, KVKK uyumlu, 7/24 Türkçe destek.

  1. Açıklayıcı · DevOps ve KubernetesInfrastructure as Code nedir? Cloud altyapısı kodla nasıl yönetilir?Infrastructure as Code nedir? Terraform, OpenTofu, state, drift, modules, secrets ve CI/CD ile cloud altyapısını version control altında nasıl yöneteceğinizi öğrenin.9 dk
  2. Açıklayıcı · DevOps ve KubernetesObservability nedir? Monitoring, logging ve tracing farklarıObservability nedir? Monitoring, metrics, logging, distributed tracing ve OpenTelemetry farklarını; SLI/SLO, alerting ve production troubleshooting ile öğrenin.9 dk
  3. Açıklayıcı · DevOps ve KubernetesKubernetes nedir? Ne işe yarar ve ne zaman kullanılmalı?Kubernetes nedir, nasıl çalışır ve ne işe yarar? Pod, node, cluster, control plane, Service, scaling, self-healing ve Docker farkını production odaklı öğrenin.9 dk