# CI vs CD

Adres: https://softwaredictionary.org/tr/karsilastirma/ci-vs-cd
Son güncelleme: 2026-10-06

Kısaca: CI, ana branch'e gelen her değişikliği otomatik olarak derleyip test eder; CD her test edilmiş build'i yayına hazır tutar, sürekli dağıtım ise onu yayınlar.

## CI ile CD arasındaki fark nedir?

Sürekli entegrasyon (CI), küçük değişiklikleri en az günde bir kez paylaşılan ana branch'e birleştirme ve her birleştirmeyi otomatik bir derleme ve test çalıştırmasıyla denetleme pratiğidir. Sürekli teslimat (CD) ise CI'ın bittiği yerden devralır: testleri geçen her değişiklik, staging ortamları ve ek testlerle otomatik bir dağıtım hattında (deployment pipeline) ilerlemeye devam eder; böylece yazılım her an canlı ortama çıkarılabilir.

Asıl fark, her birinin yanıtladığı sorudadır. CI, birleşen kodun hâlâ çalışıp çalışmadığını sorar ve ana branch'te doğrulanmış kodla, ideal olarak bir push'tan sonraki yaklaşık on dakika içinde biter. CD ise o kodun güvenle yayına girip giremeyeceğini sorar ve tek bir rutin adımla yayınlanabilecek, test edilmiş bir çıktıyla, örneğin bir konteyner imajıyla biter.

CD harfleri sürekli dağıtım (continuous deployment) anlamına da gelir; o da bir adım daha ileri gidip elle verilen onayı kaldırır: pipeline'ı geçen her değişiklik otomatik olarak, çoğu zaman günde birçok kez canlıya çıkar. Sürekli teslimatta ne zaman yayınlanacağına bir kişi karar verir; sürekli dağıtımda kararı pipeline verir. Bunun için çok güvenilir bir test takımı, iyi bir izleme ve canary dağıtımları, otomatik geri almalar ve feature flag'ler gibi güvenlik ağları gerekir.

İkisi birbirinin alternatifi değil, tek bir hattın aşamalarıdır; bu yüzden birlikte CI/CD diye yazılırlar: CD, CI'ın üzerine kurulur ve CI olmadan teslim edilecek güvenilir bir şey yoktur. Sık yapılan bir yanlış, bir CI aracına sahip olmanın CI yapmak demek olduğunu düşünmektir; oysa haftalarca yaşayan feature branch'lerde build çalıştırmak, küçük değişiklikleri sık sık entegre etme amacını ıskalar. Bir diğeri, sürekli teslimatın durmadan yayın yapmak demek olduğu düşüncesidir: aslında her an yayın yapabilmek demektir; zamanlama ise bir iş kararı olarak kalabilir.

| Özellik | Sürekli Entegrasyon | Sürekli Teslimat |
| --- | --- | --- |
| Amaç | Birleşen her değişikliğin derlendiğini ve testleri geçtiğini kanıtlamak | Doğrulanmış her değişikliği canlıya çıkmaya hazır tutmak |
| Başlangıç noktası | Paylaşılan depoya gelen bir push ya da pull request | Ana branch'te CI'dan geçmiş bir build |
| Bitiş noktası | Ana branch'te doğrulanmış kod | Tek bir rutin adımla yayına girebilecek, test edilmiş bir çıktı |
| Tipik adımlar | Kurulum, derleme, lint, birim ve entegrasyon testleri | Staging'e dağıtım; kabul, performans ve güvenlik kontrolleri |
| Geri bildirim süresi | Dakikalar; yaklaşık on dakika yaygın bir hedeftir | Daha uzun; çıktı her ortamdan sırayla geçer |
| Yayın kararı | Yok: CI hiçbir şeyi dağıtmaz | Bir kişi onaylar; sürekli dağıtımda ise pipeline karar verir |
| Temel alışkanlıklar | Küçük, sık birleştirmeler ve kırmızı build'i önce düzeltmek | Bir kez derlemek, aynı çıktıyı ilerletmek, her ortamı otomatikleştirmek |
| Gerektirdikleri | Otomatik testler ve paylaşılan bir ana branch | Çalışan bir CI, otomatik dağıtımlar ve izleme |

## Sürekli Entegrasyon şu durumlarda doğru seçim

- Yeni başlıyorsunuz: CI, her teslimat hattının ihtiyaç duyduğu temeldir.
- Birleştirmeler sancılı geçiyor ve bozuk build'ler günler sonra fark ediliyor.
- Her pull request için hızlı geri bildirim istiyorsunuz.
- Yayınlar, uygulama mağazası güncellemeleri gibi sabit bir takvimi izliyor ama kodun her gün sağlıklı kalması gerekiyor.

## Sürekli Teslimat şu durumlarda doğru seçim

- CI zaten güvenilir, ama yayınlar hâlâ yavaş, elle yapılıyor ya da riskli.
- Küçük değişiklikleri, iş tarafı ne zaman isterse o zaman yayına almak istiyorsunuz.
- Her ortam otomatik olarak oluşturulup dağıtılabiliyor.
- Testler, izleme ve geri alma mekanizmaları sürekli dağıtıma geçecek kadar güçlü.

## Sık sorulan sorular

**CD, sürekli teslimat mı yoksa sürekli dağıtım mı demek?**

İkisi de kullanılır. Sürekli teslimat her değişikliği hazır tutar ve yayını bir kişiye bırakır; sürekli dağıtım ise testleri geçen her değişikliği otomatik olarak yayınlar. Canlıya çıkışlar bir onay gerektiriyorsa bu sürekli teslimattır.

**CD olmadan CI olabilir mi?**

Evet, birçok ekip de böyle başlar: her değişiklik derlenir ve test edilir, ama yayınlar hâlâ elle hazırlanır. Tersi işlemez, çünkü sürekli teslimat, doğrulanmış build'leri sağlaması için CI'a dayanır.

**CI ve CD için hangi araçlar kullanılır?**

Genellikle aynı araçlar: GitHub Actions, GitLab CI, Jenkins ve benzeri servisler hem CI kontrollerini hem de dağıtım hattını çalıştırır. Bazı ekipler bunlara Kubernetes için Argo CD gibi ayrı dağıtım araçları ekler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
