Continuous Delivery (CD), yazılımın her zaman üretime sürülmeye hazır durumda olduğu bir geliştirme pratiğidir. Her değişiklik, otomatik test ve doğrulamanın tüm aşamalarından geçer ve ardından tek bir tıklamayla veya otomatik olarak dağıtılabilir. Google Cloud DORA Report, 2025'e göre, CD uygulayan ekipler, düşük otomasyona sahip ekiplere göre 208 kat daha sık ve 106 kat daha hızlı sürüm yayınlar.
Anahtar Noktalar
Continuous Delivery (CD), Continuous Integration'ın bir uzantısıdır ve sürüm hazırlığının tüm aşamalarına otomasyon ekler: sürüm yapısı oluşturma, sertifikalarla imzalama, karartma, uygulama mağazası meta verilerini doğrulama ve staging'e dağıtım. Terim, Jez Humble ve David Farley tarafından “Continuous Delivery” (2010) kitabında tanıtılmış ve ekiplerin sürümleri öngörülebilir ve düşük riskli hale getirmesini sağlayan pratiği resmileştirmiştir.
CD benimsenmeden önce, sürümler bir olaydı: ekip bir odada toplanır, 20 maddelik bir kontrol listesi uygular, komut dosyalarını manuel olarak çalıştırır ve hiçbir şeyin bozulmamasını umardı. Continuous Delivery, sürümü bir olaydan bir sürece dönüştürür: küçük bir kod değişikliği haftalar değil, dakikalar içinde kullanıcılara gönderilebilir. Amazon, Netflix ve Etsy, 2010'larda CD'yi ilk benimseyenler oldu — bugün ürün ekipleri için standarttır.
Hızlı özellik teslimi rekabet avantajıdır. Bir rakip günler içinde yeni işlevsellik yayınlarken siz aylar alıyorsanız, pazar rakibi seçer. DORA metrikleri gösteriyor: elit ekipler (CD ile) 1 saatten kısa dağıtım süresine sahipken, düşük ekipler (CD'siz) — 1 haftadan 1 aya kadar. CD ayrıca riski kökten azaltır: küçük değişiklikler, büyük bir üç aylık sürümden daha zor bozulur.
CI, CD ve Continuous Deployment terimleri sıklıkla karıştırılır, ancak aralarında net bir sınır vardır. Farklılıkları anlamak, hattı doğru şekilde tasarlamaya ve ekip olgunluğu ve iş gereksinimleriyle eşleşen otomasyon seviyesini seçmeye yardımcı olur.
CI, CD'nin üzerine inşa edildiği temeldir. CI, her commit'in derleme ve testlerden geçmesini sağlar. CI olmadan CD imkansızdır: kod doğrulanmazsa yayınlanamaz. CI doğruluğu doğrular, CD iş kullanımına hazır olmayı doğrular.
CD, CI'ya sürüm yapısı oluşturma, meta verileri doğrulama, imzalama ve staging'e veya beta test için uygulama mağazasına dağıtım aşamalarını ekler. Temel fark — üretime sürme kararını bir kişi (yönetici, ürün sahibi) verir. CD, sürümü “tek tıklamayla” — basit ve güvenli hale getirir.
Continuous Deployment tam otomasyondur: CD hattının tüm aşamalarını geçen her değişiklik, manuel onay olmadan otomatik olarak üretime gönderilir. Continuous Deployment, SaaS ürünleri ve web hizmetleri için uygulanabilir, ancak uygulama mağazası politikaları (App Store Review, Google Play Review manuel gönderim gerektirir) nedeniyle mobil geliştirmede nadiren kullanılır.
| Pratik | Otomasyon | Üretime Sürüm | Genellikle |
|---|---|---|---|
| CI | Derleme + Testler | Hayır | Herhangi bir proje |
| CD | Derleme + Testler + Sürüm Yapısı + Teslim | Talep üzerine | Mobil uygulamalar |
| Continuous Deployment | Tam: Derleme → Testler → Teslim → Sürüm | Otomatik | Web hizmetleri, SaaS |
Mobil uygulamalar için CD, onu web ve backend hatlarından ayıran özelliklere sahiptir. Mobil sürümler, uygulama mağazalarından (App Store Review, Google Play Review) geçer, bu da zaman ve süreç engeli ekler. CD, inceleme için göndermeden önce otomatikleştirilebilecek her şeyi otomatikleştirerek ilk denemede doğrulamayı geçme şansını maksimize eder.
Android CD hattı şunları içerir: AAB (Android App Bundle) oluşturma, sürüm anahtarıyla imzalama, R8/ProGuard ile karartma, APK boyutu ve multidex sınıflarını kontrol etme, sürüm notları oluşturma. Gradle product flavors (free/paid, dev/staging/prod) kullanımı, tek bir hattan birden fazla yapılandırmayı yönetmeye olanak tanır.
iOS CD, Fastlane match ile sertifika imzalaması, simge uyumluluğunun kontrolü (App Store gereksinimi — 1024×1024 px), meta verilerin (isim, açıklama, anahtar kelimeler) doğrulanması, özel API'lerin bulunmadığının kontrolünü gerektirir. Teknik doğrulama, altool --validate-app aracılığıyla App Store Connect'e yüklemeden gerçekleştirilir ve hızlı geri bildirim sağlar.
# Fastfile — iOS ve Android için tam CD hattı
platform :ios do
desc "iOS CD — sürüm hazırlığı ve TestFlight'a yükleme"
lane :deliver_to_testflight do
capture_screenshots
match(type: "appstore")
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
pilot(skip_waiting_for_build: true)
end
end
platform :android do
desc "Android CD — AAB derlemesi ve Google Play Console'a yükleme"
lane :deliver_to_internal do
gradle(
task: "bundleRelease",
build_type: "Release",
print_command: true
)
upload_to_play_store(
track: "internal",
skip_upload_metadata: true
)
end
end
Fastlane deliver_to_testflight ekran görüntülerini toplar, match aracılığıyla sertifikaları alır, IPA'yı oluşturur ve TestFlight'a yükler. Android için deliver_to_internal hattı, Gradle aracılığıyla Release AAB'yi oluşturur ve Google Play Console'un iç kanalına yükler. Her iki hat da testleri geçtikten sonra CI'dan çalıştırılır.
Bir CD hattı, her biri sürümün kullanıcılar için hazır olduğuna dair güven ekleyen sıralı aşamalardan oluşur. Aşamalar teknik (derleme, imzalama) ve ürün (meta veriler, ekran görüntüleri, açıklama doğrulama) olarak ikiye ayrılır. Herhangi bir aşamayı atlamak, sürümün uygulama mağazası tarafından reddedilme riskini artırır.
CD'nin kritik bir bileşeni otomatik sürüm yönetimidir. Sürüm artırma (Android için versionCode ve versionName, iOS için CFBundleVersion ve CFBundleShortVersionString), Git etiketlerine veya mağazadaki önceki sürüme göre gerçekleştirilir. Fastlane increment_version_number ve Gradle komutları (versionCode auto-increment) bu adımı otomatikleştirir.
Google Play Console ve App Store Connect şunları gerektirir: uygulama açıklaması, anahtar kelimeler, kategori, derecelendirme, gizlilik politikası bağlantıları. CD şunları içerir: meta verilerin varlığını ve doğruluğunu kontrol etme. Fastlane deliver ve supply, derlemeyle birlikte açıklamaların, ekran görüntülerinin ve simgelerin yüklenmesini otomatikleştirir.
İnceleme için göndermeden önce, hat geçit kontrolleri gerçekleştirir: derleme boyutu kontrolü (APK > 200 MB Google Play tarafından reddedilir), tüm yerelleştirmelerin varlığı, sürüm yapısında hata ayıklama sembollerinin bulunmaması, kilitlenme günlüklerini çözmek için ProGuard eşleme dosyası kontrolü. Herhangi bir kontrol başarısız olursa — hat sürümü engeller.
CD'ye olan güven düzeyi, otomatik testlerin kalitesiyle doğru orantılıdır. Testler gerilemeleri yakalamazsa — sürüm üretimi bozabilir ve ekip CD'ye olan güvenini kaybeder. Mobil CD, platformun özelliklerine uyarlanmış üç seviyeli bir test piramidi gerektirir.
Birim testleri, iş mantığını izole olarak doğrular. Kritik modüller (kimlik doğrulama, ödemeler, ağ) için kod kapsamı en az %70 olmalıdır. CI her push'ta birim testlerini çalıştırır ve başarısız olurlarsa — CD hattı düzeltilene kadar engellenir.
Bileşen etkileşimini doğrular: gerçek API (veya mock sunucu) ile ağ katmanı, veritabanı, dosya sistemi. Android için Room DAO testleri, iOS için Core Data testleri entegrasyon testlerine örnektir. Birim testlerinden daha yavaştır (1–5 dakika) ve CD aşamasında, her commit'te CI'da değil, yürütülür.
Ekran görüntüsü testleri (snapshot testing), uygulama ekranlarını referans görüntülerle karşılaştırır. Bir kod değişikliği kullanıcı arayüzünü değiştirdiyse — test başarısız olur ve geliştirici değişikliğin beklenip beklenmediğini kontrol eder. Android, Roborazzi ve Paparazzi'yi desteklerken, iOS — Point-Free'den SnapshotTesting'i destekler. Ekran görüntüsü testleri, CD hattının bir parçası olarak sürümden önce yürütülür.
Continuous Delivery'i uygulamak yalnızca araçlar değil, aynı zamanda ekip kültüründe bir değişiklik gerektirir. Aşağıdaki uygulamalar, Google, Spotify ve Uber'deki mobil ekiplerin yılların deneyimine dayanmaktadır ve her boyuttaki proje için uyarlanmıştır.
Yeni bir özelliğin kodu üretime gönderilir ancak bir bayrak arkasında gizlenir. Feature flags, kodun özellik kullanıcılar için hazır olmadan önce dağıtılmasına ve sorun durumunda anında devre dışı bırakılmasına olanak tanır. Kütüphaneler: LaunchDarkly, Firebase Remote Config, Unleash. Feature flags, mobil projelerde CD için zorunlu bir gereksinimdir.
Üretime göndermeden önce, derleme staging'e dağıtılır — üretimle aynı ancak test verileriyle çalışan bir ortam. QA mühendisleri, TestFlight veya Internal Testing kanalı aracılığıyla yüklenen bir staging derlemesinde özelliği doğrular. Staging geçerse — derleme, mağaza incelemesine gönderilmek üzere onay alır.
CD, commit mesajlarına dayalı olarak otomatik olarak sürüm notları oluşturur. Conventional Commits (feat:, fix:, chore:) ve semantik sürümleme formatındaki Git etiketleri, değişiklik geçmişinin ayrıştırılmasına olanak tanır. Fastlane changelog_from_git_commits, son iki etiket arasındaki değişiklikleri toplar ve uygulama mağazası için biçimlendirir.
CD yayınla bitmez — sürümden sonra izleme başlar: çökme oranı, Android için ANR oranı, başlatma süresi, ödeme başarısızlık oranı. Metrikler normal sınırların ötesine geçerse — CD hattı otomatik olarak sürümü geri almalı veya ekibi bilgilendirmelidir. Araçlar: Firebase Crashlytics, Sentry, New Relic.
// CD için Firebase Remote Config ile Feature Flag Örneği
class FeatureManager(
private val remoteConfig: FirebaseRemoteConfig
) {
fun isNewCheckoutEnabled(): Boolean {
return remoteConfig.getBoolean("new_checkout_enabled")
}
fun getRecommendedVersion(): String {
return remoteConfig.getString("minimum_app_version")
}
}
// Kod içinde kullanım
if (featureManager.isNewCheckoutEnabled()) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
Sıkça Sorulan Sorular
Continuous Delivery (CD) sürüm hazırlığını otomatikleştirir ancak dağıtım kararını bir kişiye bırakır. Continuous Deployment, CD + insan müdahalesi olmadan üretime otomatik sürümdür. Mobil geliştirmede, zorunlu uygulama mağazası incelemesi nedeniyle Continuous Deployment imkansızdır.
Tüm aşamalar için aynı derlemeyi kullanın: CI hata ayıklama derlemesini test eder, CD aynı kaynaklardan sürüm derlemesini oluşturur. Fastlane build_app ve Gradle assembleRelease, derleme yapılandırmasını izole eder. Ayrıca, mağazaya göndermeden önce CD hattında sürüm derlemesinde smoke testleri çalıştırın.
Evet, CD herhangi bir projede uygulanabilir. Bir aşamanın otomasyonuyla başlayın — örneğin, sürüm derlemesini oluşturmak. Ardından imzalamayı, ardından TestFlight'a yüklemeyi ekleyin. Hattı kademeli olarak genişletin. Anahtar, her şeyi bir kerede otomatikleştirmeye çalışmamaktır: CD yinelemeli olarak uygulanır.
Feature flags, CD'nin önemli bir etkinleştiricisidir. Kodu kullanıcılar için etkinleştirmeden üretime göndermeye olanak tanırlar. Bir özellik kararsız çıkarsa — uygulamayı yeniden derlemeden bayrak kapatılır. Firebase Remote Config ve LaunchDarkly, CD hattıyla entegre olur ve web arayüzü veya API aracılığıyla yönetilir.
CD ile ekipler haftalık veya iki haftalık sürümler yapar. DORA raporundaki elit ekipler, Continuous Deployment (sunucu tarafı için) aracılığıyla günde birden fazla sürüm yapar. Mobil uygulamalar için optimum sıklık 1–2 haftada birdir: App Store incelemesi 1–3 gün sürer ve daha sık sürümler kullanıcılara değişiklikleri fark etmeleri için zaman vermez.
Ö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