什么是功能标志?

特性标志(Feature Flags)是一种软件开发技术,允许在不更改代码的情况下修改运行时行为。它将功能发布给最终用户的时间与二进制文件的发布解耦。

特性标志像开关或切换按钮,因此它们通常被称为特性开关(Feature Toggles)特性切换(Feature Switches),因为它们具有布尔值的特性。但特性标志可以有许多不同的使用场景,且比一个简单的切换更为复杂。因此,特性标志这个术语更加合适。

特性标志允许您将新代码封装在一个特性标志后面,并将其发布到生产系统中。然后,基于特定目标受众的上下文,功能可以被启用(如图10.1所示):

image 2024 12 27 14 40 27 179
Figure 1. 图10.1 – 特性标志的工作原理

如果您有可用的持续交付(CI/CD)和一个负责基础设施的独立团队,特性标志是一种非常自然的技术。对于开发者来说,添加一个标志到代码中比改变基础设施更容易,因此,您通常会使用标志来允许测试人员执行与普通用户不同的操作,或者让一些Beta用户测试某些功能。问题在于,如果您没有明确地定义特性标志,配置通常会分散在不同的地方:配置文件、用户组、应用数据库等。明确标志的使用有助于提高团队的透明度,确保统一的方法,并支持更多高级用例,同时确保安全性和可扩展性。