Continuous Deployment, tüm doğrulama aşamalarını geçtikten sonra her kod değişikliğinin otomatik olarak production'a dağıtılması uygulamasıdır. Sürümün manuel onay gerektirdiği Continuous Delivery'nin aksine, bu model dağıtım sürecinden insan faktörünü ortadan kaldırır. Puppet State of DevOps, 2025 raporuna göre, CD yapılandırmış ekipler geleneksel yaklaşımlara kıyasla 106 kat daha sık dağıtım gerçekleştirmektedir.
Ana Noktalar
Continuous Deployment, tüm otomatik kontrolleri geçen her kod değişikliğinin otomatik olarak production ortamına dağıtıldığı bir geliştirme metodolojisidir. Süreç manuel onay gerektirmez — kod derleme, test ve analizi geçerse hemen kullanıcılara ulaşır.
CD kavramı DevOps kültürüyle yakından ilişkilidir ve yüksek derecede otomasyon gerektirir. Ekip testlerine güvenmeli ve sorun durumunda hızlı geri alma mekanizmalarına sahip olmalıdır. Bu koşullar olmadan otomatik dağıtım riskli hale gelir.
Google Cloud DORA, 2025'e göre, elit performans gösterenler (elite performers) günde birkaç kez kod dağıtırken, düşük performanslı ekipler ayda bir kez dağıtım yapar. Bu fark, tam olarak Continuous Deployment ve ilgili CI/CD uygulamaları sayesinde elde edilir.
Geleneksel yaklaşımda sürümler birkaç haftada veya ayda bir gerçekleşir. Geliştiriciler değişiklikleri biriktirir, bu da karmaşık birleştirmelere ve çakışmalara yol açar. CD bu modeli tersine çevirir: değişiklikler tamamlandıktan hemen sonra teker teker çıkar. Bu, her sürümün karmaşıklığını azaltır ve sorun bulmayı kolaylaştırır.
CD uygulaması için, kullanıcılardan tamamlanmamış işlevselliği gizlemeye izin veren özellik bayrakları (feature toggles) gereklidir. Bunlar olmadan geliştiriciler bitmemiş kodu güvenli bir şekilde birleştiremez. Kapsamlı izleme ve uyarı sistemi de gereklidir — bir dağıtım ortamı bozarsa, ekip dakikalar içinde haberdar olmalıdır.
CD'de kalite güvencesi ayrı bir aşama değil, sürekli bir süreçtir. Her commit yüzlerce veya binlerce otomatik testten geçer: birim, entegrasyon, UI ve ekran görüntüsü testleri. Tek bir test başarısız olursa — düzeltilene kadar dağıtım engellenir.
CI, CD ve Continuous Delivery terimleri sıklıkla karıştırılır, ancak kod teslim otomasyonunun farklı aşamalarını tanımlarlar. Doğru pipeline'ı oluşturmak için farklılıkları anlamak kritik öneme sahiptir.
| Uygulama | Ne yapar | Sonuç |
|---|---|---|
| CI (Sürekli Entegrasyon) | Her commit'te otomatik derleme ve test | Kod her zaman çalışır durumda |
| Continuous Delivery | CI + otomatik sürüm hazırlığı (manuel dağıtım tetikleyicisi) | Sürüm her an dağıtıma hazır |
| Continuous Deployment | Continuous Delivery + production'a otomatik dağıtım | Değişiklikler gecikmeden kullanıcılara ulaşır |
Sürekli Entegrasyon (CI) her iki modelin de temelidir. CI olmadan ne Continuous Delivery ne de CD mümkündür. CI, kodun bozuk olmadığını ve sonraki aşamalar için hazır olduğunu garanti eder.
Continuous Delivery, ekibin her an bir düğmeye basarak sürüm çıkarabilmesidir. CD'den farkı, Continuous Delivery'nin nihai kararı bir kişiye (Sürüm Yöneticisi veya DevOps mühendisi) bırakmasıdır. CD bu geçidi tamamen ortadan kaldırır.
Düzenleyici gereksinimleri (fintek, sağlık) olan projeler veya her sürümün zorunlu manuel incelemeden (paydaş onayı) geçtiği durumlar için, tam otomasyon olmadan Continuous Delivery daha güvenli bir seçimdir. CD, SaaS ürünleri ve hızlı güncelleme döngüsüne sahip mobil uygulamalar için en iyi şekilde çalışır.
Tam bir CD pipeline'ı birkaç ardışık aşama içerir. Her aşama kusurları filtreler — bir aşama başarıyla geçilirse kod bir sonrakine geçer. Bir mobil uygulama için tipik bir zinciri inceleyelim.
Her şey depoya push ile başlar. Bir CI sunucusu (örneğin, GitHub Actions veya Jenkins) bir webhook bildirimi alır, kodun en son sürümünü yükler ve derlemeyi başlatır. Android için bu `./gradlew assembleRelease`, iOS için — `xcodebuild -workspace App.xcworkspace -scheme App -configuration Release` olabilir.
name: CI Pipeline
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Android APK
run: ./gradlew assembleRelease
- name: Run Unit Tests
run: ./gradlew test DebugUnitTestCoverage
Başarılı derlemeden sonra testler çalıştırılır: birim, entegrasyon, UI ve statik kod analizi. Kalite kontrol sistemi kod kapsamını, güvenlik açıklarının varlığını ve kod stili uyumunu kontrol eder. Eşikler karşılanmazsa — pipeline durur.
Tüm testler geçilirse, yapıt otomatik olarak staging ortamına dağıtılır. Orada uçtan uca testler ve performans testleri gerçekleştirilir. Bu aşamada harici hizmetlerle entegrasyon kontrolleri bağlanabilir.
Son aşama production'a çıkıştır. Riskleri azaltmak için canary sürümleri (canary releases) kullanılır, yeni sürüm önce kullanıcıların küçük bir yüzdesine sunulur. Metrikler stabilse — trafik kademeli olarak %100'e çıkarılır.
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './gradlew assembleRelease'
}
}
stage('Test') {
steps {
sh './gradlew test'
}
}
stage('Deploy') {
steps {
sh './deploy.sh --canary 5%'
}
}
}
post {
failure {
notify 'devops-team'
}
}
}
Piyasada CD'yi destekleyen birçok platform bulunmaktadır. Seçim, teknoloji yığınına, ekip büyüklüğüne ve altyapı bütçesine bağlıdır. Ana kategorilere ve temsilcilerine bakalım.
GitHub Actions, GitLab CI/CD, CircleCI ve Bitbucket Pipelines, yerleşik pipeline desteği sunar. Bulut kayıt defterleriyle (Docker Hub, GitHub Container Registry) entegre olur ve AWS, Google Cloud, Azure ve Firebase App Distribution'a dağıtımı destekler.
Spinnaker, ArgoCD ve Flux, yalnızca CD'ye odaklanmış araçlardır. Blue-green, canary, rolling update gibi gelişmiş dağıtım stratejileri sunar. ArgoCD, altyapı durumunun bir Git deposunda tanımlandığı GitOps yaklaşımı sayesinde Kubernetes ekosisteminde özellikle popülerdir.
Fastlane, App Store ve Google Play'e derleme ve yayınlamayı otomatikleştirmek için fiili standarttır. CI sunucularıyla entegre olur ve kod imzalama, ekran görüntüleri, TestFlight ve Internal App Sharing aracılığıyla beta dağıtımını yönetir. Bitrise ve Codemagic, mobil uygulamalar için özelleşmiş CI/CD araçlarıdır.
# Fastfile — Fastlane yapılandırması
default_platform(:android)
platform :android do
desc "Deploy a new version to Google Play"
lane :deploy do
gradle(task: 'assembleRelease')
upload_to_play_store(
track: 'production',
release_status: 'completed'
)
end
end
Continuous Deployment'a geçiş, yalnızca teknik hazırlık değil, aynı zamanda ekip kültüründe değişiklikler gerektirir. Doğru uygulamalar olmadan, otomatik dağıtım sık sık olaylara ve sürece olan güvenin azalmasına yol açabilir.
Özellik bayrakları (feature flags), tamamlanmamış kodun production'a çıkarılmasını ancak kullanıcılardan gizlenmesini sağlar. Bu CD'nin temelidir — geliştiriciler bir özelliğin tamamlanmasını beklemeden istedikleri zaman değişiklikleri birleştirebilir. LaunchDarkly, Flagsmith ve ConfigCat, özellik bayraklarını yönetmek için popüler platformlardır.
Metrikler olmadan dağıtım başarısını değerlendirmek imkansızdır. Temel metrikler: gecikme süresi (latency), hata oranı (error rate), iş hacmi (throughput). Her sürümü gerçek zamanlı olarak izlemek için Datadog, New Relic veya Grafana gibi araçları kullanın.
CD'nin kritik bir uygulaması otomatik geri alma mekanizmasıdır. Dağıtımdan sonra metrikler kötüleşirse (hata oranı bir eşiği aşarsa), sistem otomatik olarak önceki sürüme dönmelidir. Bu, ortalama kurtarma süresini (MTTR) saatlerden dakikalara düşürür.
CD pipeline'ı değerli bir varlık ve potansiyel bir saldırı hedefidir. Gizli bilgi yönetimi (Vault, AWS Secrets Manager) kullanın, yapıtları ve konteynerleri imzalayın, bağımlılıkları güvenlik açıklarına karşı tarayın (Dependabot, Snyk). Erişim anahtarlarını asla depoda saklamayın.
Sıkça Sorulan Sorular
Continuous Delivery bir sürüm hazırlar ancak production'a dağıtım için manuel onay gerektirir. Continuous Deployment bu adımı da otomatikleştirir — tüm kontrolleri geçtikten sonra kod insan müdahalesi olmadan kullanıcılara ulaşır.
Teknik olarak evet, ancak süreci önemli ölçüde karmaşıklaştırır. Özellik bayrakları olmadan geliştiriciler tamamlanmamış kodu birleştiremez, bu da çalışmayı yavaşlatır ve birleştirme çakışmaları riskini artırır.
Sıfırdan başlayan küçük bir ekip için — 2 ila 6 ay. Süre, mevcut otomasyon seviyesine, proje karmaşıklığına ve ekibin süreç değişikliklerine hazır olmasına bağlıdır.
Temel DORA metrikleri: dağıtım sıklığı (deploy frequency), değişikliklerin teslim süresi (lead time), ortalama kurtarma süresi (MTTR) ve değişiklik başarısızlık oranı (change failure rate).
Hayır, katı düzenleyici gereksinimleri olan projeler (örneğin, tıbbi veya finansal sistemler) için genellikle her sürümün manuel olarak onaylanması gerekir. Bu gibi durumlarda Continuous Delivery tercih edilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun