LaunchDarkly funksional bayraqların idarə edilməsi platformasıdır və mobil tətbiq tərtibatçılarına yenidən yerləşdirmədən imkanları açıb-bağlamağa imkan verir. LaunchDarkly, 2024 məlumatlarına görə, 4000-dən çox şirkət yeni funksiyaların təhlükəsiz buraxılışı, A/B testi və real vaxtda mərhələli tətbiq üçün xidmətdən istifadə edir.
Əsas məqamlar
LaunchDarkly 2014-cü ildə Catamorphic Corp şirkəti tərəfindən əsası qoyulmuş funksional bayraqların idarə edilməsi platformasıdır. Xidmətin əsas vəzifəsi inkişaf komandalarına yeni kod yerləşdirmədən tətbiq funksiyalarını real vaxtda açmaq, bağlamaq və konfiqurasiya etmək imkanı verməkdir.
Yeni funksionallığın buraxılışının tətbiq mağazasında versiya dərc etməyi tələb etdiyi ənənəvi yanaşmadan fərqli olaraq, LaunchDarkly davranışı uzaqdan dəyişməyə imkan verir. Mobil inkişaf üçün bu xüsusilə vacibdir — App Store və Google Play-də baxış bir neçə saatdan bir neçə günə qədər çəkir, bayraq isə saniyələr ərzində dəyişdirilə bilər.
LaunchDarkly arxitekturası üç komponent üzərində qurulur: bayraq serveri, müştəri SDK-ları və idarəetmə paneli. Server bayraq konfiqurasiyalarını, aktivləşdirmə qaydalarını və istifadəçi seqmentlərini saxlayır. SDK real vaxtda yeniləmələri almaq üçün serverlə daimi SSE əlaqəsi saxlayır.
Paneldə bayraq dəyişdirildikdə, server bütün qoşulmuş SDK-lara yeniləmə göndərir. Gecikmə 200–500 millisaniyə təşkil edir. Əlaqə itirildikdə, SDK kanal bərpa olunana qədər son keşlənmiş vəziyyətdən istifadə edir. Bu, tətbiqin qırılma anında aktual olan parametrlərlə işə davam etməsinə zəmanət verir.
LaunchDarkly idarəetmə paneli bayraqların yaradılması və idarə edilməsi üçün vizual interfeys təqdim edir. Panel göstərir hər bir bayrağın cari vəziyyətini, kimin və nə vaxt konfiqurasiyanı dəyişdirdiyi auditi olan dəyişiklik tarixçəsini, həmçinin istifadə metrikalarını. Hər bir mühit üçün ayrıca qaydalar konfiqurasiya edilə bilər — bayraq staging-də 100%, production-da isə 5% aktiv ola bilər.
Feature flag qaydaları və məqsədləri olan adlandırılmış keçiddir. Bayraqlar boolean, multivariate və JSON tipli ola bilər. Rules aktivləşdirmə şərtlərini müəyyən edir: məsələn, “Almaniyadan Android 12 istifadəçilərinin 10%-i üçün aktiv et”. Segments istifadəçiləri OS versiyası, region, cihaz modeli və ixtiyari atributlar üzrə qruplaşdırır.
Hər bir bayrağın mühitləri var: development, staging və production. Bu, yeni funksiyanı real istifadəçilər üçün aktiv etməzdən əvvəl təcrid olunmuş mühitdə sınaqdan keçirməyə imkan verir. Mühit qaydaları müstəqil konfiqurasiya edilir — bayraq staging-də aktiv, production-da isə söndürülmüş ola bilər.
LaunchDarkly Android, iOS, React Native və Flutter üçün yerli SDK-lar təqdim edir. Hər bir SDK minimal konfiqurasiya tələb edir: SDK açarı və istifadəçi identifikatoru. Kitabxana avtomatik olaraq əlaqə, keşləmə və xəta idarəetməsini həyata keçirir.
Qoşulmaq üçün Application.onCreate-də LDClient nümunəsi yaradılır. Müştəri mobil açar və istifadəçi konteksti ilə konfiqurasiya qəbul edir. İşə salındıqdan sonra tətbiq kodein istənilən yerində boolVariation metodu ilə bayraq variasiyasını çağırır.
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)
}
}
İşə salındıqdan sonra bayrağın yoxlanılması bir metodla həyata keçirilir. BoolVariation bayraq qaydalarına uyğun dəyəri qaytarır. SDK konfiqurasiyanı əldə edə bilmədikdə standart dəyər istifadə olunur. BoolVariationDetail metodu əlavə olaraq bayrağın bu dəyəri qəbul etmə səbəbini qaytarır.
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
"new-checkout-flow",
false
)
if (showNewFeature) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
A/B testi LaunchDarkly-də multivariate bayraqlar vasitəsilə həyata keçirilir. Hər bir varianta trafik faizi təyin edilir — məsələn, istifadəçilərin 50%-i köhnə ekranı (variant A), 50%-i isə yenisini (variant B) görür. Platforma istifadəçini qeyd edərək onun həmişə eyni qrupa düşməsinə zəmanət verir.
Mərhələli tətbiq funksiyaya girişi olan istifadəçilərin faizini tədricən artırır. Tipik cədvəl: 1% — birinci gün, 5% — ikinci, 25% — üçüncü, 100% — bir həftədən sonra. Xəta aşkar edildikdə, bayraq dərhal hamı üçün söndürülür. LaunchDarkly hər bir variasiyanın metrikalarını izləmək üçün Amplitude, Mixpanel və Google Analytics ilə inteqrasiya olunur.
Platforma variantlar arasında fərqlərin statistik əhəmiyyətini avtomatik hesablayan quraşdırılmış eksperimentlər sistemi təqdim edir. Mövcud metrikalar: konversiya, retention, sessiyaların sayı, xətalar və fərdi hadisələr. Nəticələr etibar intervallarının vizuallaşdırılması ilə paneldə göstərilir. Eksperimentlər həm production trafikində, həm də ayrılmış istifadəçi seqmentlərində işə salına bilər.
LaunchDarkly-nin analitik platformalarla inteqrasiyası başqa bir üstünlükdür. Bayraqlar haqqında məlumatlar avtomatik olaraq Amplitude, Mixpanel, Google Analytics və ya Data Export API vasitəsilə öz data pipeline-a göndərilir. Bu, hər bir funksiyanın tətbiqin əsas metrikalarına təsiri haqqında hesabatlar yaratmağa imkan verir. LaunchDarkly həmçinin bayraq vəziyyətinin dəyişməsi barədə xarici sistemləri xəbərdar etmək üçün webhook-ları dəstəkləyir.
Tam dövrü nəzərdən keçirək: asılılığın əlavə edilməsi, işə salınma və qəza telemetriyası üçün bayrağın yoxlanılması. Funksiya yalnız test edənlər üçün aktiv olmalı, real istifadəçilər üçün yox. Android üçün LaunchDarkly SDK Maven Central vasitəsilə mövcuddur. 5.x versiyası bayraq yeniləmələrini reaktiv əldə etmək üçün Kotlin Coroutines və Jetpack Compose-u dəstəkləyir.
iOS tətbiqləri üçün LaunchDarkly Swift Package Manager və CocoaPods dəstəyi təqdim edir. Swift SDK asinxron işə salma üçün async/await və dəyişikliklərə abunə olmaq üçün Combine framework-dən istifadə edir. Hər iki SDK (Android və iOS) oflayn rejimdə işləmək üçün fon sinxronizasiyası və yerli yaddaşda keşləməni dəstəkləyir.
// app/build.gradle
dependencies {
implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}
CrashReporter sinfində crash-reporting-enabled bayrağını yoxlayırıq. Əgər bayraq aktivdirsə cari istifadəçi üçün — qəza hesabatlarının göndərilməsini işə salırıq. Serverdə dəyişiklik olduqda SDK avtomatik olaraq yeni vəziyyəti alacaq, lakin işə salma üçün birdəfəlik yoxlama kifayətdir.
class CrashReporter {
fun init() {
val client = LDClient.get()
if (client.boolVariation("crash-reporting-enabled", false)) {
Crashlytics.start()
}
}
}
Uğurlu ssenarilər: provayder nasazlıqları zamanı dərhal söndürmə ilə ödəniş axınının idarə edilməsi, metrikaların monitorinqi ilə UI dəyişikliklərinin mərhələli tətbiqi, seqmentlər üzrə məzmunun fərdiləşdirilməsi. LaunchDarkly rəsmi bloqunun məlumatlarına görə, komandalar səhvlərdən sonra bərpa müddətini saatlardan dəqiqələrə endirir.
Anti-nümunələr: bayraqların daimi şərti məntiq üçün istifadəsi (bayraqlar müvəqqətidir), bayraq atributlarında sirlərin saxlanması, üst-üstə düşən qaydaların yaradılması. Tövsiyə: tətbiq başa çatdıqdan sonra bayrağı koddan silin — bu, texniki borcun və kod bazasının mürəkkəbləşməsinin qarşısını alır. Digər ümumi səhv funksiya sabitləşdikdən sonra koddan heç vaxt silinməyən uzunömürlü keçidlər üçün bayraqlardan istifadə etməkdir.
Düzgün bayraq idarəetmə strategiyası hər bir yeni bayraq üçün silmə planını əhatə edir. LaunchDarkly təqdim edir istifadə olunmayan bayraqların aşkarlanması üçün quraşdırılmış alətlər — SDK 30 gündən çox bayrağın dəyərini yoxlamadıqda bayraq istifadə olunmamış sayılır. Belə bayraqlar paneldə qeyd olunur və onları koddan təhlükəsiz şəkildə silmək olar.
Bir komandalı kiçik layihələr üçün LaunchDarkly həddindən artıq ola bilər — koddakı sadə conditional və ya Firebase Remote Config kifayətdir. Platformanı seçin, mürəkkəb seqmentasiya, dəyişiklik auditi, A/B eksperimentləri və ya çoxkomandalı bayraq idarəetməsi tələb olunduqda. Startaplar və MVP layihələri üçün LaunchDarkly bayraqların və MAU-nun sayında məhdudiyyəti olan pulsuz Starter planı təklif edir.
LaunchDarkly-nin mövcud alətlərlə uyğunluğu vacib seçim meyarıdır. Platforma inteqrasiya olunur Jira, Slack, PagerDuty, Datadog və digər xidmətlərlə webhook-lar və API vasitəsilə. Bu alətləri artıq istifadə edən komandalar bayraq vəziyyətinin dəyişməsi zamanı monitorinq və bildirişlər üçün əlavə infrastruktur olmadan problemsiz inteqrasiya əldə edir. LaunchDarkly həmçinin bayraqları kod kimi idarə etmək (Flags as Code) üçün Terraform provayderini dəstəkləyir — bu, bayraq konfiqurasiyasını Git-də saxlamağa və tətbiqdən əvvəl code review-dən keçirməyə imkan verir.
Tez-tez verilən suallar
LaunchDarkly bayraqların və MAU-nun sayında məhdudiyyəti olan Freemium tarifi təklif edir. Komandalar üçün kommersiya planları ayda 150$-dan başlayır, limitsiz bayraqlar, dəyişiklik auditi və Jira və Slack ilə inteqrasiyanı əhatə edir.
Platforma 40-dan çox SDK-nı dəstəkləyir, o cümlədən yerli Android (Kotlin/Java), iOS (Swift/Objective-C), React Native və Flutter. Bütün mobil SDK-lar yerli yaddaşda keşləmə ilə Streaming API vasitəsilə işləyir.
Bəli, LaunchDarkly multivariate bayraqları, trafik paylanması və statistik əhəmiyyətin avtomatik hesablanması ilə quraşdırılmış eksperimentlər sisteminə malikdir. Amplitude, Mixpanel və Google Analytics ilə inteqrasiya dəstəklənir.
Əlaqə itirildikdə, SDK yerli yaddaşdan keşlənmiş dəyərlərdən istifadə edir. Əlaqə bərpa edildikdən sonra SDK serverlə sinxronlaşır və bayraqların cari vəziyyətlərini tətbiq edir.
LaunchDarkly A/B testi, multi-variant bayraqları, mürəkkəb seqmentasiya, dəyişiklik auditi və server dilləri üçün SDK-lar təqdim edir. Firebase Remote Config daha sadə və pulsuzdur, lakin çoxvariantlı eksperimentləri və ətraflı auditi dəstəkləmir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun