LaunchDarkly 是一个功能标志管理平台,允许移动应用开发者无需重新部署即可启用和禁用功能。根据 LaunchDarkly,2024 的数据,超过 4000 家公司使用该服务安全地推出新功能、进行 A/B 测试和实时逐步部署。
要点
LaunchDarkly 是一个功能标志管理平台,由 Catamorphic Corp 于 2014 年创立。该服务的主要任务是让开发团队能够实时启用、禁用和配置应用功能,而无需部署新代码。
与传统方法(需要发布新版本到应用商店)不同,LaunchDarkly 允许远程更改行为。对于移动开发来说,这尤其重要——App Store 和 Google Play 的审核需要几小时到几天,而标志可以在几秒钟内切换。
LaunchDarkly 的架构基于三个组件:标志服务器、客户端 SDK 和控制面板。服务器存储标志配置、启用规则和用户细分。SDK 与服务器保持永久的 SSE 连接,以实时接收更新。
当面板中的标志发生更改时,服务器会向所有连接的 SDK 发送更新。延迟为 200–500 毫秒。连接断开时,SDK 使用最后缓存的状态,直到通道恢复。这保证了应用程序在断开连接时使用最新的设置继续运行。
LaunchDarkly 控制面板提供用于创建和管理标志的可视化界面。面板显示每个标志的当前状态、谁在何时更改了配置的审计变更历史记录以及使用指标。可以为每个环境配置单独的规则——staging 中的标志可以 100% 启用,而 production 中的标志可以 5% 启用。
Feature flag 是一个带有规则和目标的命名开关。标志可以是布尔型、多变量型和 JSON 型。Rules 定义启用条件:例如,“为来自德国的 10% Android 12 用户启用”。Segments 按操作系统版本、地区、设备型号和任意属性对用户进行分组。
每个标志都有环境:development、staging 和 production。这允许在隔离环境中测试新功能,然后再为实际用户启用。环境规则独立配置——标志可以在 staging 中启用,而在 production 中禁用。
LaunchDarkly 为 Android、iOS、React Native 和 Flutter 提供原生 SDK。每个 SDK 需要最少的配置:SDK 密钥和用户标识符。该库自动管理连接、缓存和错误处理。
要连接,在 Application.onCreate 中创建一个 LDClient 实例。客户端接受带有移动密钥和用户上下文的配置。初始化后,应用程序通过 boolVariation 方法在代码中的任何位置调用标志变体。
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)
}
}
初始化后,通过一个方法执行标志检查。BoolVariation 根据标志规则返回值。如果 SDK 无法获取配置,则使用默认值。boolVariationDetail 方法还返回标志接受此值的原因。
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
"new-checkout-flow",
false
)
if (showNewFeature) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
A/B 测试在 LaunchDarkly 中通过多变量标志实现。每个变体分配一定比例的流量——例如,50% 的用户看到旧屏幕(变体 A),50% 看到新屏幕(变体 B)。平台记录用户,确保他们始终进入同一组。
逐步部署逐渐增加有权访问该功能的用户百分比。典型时间表:1%——第一天,5%——第二天,25%——第三天,100%——一周后。检测到错误时,立即为所有人禁用该标志。LaunchDarkly 与 Amplitude、Mixpanel 和 Google Analytics 集成,以跟踪每个变体的指标。
该平台提供内置实验系统,可自动计算变体之间差异的统计显著性。可用指标:转化率、留存率、会话数、错误和自定义事件。结果在面板中显示,并带有置信区间的可视化。实验可以在生产流量和专门的用户细分上运行。
LaunchDarkly 与分析平台的集成是另一个优势。有关标志的数据通过 Data Export API 自动发送到 Amplitude、Mixpanel、Google Analytics 或自定义数据管道。这允许创建有关每个功能对关键应用指标影响的报告。LaunchDarkly 还支持 webhooks,用于在标志状态更改时通知外部系统。
让我们来看看完整的周期:添加依赖项、初始化以及检查崩溃遥测标志。该功能应仅对测试人员激活,而不是对实际用户。适用于 Android 的 LaunchDarkly SDK 可通过 Maven Central 获取。5.x 版本支持 Kotlin Coroutines 和 Jetpack Compose,以响应式地接收标志更新。
对于 iOS 应用程序,LaunchDarkly 提供对 Swift Package Manager 和 CocoaPods 的支持。Swift SDK 使用 async/await 进行异步初始化,使用 Combine framework 订阅更改。两个 SDK(Android 和 iOS)都支持后台同步和本地存储缓存以进行离线操作。
// app/build.gradle
dependencies {
implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}
在 CrashReporter 类中,我们检查 crash-reporting-enabled 标志。如果标志已启用对于当前用户——我们开始发送崩溃报告。当服务器发生更改时,SDK 将自动获取新状态,但对于初始化,一次性检查就足够了。
class CrashReporter {
fun init() {
val client = LDClient.get()
if (client.boolVariation("crash-reporting-enabled", false)) {
Crashlytics.start()
}
}
}
成功场景:在提供商故障时立即禁用的支付流程管理、通过监控指标逐步部署 UI 更改、按细分个性化内容。根据 LaunchDarkly 官方博客,团队将错误后的恢复时间从数小时缩短到数分钟。
反模式:使用标志进行永久条件逻辑(标志是临时的)、在标志属性中存储机密、创建重叠规则。建议:部署完成后从代码中删除标志——这可以防止技术债务和代码库复杂化。另一个常见错误是将标志用作长期开关,在功能稳定后永远不会从代码中删除。
正确的标志管理策略包括每个新标志的删除计划。LaunchDarkly 提供内置工具来检测未使用的标志——如果 SDK 超过 30 天未检查其值,则该标志被视为未使用。此类标志在面板中标记,可以安全地从代码中删除。
对于只有一个团队的小型项目,LaunchDarkly 可能过于复杂——代码中的简单条件语句或 Firebase Remote Config 就足够了。选择该平台当需要复杂细分、变更审计、A/B 实验或多团队标志管理时。对于初创公司和 MVP 项目,LaunchDarkly 提供免费的 Starter 计划,对标志数量和 MAU 有限制。
LaunchDarkly 与现有工具的兼容性是一个重要的选择标准。该平台与 Jira、Slack、PagerDuty、Datadog 和其他服务通过 webhooks 和 API 集成。已经使用这些工具的团队可以获得无缝集成,而无需额外的监控基础设施和在标志状态更改时发出通知。LaunchDarkly 还支持 Terraform 提供程序,将标志作为代码管理(Flags as Code)——这允许将标志配置存储在 Git 中并在应用之前进行代码审查。
常见问题
LaunchDarkly 提供免费增值计费,对标志数量和 MAU 有限制。团队商业计划每月 150 美元起,包括无限标志、变更审计以及与 Jira 和 Slack 的集成。
该平台支持超过 40 种 SDK,包括原生 Android(Kotlin/Java)、iOS(Swift/Objective-C)、React Native 和 Flutter。所有移动 SDK 都通过 Streaming API 运行,并在本地存储中缓存。
是的,LaunchDarkly 拥有内置实验系统,具有多变量标志、流量分配和自动统计显著性计算。支持与 Amplitude、Mixpanel 和 Google Analytics 集成。
连接断开时,SDK 使用本地存储中缓存的标志值。连接恢复后,SDK 与服务器同步并应用标志的当前状态。
LaunchDarkly 提供A/B 测试、多变量标志、复杂细分、变更审计和服务器端语言的 SDK。Firebase Remote Config 更简单且免费,但不支持多变量实验和详细审计。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。