LaunchDarkly: cos'è, flag di funzionalità e come funzionano

Autore: IT Sectr Pubblicato: 2026-04-13 Tempo di lettura: 8 min

LaunchDarkly è una piattaforma di gestione dei flag di funzionalità che consente agli sviluppatori di app mobili di attivare e disattivare funzionalità senza ridistribuzione. Secondo LaunchDarkly, 2024, oltre 4.000 aziende utilizzano il servizio per rilasci sicuri di funzionalità, test A/B e rollout graduale in tempo reale.

Punti chiave

  • LaunchDarkly è una piattaforma di gestione dei flag di funzionalità per il deployment sicuro e il test di nuove capacità
  • Feature flag è un interruttore che controlla la disponibilità di una funzionalità senza modificare il codice dell'applicazione
  • SDK sincronizza lo stato dei flag in tempo reale tramite connessione SSE con il server
  • Rollout graduale attiva una funzionalità per una percentuale selezionata di utenti con possibilità di rollback istantaneo
  • Test A/B si basano su flag multivariati con distribuzione automatica del traffico tra le varianti

Cos'è LaunchDarkly?

LaunchDarkly è una piattaforma di gestione dei flag di funzionalità fondata nel 2014 da Catamorphic Corp. L'obiettivo principale del servizio è dare ai team di sviluppo la possibilità di attivare, disattivare e configurare le funzionalità dell'applicazione in tempo reale senza distribuire nuovo codice.

A differenza dell'approccio tradizionale, dove il rilascio di una nuova funzionalità richiede la pubblicazione di una versione nell'app store, LaunchDarkly consente di modificare il comportamento da remoto. Per lo sviluppo mobile, questo è particolarmente importante: la revisione nell'App Store e Google Play richiede da alcune ore a un giorno, mentre un flag può essere commutato in pochi secondi.

Come funziona la piattaforma LaunchDarkly

L'architettura di LaunchDarkly si basa su tre componenti: il server dei flag, gli SDK client e la dashboard. Il server memorizza le configurazioni dei flag, le regole di targeting e i segmenti di utenti. L'SDK mantiene una connessione SSE persistente con il server per ricevere aggiornamenti in tempo reale.

Quando un flag viene modificato nella dashboard, il server invia un aggiornamento a tutti gli SDK connessi. La latenza è di 200–500 millisecondi. Quando la connessione viene persa, l'SDK utilizza l'ultimo stato memorizzato nella cache fino al ripristino del canale. Ciò garantisce che l'applicazione continui a funzionare con le impostazioni più recenti disponibili al momento della disconnessione.

La dashboard di LaunchDarkly fornisce un'interfaccia visiva per creare e gestire i flag. La dashboard mostra lo stato attuale di ogni flag, la cronologia delle modifiche con audit di chi ha modificato la configurazione e quando, oltre alle metriche di utilizzo. Regole separate possono essere configurate per ogni ambiente: un flag può essere attivato al 100% in staging e al 5% in produzione.

Concetti chiave di LaunchDarkly

Feature flag è un interruttore denominato con regole e obiettivi. I flag possono essere booleani, multivariati e JSON. Le regole definiscono le condizioni di attivazione: ad esempio, “attiva per il 10% degli utenti Android 12 dalla Germania.” I segmenti raggruppano gli utenti per versione del sistema operativo, regione, modello di dispositivo e attributi personalizzati.

Ogni flag ha ambienti: sviluppo, staging e produzione. Ciò consente di testare una nuova funzionalità in un ambiente isolato prima di attivarla per gli utenti reali. Le regole degli ambienti sono configurate indipendentemente: un flag può essere attivato in staging e disattivato in produzione.

SDK e integrazione con app mobili

LaunchDarkly fornisce SDK nativi per Android, iOS, React Native e Flutter. Ogni SDK richiede una configurazione minima: una chiave SDK e un identificatore utente. La libreria gestisce automaticamente connessioni, caching e gestione degli errori.

Inizializzazione dell'SDK Android

Per connettersi, creare un'istanza di LDClient in Application.onCreate. Il client accetta una configurazione con una chiave mobile e il contesto dell'utente. Dopo l'inizializzazione, l'applicazione chiama una variazione di flag in qualsiasi punto del codice utilizzando il metodo boolVariation.

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)
    }
}

Lettura e sottoscrizione alle modifiche dei flag

Dopo l'inizializzazione, la verifica di un flag viene eseguita con un singolo metodo. BoolVariation restituisce il valore secondo le regole del flag. Il valore predefinito viene utilizzato se l'SDK non riesce a ottenere la configurazione. Il metodo boolVariationDetail restituisce inoltre il motivo per cui il flag ha assunto quel valore.

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

Test A/B e rollout graduale tramite LaunchDarkly

I test A/B in LaunchDarkly sono implementati tramite flag multivariati. A ogni variante viene assegnata una percentuale di traffico: ad esempio, il 50% degli utenti vede la schermata vecchia (variante A) e il 50% vede quella nuova (variante B). La piattaforma fissa l'utente, garantendo che cada sempre nello stesso gruppo.

Il rollout graduale aumenta progressivamente la percentuale di utenti con accesso a una funzionalità. Un programma tipico: 1% — primo giorno, 5% — secondo, 25% — terzo, 100% — dopo una settimana. Se viene rilevato un errore, il flag viene disattivato istantaneamente per tutti. LaunchDarkly si integra con Amplitude, Mixpanel e Google Analytics per monitorare le metriche di ogni variazione.

Metriche ed esperimenti

La piattaforma fornisce un sistema di esperimenti integrato che calcola automaticamente la significatività statistica delle differenze tra le varianti. Metriche disponibili: conversione, retention, numero di sessioni, errori ed eventi personalizzati. I risultati vengono visualizzati nella dashboard con visualizzazione degli intervalli di confidenza. Gli esperimenti possono essere eseguiti sia sul traffico di produzione che su segmenti di utenti dedicati.

L'integrazione di LaunchDarkly con le piattaforme di analisi è un altro vantaggio. I dati dei flag vengono inviati automaticamente ad Amplitude, Mixpanel, Google Analytics o a una pipeline di dati personalizzata tramite l'API Data Export. Ciò consente di creare report sull'impatto di ogni funzionalità sulle metriche chiave dell'applicazione. LaunchDarkly supporta anche i webhook per notificare ai sistemi esterni le modifiche allo stato dei flag.

Esempio di integrazione dell'SDK LaunchDarkly in Android

Esaminiamo il ciclo completo: aggiunta della dipendenza, inizializzazione e verifica di un flag per la telemetria degli arresti anomali. La funzionalità dovrebbe essere attiva solo per i tester, non per gli utenti reali. L'SDK di LaunchDarkly per Android è disponibile tramite Maven Central. La versione 5.x supporta Kotlin Coroutines e Jetpack Compose per la ricezione reattiva degli aggiornamenti dei flag.

Per le applicazioni iOS, LaunchDarkly fornisce supporto per Swift Package Manager e CocoaPods. L'SDK Swift utilizza async/await per l'inizializzazione asincrona e il framework Combine per la sottoscrizione alle modifiche. Entrambi gli SDK (Android e iOS) supportano la sincronizzazione in background e la memorizzazione nella cache locale per il funzionamento offline.

Dipendenze in build.gradle

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

Verifica del flag in CrashReporter

Nella classe CrashReporter verifichiamo il flag crash-reporting-enabled. Se il flag è attivato per l'utente corrente, iniziamo a inviare i report di arresto anomalo. L'SDK riceverà automaticamente il nuovo stato quando cambia sul server, ma un singolo controllo è sufficiente per l'inizializzazione.

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

Scenari comuni e anti-pattern

Scenari di successo: gestione del flusso di pagamento con disattivazione istantanea in caso di guasti del provider, rollout graduale delle modifiche all'interfaccia utente con monitoraggio delle metriche, personalizzazione dei contenuti per segmenti. Secondo il blog ufficiale di LaunchDarkly, i team riducono il tempo di recupero dagli errori da ore a minuti.

Anti-pattern: utilizzare i flag per logica condizionale permanente (i flag sono temporanei), memorizzare segreti negli attributi dei flag, creare regole sovrapposte. Raccomandazione: rimuovere il flag dal codice dopo il completamento del rollout — ciò previene debito tecnico e complessità del codebase. Un altro errore comune è utilizzare i flag come interruttori a lunga durata che non vengono mai rimossi dal codice dopo la stabilizzazione della funzionalità.

Una corretta strategia di gestione dei flag include un piano di rimozione per ogni nuovo flag. LaunchDarkly fornisce strumenti integrati per rilevare i flag inutilizzati: un flag è considerato inutilizzato se l'SDK non ne ha verificato il valore per più di 30 giorni. Tali flag vengono contrassegnati nella dashboard e possono essere rimossi dal codice in sicurezza.

Quando evitare LaunchDarkly

Per progetti piccoli con un singolo team, LaunchDarkly può essere eccessivo — un semplice condizionale nel codice o Firebase Remote Config è sufficiente. Scegli la piattaforma quando hai bisogno di segmentazione complessa, audit delle modifiche, esperimenti A/B o gestione dei flag multi-team. Per startup e progetti MVP, LaunchDarkly offre un piano Starter gratuito con limiti sul numero di flag e MAU.

La compatibilità di LaunchDarkly con gli strumenti esistenti è un criterio di selezione importante. La piattaforma si integra con Jira, Slack, PagerDuty, Datadog e altri servizi tramite webhook e API. I team che già utilizzano questi strumenti ottengono un'integrazione perfetta senza infrastruttura aggiuntiva per il monitoraggio e gli avvisi quando lo stato dei flag cambia. LaunchDarkly supporta anche un provider Terraform per la gestione dei flag come codice (Flags as Code) — ciò consente di memorizzare la configurazione dei flag in Git e di sottoporla a revisione del codice prima dell'applicazione.

Domande frequenti

Quanto costa LaunchDarkly?

LaunchDarkly offre un piano Freemium con limiti sul numero di flag e MAU. I piani commerciali per i team partono da $150 al mese e includono flag illimitati, audit delle modifiche e integrazione con Jira e Slack.

Quali SDK mobili supporta LaunchDarkly?

La piattaforma supporta oltre 40 SDK, inclusi Android nativo (Kotlin/Java), iOS (Swift/Objective-C), React Native e Flutter. Tutti gli SDK mobili funzionano tramite l'API Streaming con caching nella memoria locale.

LaunchDarkly può essere utilizzato per i test A/B?

Sì, LaunchDarkly dispone di un sistema di esperimenti integrato con flag multivariati, distribuzione del traffico e calcolo automatico della significatività statistica. L'integrazione con Amplitude, Mixpanel e Google Analytics è supportata.

Come funziona l'SDK senza connessione internet?

Quando la connessione viene persa, l'SDK utilizza i valori dei flag memorizzati nella cache dalla memoria locale. Dopo il ripristino della connessione, l'SDK si sincronizza con il server e applica gli stati attuali dei flag.

In cosa si differenzia LaunchDarkly da Firebase Remote Config?

LaunchDarkly fornisce test A/B, flag multivariati, segmentazione avanzata, audit delle modifiche e SDK per linguaggi lato server. Firebase Remote Config è più semplice e gratuito, ma non supporta esperimenti multivariati o audit dettagliati.

Riepilogo

  • LaunchDarkly è una piattaforma di gestione dei flag di funzionalità per il deployment sicuro di nuove capacità nelle applicazioni mobili
  • Feature flag supporta tipi booleani, multivariati e JSON con regole di targeting basate su segmenti di utenti
  • SDK per Android, iOS, React Native e Flutter sincronizzano i flag in tempo reale tramite connessione SSE
  • Rollout graduale riduce i rischi — un flag viene disattivato istantaneamente quando viene rilevato un problema senza rollback della versione
  • Test A/B si basano su flag multivariati con distribuzione automatica e report statistici
  • Segmentazione per versione del sistema operativo, regione, modello di dispositivo e attributi consente un'attivazione precisa
  • Raccomandato rimuovere i flag obsoleti dal codice per prevenire l'accumulo di logica condizionale

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche