LaunchDarkly: nedir, özellik bayrakları ve nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-04-13 Okuma süresi: 8 dk

LaunchDarkly, mobil uygulama geliştiricilerinin yeniden dağıtım yapmadan özellikleri etkinleştirip devre dışı bırakmasına olanak tanıyan bir özellik bayrağı yönetim platformudur. LaunchDarkly, 2024'e göre, 4.000'den fazla şirket güvenli özellik lansmanları, A/B testi ve gerçek zamanlı aşamalı dağıtım için hizmeti kullanmaktadır.

Önemli Noktalar

  • LaunchDarkly yeni yeteneklerin güvenli dağıtımı ve testi için bir özellik bayrağı yönetim platformudur
  • Feature flag, uygulama kodunu değiştirmeden özellik kullanılabilirliğini kontrol eden bir anahtardır
  • SDK, sunucuyla SSE bağlantısı üzerinden bayrak durumunu gerçek zamanlı olarak senkronize eder
  • Aşamalı dağıtım, anında geri alma özelliğiyle seçilen yüzdedeki kullanıcılar için bir özelliği etkinleştirir
  • A/B testi, varyantlar arasında otomatik trafik dağıtımıyla çok değişkenli bayraklar üzerine kuruludur

LaunchDarkly nedir?

LaunchDarkly, 2014 yılında Catamorphic Corp. tarafından kurulmuş bir özellik bayrağı yönetim platformudur. Hizmetin temel amacı, geliştirme ekiplerine yeni kod dağıtmadan uygulama özelliklerini gerçek zamanlı olarak etkinleştirme, devre dışı bırakma ve yapılandırma yeteneği vermektir.

Yeni bir işlevselliğin yayınlanmasının uygulama mağazasında bir sürüm yayınlamayı gerektirdiği geleneksel yaklaşımın aksine, LaunchDarkly davranışı uzaktan değiştirmeye olanak tanır. Mobil geliştirme için bu özellikle önemlidir — App Store ve Google Play incelemesi birkaç saatten bir güne kadar sürerken, bir bayrak saniyeler içinde değiştirilebilir.

LaunchDarkly platformu nasıl çalışır

LaunchDarkly mimarisi üç bileşenden oluşur: bayrak sunucusu, istemci SDK'ları ve kontrol paneli. Sunucu, bayrak yapılandırmalarını, hedefleme kurallarını ve kullanıcı segmentlerini depolar. SDK, gerçek zamanlı güncellemeler almak için sunucuyla kalıcı bir SSE bağlantısı sağlar.

Kontrol panelinde bir bayrak değiştirildiğinde, sunucu bağlı tüm SDK'lara bir güncelleme gönderir. Gecikme 200–500 milisaniyedir. Bağlantı kesildiğinde, SDK kanal yeniden kurulana kadar son önbelleğe alınmış durumu kullanır. Bu, uygulamanın bağlantı kesilmesi sırasında mevcut olan en son ayarlarla çalışmaya devam etmesini sağlar.

LaunchDarkly kontrol paneli, bayraklar oluşturmak ve yönetmek için görsel bir arayüz sağlar. Kontrol paneli her bayrağın mevcut durumunu, yapılandırmayı kimin ve ne zaman değiştirdiğine dair denetim geçmişini ve kullanım metriklerini gösterir. Her ortam için ayrı kurallar yapılandırılabilir — bir bayrak staging'de %100, üretimde %5 etkin olabilir.

LaunchDarkly temel kavramları

Feature flag, kuralları ve hedefleri olan adlandırılmış bir anahtardır. Bayraklar boolean, çok değişkenli ve JSON türlerinde olabilir. Rules etkinleştirme koşullarını tanımlar: örneğin, “Almanya'daki Android 12 kullanıcılarının %10'u için etkinleştir.” Segments, kullanıcıları işletim sistemi sürümü, bölge, cihaz modeli ve özel niteliklere göre gruplandırır.

Her bayrağın ortamları vardır: geliştirme, staging ve üretim. Bu, yeni bir özelliği gerçek kullanıcılar için etkinleştirmeden önce izole bir ortamda test etmeye olanak tanır. Ortam kuralları bağımsız olarak yapılandırılır — bir bayrak staging'de etkin ve üretimde devre dışı olabilir.

SDK ve mobil uygulamalarla entegrasyon

LaunchDarkly, Android, iOS, React Native ve Flutter için yerel SDK'lar sağlar. Her SDK minimum kurulum gerektirir: bir SDK anahtarı ve kullanıcı tanımlayıcısı. Kütüphane, bağlantıları, önbelleğe almayı ve hata yönetimini otomatik olarak yönetir.

Android SDK başlatma

Bağlanmak için Application.onCreate'da bir LDClient örneği oluşturun. İstemci, bir mobil anahtar ve kullanıcı bağlamı içeren bir yapılandırmayı kabul eder. Başlatmadan sonra uygulama, boolVariation yöntemiyle kodun herhangi bir yerinde bir bayrak varyasyonunu çağırır.

kotlin
class MyApplication : Application() {
    private lateinit var ldClient: LDClient

    override fun onCreate() {
        super.onCreate()
        val config = LDConfig.Builder("mobile-key-abc123")
            .build()
        val user = LDUser.Builder("user-unique-id")
            .build()
        ldClient = LDClient.init(this, config, user)
    }
}

Bayrak değişikliklerini okuma ve abone olma

Başlatmadan sonra, bir bayrağın kontrolü tek bir yöntemle yapılır. BoolVariation bayrak kurallarına göre değeri döndürür. SDK yapılandırmayı alamazsa varsayılan değer kullanılır. boolVariationDetail yöntemi ayrıca bayrağın bu değeri neden aldığının nedenini döndürür.

kotlin
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
    "new-checkout-flow",
    false
)
if (showNewFeature) {
    showNewCheckoutScreen()
} else {
    showLegacyCheckoutScreen()
}

LaunchDarkly ile A/B testi ve aşamalı dağıtım

LaunchDarkly'de A/B testi çok değişkenli bayraklar aracılığıyla uygulanır. Her varyanta bir trafik yüzdesi atanır — örneğin, kullanıcıların %50'si eski ekranı (varyant A) ve %50'si yeni ekranı (varyant B) görür. Platform, kullanıcıyı sabitleyerek her zaman aynı gruba düşmesini sağlar.

Aşamalı dağıtım, bir özelliğe erişimi olan kullanıcıların yüzdesini kademeli olarak artırır. Tipik bir program: %1 — ilk gün, %5 — ikinci, %25 — üçüncü, %100 — bir hafta sonra. Bir hata tespit edilirse, bayrak herkes için anında devre dışı bırakılır. LaunchDarkly, her varyasyonun metriklerini izlemek için Amplitude, Mixpanel ve Google Analytics ile entegre olur.

Metrikler ve deneyler

Platform, varyantlar arasındaki farkların istatistiksel anlamlılığını otomatik olarak hesaplayan yerleşik bir deney sistemi sağlar. Mevcut metrikler: dönüşüm, tutma, oturum sayısı, hatalar ve özel etkinlikler. Sonuçlar, güven aralığı görselleştirmeleriyle kontrol panelinde görüntülenir. Deneyler hem üretim trafiğinde hem de özel kullanıcı segmentlerinde çalıştırılabilir.

Analiz platformlarıyla entegrasyon LaunchDarkly'nin bir başka avantajıdır. Bayrak verileri otomatik olarak Amplitude, Mixpanel, Google Analytics veya Data Export API aracılığıyla özel bir veri hattına gönderilir. Bu, her özelliğin uygulamanın temel metrikleri üzerindeki etkisine ilişkin raporlar oluşturmayı sağlar. LaunchDarkly ayrıca bayrak durumu değişiklikleri hakkında harici sistemleri bilgilendirmek için webhook'ları da destekler.

Android'de LaunchDarkly SDK entegrasyonu örneği

Tam döngüyü inceleyelim: bağımlılığı ekleme, başlatma ve çökme telemetrisi için bir bayrağı kontrol etme. Özellik yalnızca test uzmanları için etkin olmalı, gerçek kullanıcılar için değil. Android için LaunchDarkly SDK, Maven Central aracılığıyla kullanılabilir. Sürüm 5.x, bayrak güncellemelerinin reaktif alımı için Kotlin Coroutines ve Jetpack Compose'u destekler.

iOS uygulamaları için LaunchDarkly, Swift Package Manager ve CocoaPods desteği sağlar. Swift SDK, eşzamansız başlatma için async/await ve değişikliklere abone olmak için Combine framework'ünü kullanır. Her iki SDK (Android ve iOS), çevrimdışı çalışma için arka planda senkronizasyonu ve yerel depolamada önbelleğe almayı destekler.

build.gradle'de bağımlılık

groovy
// app/build.gradle
dependencies {
    implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}

CrashReporter'da bayrak kontrolü

CrashReporter sınıfında crash-reporting-enabled bayrağını kontrol ederiz. Bayrak geçerli kullanıcı için etkinse, çökme raporları göndermeye başlarız. Sunucuda durum değiştiğinde SDK otomatik olarak yeni durumu alacaktır, ancak başlatma için tek bir kontrol yeterlidir.

kotlin
class CrashReporter {
    fun init() {
        val client = LDClient.get()
        if (client.boolVariation("crash-reporting-enabled", false)) {
            Crashlytics.start()
        }
    }
}

Yaygın senaryolar ve anti-kalıplar

Başarılı senaryolar: sağlayıcı arızalarında anında devre dışı bırakma ile ödeme akışı yönetimi, metrik izleme ile UI değişikliklerinin aşamalı dağıtımı, segmentlere göre içerik kişiselleştirme. LaunchDarkly'nin resmi bloguna göre, ekipler hata kurtarma süresini saatlerden dakikalara indiriyor.

Anti-kalıplar: kalıcı koşullu mantık için bayrak kullanma (bayraklar geçicidir), bayrak niteliklerinde sırlar saklama, örtüşen kurallar oluşturma. Öneri: dağıtım tamamlandıktan sonra bayrağı koddan kaldırın — bu, teknik borç ve kod tabanı karmaşıklığını önler. Diğer bir yaygın hata, özellik stabilize olduktan sonra koddan asla kaldırılmayan uzun ömürlü anahtarlar için bayrak kullanmaktır.

Doğru bir bayrak yönetim stratejisi, her yeni bayrak için bir kaldırma planı içerir. LaunchDarkly kullanılmayan bayrakları tespit etmek için yerleşik araçlar sağlar — SDK, bayrağın değerini 30 günden uzun süre kontrol etmemişse bayrak kullanılmamış sayılır. Bu tür bayraklar kontrol panelinde işaretlenir ve koddan güvenle kaldırılabilir.

LaunchDarkly'den ne zaman kaçınılmalı

Tek ekipli küçük projeler için LaunchDarkly aşırı olabilir — kodda basit bir koşullu ifade veya Firebase Remote Config yeterlidir. Platformu seçin karmaşık segmentasyon, değişiklik denetimi, A/B deneyleri veya çok ekipli bayrak yönetimi gerektiğinde. Startup'lar ve MVP projeleri için LaunchDarkly, bayrak sayısı ve MAU sınırlamaları olan ücretsiz bir Starter planı sunar.

LaunchDarkly'nin mevcut araçlarla uyumluluğu önemli bir seçim kriteridir. Platform Jira, Slack, PagerDuty, Datadog ve diğer hizmetlerle webhook'lar ve API'ler aracılığıyla entegre olur. Bu araçları zaten kullanan ekipler, bayrak durumu değişikliklerinde izleme ve uyarılar için ek altyapı olmadan sorunsuz entegrasyon elde eder. LaunchDarkly ayrıca bayrakları kod olarak yönetmek (Flags as Code) için bir Terraform sağlayıcısını da destekler — bu, bayrak yapılandırmasını Git'te saklamaya ve uygulamadan önce kod incelemesinden geçirmeye olanak tanır.

Sıkça sorulan sorular

LaunchDarkly'nin maliyeti nedir?

LaunchDarkly, bayrak sayısı ve MAU sınırlamaları olan bir Freemium planı sunar. Ekipler için ticari planlar aylık 150$'dan başlar ve sınırsız bayrak, değişiklik denetimi ve Jira ile Slack entegrasyonunu içerir.

LaunchDarkly hangi mobil SDK'ları destekler?

Platform, yerel Android (Kotlin/Java), iOS (Swift/Objective-C), React Native ve Flutter dahil olmak üzere 40'tan fazla SDK'yı destekler. Tüm mobil SDK'lar, yerel depolamada önbellekleme ile Streaming API üzerinden çalışır.

LaunchDarkly A/B testi için kullanılabilir mi?

Evet, LaunchDarkly, çok değişkenli bayraklar, trafik dağıtımı ve otomatik istatistiksel anlamlılık hesaplaması ile yerleşik bir deney sistemine sahiptir. Amplitude, Mixpanel ve Google Analytics ile entegrasyon desteklenir.

İnternet olmadan SDK nasıl çalışır?

Bağlantı kesildiğinde, SDK yerel depolamadan önbelleğe alınmış bayrak değerlerini kullanır. Bağlantı yeniden kurulduktan sonra SDK sunucuyla senkronize olur ve geçerli bayrak durumlarını uygular.

LaunchDarkly Firebase Remote Config'ten nasıl farklıdır?

LaunchDarkly A/B testi, çok değişkenli bayraklar, gelişmiş segmentasyon, değişiklik denetimi ve sunucu tarafı dilleri için SDK'lar sağlar. Firebase Remote Config daha basit ve ücretsizdir, ancak çok değişkenli deneyleri veya ayrıntılı denetimi desteklemez.

Özet

  • LaunchDarkly mobil uygulamalarda yeni yeteneklerin güvenli dağıtımı için bir özellik bayrağı yönetim platformudur
  • Feature flag kullanıcı segmentlerine dayalı hedefleme kurallarıyla boolean, çok değişkenli ve JSON türlerini destekler
  • SDK Android, iOS, React Native ve Flutter için SSE bağlantısı üzerinden bayrakları gerçek zamanlı senkronize eder
  • Aşamalı dağıtım riskleri azaltır — bir sorun tespit edildiğinde sürüm geri alma olmadan bayrak anında devre dışı bırakılır
  • A/B testi otomatik dağıtım ve istatistiksel raporlama ile çok değişkenli bayraklar üzerine kuruludur
  • Segmentasyon işletim sistemi sürümü, bölge, cihaz modeli ve niteliklere göre hassas etkinleştirme sağlar
  • Önerilir koşullu mantık birikimini önlemek için koddan kullanılmış bayrakları kaldırın

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