A LaunchDarkly egy funkcionális jelzők kezelésére szolgáló platform, amely lehetővé teszi a mobilalkalmazás-fejlesztők számára, hogy újratelepítés nélkül kapcsolják be és ki a képességeket. A LaunchDarkly, 2024 adatai szerint több mint 4000 vállalat használja a szolgáltatást új funkciók biztonságos indításához, A/B teszteléshez és fokozatos bevezetéshez valós időben.
Főbb pontok
A LaunchDarkly egy funkcionális jelzők kezelésére szolgáló platform, amelyet 2014-ben alapított a Catamorphic Corp. A szolgáltatás fő feladata, hogy lehetőséget adjon a fejlesztőcsapatoknak az alkalmazásfunkciók valós idejű be-, kikapcsolására és konfigurálására új kód telepítése nélkül.
Ellentétben a hagyományos megközelítéssel, ahol egy új funkcionalitás kiadása az alkalmazásboltban történő verzióközzétételt igényel, a LaunchDarkly lehetővé teszi a viselkedés távoli megváltoztatását. A mobilfejlesztés számára ez különösen fontos — az App Store és Google Play felülvizsgálata néhány órától napokig tart, míg egy jelző másodpercek alatt átkapcsolható.
A LaunchDarkly architektúrája három összetevőn alapul: jelzőszerver, kliens SDK-k és vezérlőpult. A szerver tárolja a jelzők konfigurációit, a bekapcsolási szabályokat és a felhasználói szegmenseket. Az SDK állandó SSE-kapcsolatot tart fenn a szerverrel a valós idejű frissítések fogadásához.
Amikor egy jelzőt megváltoztatnak a panelen, a szerver frissítést küld az összes csatlakoztatott SDK-nak. A késés 200–500 ezredmásodperc. Kapcsolat megszakadásakor az SDK az utolsó gyorsítótárazott állapotot használja a csatorna helyreállításáig. Ez garantálja, hogy az alkalmazás a megszakítás pillanatában aktuális beállításokkal folytatja a működést.
A LaunchDarkly vezérlőpult vizuális felületet biztosít a jelzők létrehozásához és kezeléséhez. A panel mutatja az egyes jelzők aktuális állapotát, a változtatások előzményeit annak auditjával, hogy ki és mikor módosította a konfigurációt, valamint a használati mutatókat. Minden környezethez külön szabályok konfigurálhatók — egy jelző a stagingben 100%-ban, a productionben pedig 5%-ban lehet bekapcsolva.
A Feature flag egy elnevezett kapcsoló szabályokkal és célokkal. A jelzők lehetnek boolean, multivariációs és JSON típusúak. A Rules határozza meg a bekapcsolás feltételeit: például „kapcsold be az Android 12-es felhasználók 10%-ának Németországból“. A Segments a felhasználókat operációs rendszer verzió, régió, eszköztípus és tetszőleges attribútumok szerint csoportosítja.
Minden jelzőhöz tartoznak környezetek: development, staging és production. Ez lehetővé teszi egy új funkció tesztelését elkülönített környezetben, mielőtt bekapcsolnák a valódi felhasználók számára. A környezeti szabályok egymástól függetlenül konfigurálhatók — egy jelző lehet bekapcsolva a stagingben és kikapcsolva a productionben.
A LaunchDarkly natív SDK-kat biztosít Android, iOS, React Native és Flutter platformokhoz. Minden SDK minimális konfigurációt igényel: SDK-kulcsot és felhasználóazonosítót. A könyvtár automatikusan kezeli a kapcsolatot, a gyorsítótárazást és a hibakezelést.
A csatlakozáshoz egy LDClient példány jön létre az Application.onCreate-ban. A kliens elfogadja a konfigurációt a mobilkulccsal és a felhasználói kontextussal. Az inicializálás után az alkalmazás a kód bármely pontján meghívja a jelző variációját a boolVariation metódussal.
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)
}
}
Az inicializálás után a jelző ellenőrzése egyetlen metódussal történik. A BoolVariation a jelző szabályai szerint adja vissza az értéket. Az alapértelmezett érték akkor használatos, ha az SDK nem tudta lekérni a konfigurációt. A boolVariationDetail metódus ezenkívül visszaadja annak okát is, hogy a jelző miért vette fel ezt az értéket.
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
"new-checkout-flow",
false
)
if (showNewFeature) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
Az A/B tesztelés a LaunchDarkly-ben multivariációs jelzőkön keresztül valósul meg. Minden változathoz a forgalom egy százaléka van hozzárendelve — például a felhasználók 50%-a a régi képernyőt (A változat) és 50%-a az újat (B változat) látja. A platform rögzíti a felhasználót, garantálva, hogy mindig ugyanabba a csoportba kerül.
A fokozatos bevezetés fokozatosan növeli a funkcióhoz hozzáférő felhasználók százalékát. Tipikus ütemterv: 1% — első nap, 5% — második nap, 25% — harmadik nap, 100% — egy hét után. Hiba észlelésekor a jelző azonnal kikapcsol mindenki számára. A LaunchDarkly integrálódik az Amplitude, Mixpanel és Google Analytics szolgáltatásokkal az egyes variációk mutatóinak nyomon követéséhez.
A platform beépített kísérleti rendszert kínál, amely automatikusan kiszámítja a változatok közötti különbségek statisztikai szignifikanciáját. Elérhető mutatók: konverzió, megtartás, munkamenetek száma, hibák és egyéni események. Az eredmények a panelen jelennek meg megbízhatósági intervallumok vizualizációjával. A kísérletek futtathatók mind production forgalmon, mind elkülönített felhasználói szegmenseken.
A LaunchDarkly integrációja analitikai platformokkal egy másik előny. A jelzőkre vonatkozó adatok automatikusan elküldésre kerülnek az Amplitude, Mixpanel, Google Analytics vagy saját adatcsővezetékbe a Data Export API-n keresztül. Ez lehetővé teszi jelentések készítését az egyes funkciók kulcsfontosságú alkalmazásmutatókra gyakorolt hatásáról. A LaunchDarkly a webhookokat is támogatja a külső rendszerek értesítéséhez a jelzőállapot változásáról.
Vizsgáljuk meg a teljes ciklust: függőség hozzáadása, inicializálás és a jelző ellenőrzése összeomlási telemetriához. A funkció csak a tesztelők számára legyen aktív, a valódi felhasználók számára ne. A LaunchDarkly SDK Androidhoz a Maven Centralen keresztül érhető el. Az 5.x verzió támogatja a Kotlin Coroutines és Jetpack Compose keretrendszereket a jelzőfrissítések reaktív fogadásához.
iOS alkalmazásokhoz a LaunchDarkly támogatja a Swift Package Manager és CocoaPods rendszereket. A Swift SDK az async/await használja aszinkron inicializáláshoz és a Combine keretrendszert a változásokra való feliratkozáshoz. Mindkét SDK (Android és iOS) támogatja a háttérszinkronizálást és a helyi tárolóban történő gyorsítótárazást offline működéshez.
// app/build.gradle
dependencies {
implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}
A CrashReporter osztályban ellenőrizzük a crash-reporting-enabled jelzőt. Ha a jelző be van kapcsolva az aktuális felhasználó számára — elindítjuk az összeomlási jelentések küldését. Az SDK automatikusan megkapja az új állapotot, amikor az megváltozik a szerveren, de az inicializáláshoz elegendő egy egyszeri ellenőrzés.
class CrashReporter {
fun init() {
val client = LDClient.get()
if (client.boolVariation("crash-reporting-enabled", false)) {
Crashlytics.start()
}
}
}
Sikeres forgatókönyvek: fizetési folyamat kezelése azonnali kikapcsolással szolgáltatói hibák esetén, UI-változtatások fokozatos bevezetése mutatók monitorozásával, tartalom személyre szabása szegmensek szerint. A LaunchDarkly hivatalos blogja szerint a csapatok órákról percekre csökkentik a hibák utáni helyreállítási időt.
Antiminták: jelzők használata állandó feltételes logikához (a jelzők ideiglenesek), titkok tárolása a jelző attribútumaiban, átfedő szabályok létrehozása. Javaslat: távolítsa el a jelzőt a kódból a bevezetés befejezése után — ez megakadályozza a technikai adósságot és a kódbázis bonyolultságát. Egy másik gyakori hiba a jelzők használata hosszú élettartamú kapcsolókként, amelyek soha nem törlődnek a kódból a funkció stabilizálása után.
A helyes jelzőkezelési stratégia tartalmazza az egyes új jelzők eltávolítási tervét. A LaunchDarkly biztosít beépített eszközöket a nem használt jelzők észleléséhez — egy jelző nem használtnak minősül, ha az SDK nem ellenőrizte az értékét több mint 30 napig. Az ilyen jelzők megjelölésre kerülnek a panelen, és biztonságosan eltávolíthatók a kódból.
Kis projektekhez egy csapattal a LaunchDarkly túlzó lehet — elegendő egy egyszerű feltételes utasítás a kódban vagy a Firebase Remote Config. Válassza a platformot, amikor összetett szegmentációra, változásauditra, A/B kísérletekre vagy többcsapatos jelzőkezelésre van szükség. Indító vállalkozások és MVP projektek számára a LaunchDarkly ingyenes Starter csomagot kínál a jelzők és MAU számának korlátozásával.
A LaunchDarkly kompatibilitása a meglévő eszközökkel fontos kiválasztási szempont. A platform integrálódik a Jira, Slack, PagerDuty, Datadog és más szolgáltatásokkal webhookokon és API-n keresztül. Azok a csapatok, amelyek már használják ezeket az eszközöket, zökkenőmentes integrációt kapnak további infrastruktúra nélkül a jelzőállapot változásának monitorozásához és értesítéséhez. A LaunchDarkly emellett támogatja a Terraform szolgáltatót a jelzők kódként való kezeléséhez (Flags as Code) — ez lehetővé teszi a jelzőkonfiguráció Git-ben tárolását és a kódellenőrzés elvégzését az alkalmazás előtt.
Gyakran Ismételt Kérdések
A LaunchDarkly Freemium díjszabást kínál a jelzők és MAU számának korlátozásával. A csapatok számára készült kereskedelmi csomagok havi 150 USD-tól kezdődnek, korlátlan jelzőket, változásauditot és Jira és Slack integrációt tartalmazva.
A platform több mint 40 SDK-t támogat, beleértve a natív Android (Kotlin/Java), iOS (Swift/Objective-C), React Native és Flutter rendszereket. Az összes mobil SDK a Streaming API-n keresztül működik helyi tárolóban történő gyorsítótárazással.
Igen, a LaunchDarkly beépített kísérleti rendszerrel rendelkezik multivariációs jelzőkkel, forgalomelosztással és automatikus statisztikai szignifikancia számítással. Az Amplitude, Mixpanel és Google Analytics integráció támogatott.
Kapcsolat megszakadásakor az SDK a gyorsítótárazott értékeket használja a jelzőkhöz a helyi tárolóból. A kapcsolat helyreállítása után az SDK szinkronizál a szerverrel és alkalmazza a jelzők aktuális állapotát.
A LaunchDarkly A/B tesztelést, többváltozós jelzőket, összetett szegmentációt, változásauditot és SDK-kat biztosít szerveroldali nyelvekhez. A Firebase Remote Config egyszerűbb és ingyenes, de nem támogatja a többváltozós kísérleteket és a részletes auditot.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is