Continuous Delivery (CD): nedir, Continuous Deployment'tan farkı

Yazar: IT Sectr Yayınlanma: 2026-04-11 Okuma süresi: 9 dk

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) — kodun otomatik kontrollerden sonra her zaman yayına hazır olduğu bir pratik
  • CD, CI'yı içerir ve sürüm hazırlığı, imzalama ve uygulama mağazalarına teslim aşamalarını ekler
  • Manuel onay, Continuous Delivery'yi Continuous Deployment'dan (otomatik dağıtım) ayırır
  • Fastlane, mobil geliştirmede CD için standart araçtır, imzalama ve yayınlamayı soyutlar
  • Sürüm hattı, meta veri, ekran görüntüleri, açıklamalar ve pazarlama materyallerinin doğrulanmasını içerir

Continuous Delivery Nedir

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.

Yazılım Tesliminin Evrimi

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.

CD'nin İş Değeri

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.

CD vs CI vs Continuous Deployment

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.

Continuous Integration

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.

Continuous Delivery

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

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.

PratikOtomasyonÜretime SürümGenellikle
CIDerleme + TestlerHayırHerhangi bir proje
CDDerleme + Testler + Sürüm Yapısı + TeslimTalep üzerineMobil uygulamalar
Continuous DeploymentTam: Derleme → Testler → Teslim → SürümOtomatikWeb hizmetleri, SaaS

Mobil Uygulamalar için Continuous Delivery

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.

Google Play'de Yayınlanma Hazırlığı

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.

App Store'da Yayınlanma Hazırlığı

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.

ruby
# 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.

CD Hattı Bileşenleri

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.

Sürüm Yönetimi

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.

Mağaza Meta Verileri

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.

Geçit Kontrolleri

İ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 için Otomatik Test

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

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.

Entegrasyon Testleri

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.

UI ve Ekran Görüntüsü Testleri

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 En İyi Uygulamaları

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.

Feature Flags

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.

Staging Ortamı

Ü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.

Sürüm Notları ve Değişiklik Günlüğü

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.

Sürüm Sonrası İzleme

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.

kotlin
// 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, Continuous Deployment'dan nasıl farklıdır?

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.

Sürüm yapısının test edilenden farklı olmadığından nasıl emin olunur?

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.

Zaten yayınlanmış bir uygulama için CD uygulanabilir mi?

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 ile nasıl ilişkilidir?

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 kullanırken ne sıklıkta sürüm yapılmalıdır?

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

  • Continuous Delivery (CD) — üretime dağıtma kararını manuel tutarken sürüm hazırlığının otomasyonu
  • CD, CI'ya dayanır ve şunları ekler: sürüm derlemesi, imzalama, meta veri doğrulama ve uygulama mağazasına teslim
  • Fastlane, mobil geliştirmede CD için standart araçtır, tek bir Fastfile'dan Android ve iOS'u destekler
  • Feature flags ve staging ortamı — mobil projelerde güvenli CD için zorunlu uygulamalar
  • Geçit kontrolleri (derleme boyutu, yerelleştirmeler, hata ayıklama sembolleri) mağaza gereksinimleri karşılanmazsa sürümü engeller
  • DORA metrikleri kanıtlıyor: CD'li ekipler 208 kat daha sık ve daha düşük riskle sürüm yapar
  • Öneri: CD'yi yinelemeli olarak uygulayın — otomatik sürüm derleme montajıyla başlayın, ardından imzalamayı, ardından TestFlight'a yüklemeyi ekleyin

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.

Projeyi tartış

Ayrıca okuyun