功能标志的好处
在没有使用特性标志(Feature Flags)的情况下管理功能的生命周期几乎是不可能的,但在许多其他场景中,特性标志也能为DevOps团队带来价值:
-
发布标志(Release Flags):这些标志用于在功能后面发布代码。发布标志通常会保留在代码中,直到功能完全发布。这可能需要几周或几个月。发布标志会随着每次部署或系统配置的变化而变化。这意味着它们可以通过读取配置值来轻松实现。但如果你想将发布标志用于金丝雀发布(逐步将功能暴露给更多的用户)或蓝绿部署(交换预发布和生产环境),那么它们会变得更加动态。
-
实验标志(Experimentation Flags):如果你发布多个版本的同一个功能并将其暴露给不同的受众,这就叫做A/B测试或实验。它通常用于验证或减少假设,通过衡量用户与功能版本的交互来得到某些指标。实验标志非常动态,并依赖于大量的上下文,以便为不同的目标受众提供相应的功能。
-
权限标志(Permission Flags):特性标志的一个常见用例是控制用户可以访问的内容。这可能是管理功能或仅对某些受众暴露的测试功能,或者是仅对付费客户暴露的高级功能。权限标志非常动态,通常会在代码中保持较长时间——有时会持续到应用生命周期结束。它们还暴露了较高的欺诈风险,因此必须小心使用。
-
操作标志(Operation Flags):一些标志用于应用程序的操作方面——例如,用于禁用某些功能的停止开关(kill switch),以避免它成为其他功能的瓶颈(也叫做电路断路器)。用于控制不同版本后端系统的标志也被认为是操作标志。多变体标志通常用于控制日志的详细程度或其他操作方面。
图10.3 显示了不同类型的特性标志的概览,这些标志根据它们的动态性和在系统中存在的时间进行分类:

现在我们已经了解了什么是特性标志以及它们的用途,接下来我将向你展示如何在代码中实现它们。