3

我们有一个可在更多平台(iOS、Android 和多个后端微服务:nodeJS、Python)上使用的应用程序。当我们开发新功能并且准备就绪时,我们希望在所有平台上同时提供它。如果出现问题,我们希望将其关闭。

例如:

var featureEnabled = featureService.isMyNewFeatureEnabled();

if (featureEnabled === true) {
    // turn on my new feature
}
else {
    // use my legacy feature
}

最好的方法是什么?

4

3 回答 3

3

现在我们已经实现了自己的解决方案。我非常后悔。起初,通过在包含功能标志值的服务器上拥有可下载的配置 JSON,这似乎是一项简单的任务。还有一个简约的管理页面来编辑它们。当我们想要添加异常时会引发复杂性。就像为一个用户组提供一个价值,为另一个细分市场提供另一个价值。所谓的 A/B 测试。在尝试在我们当前的解决方案中破解此功能后,我们设法说服了管理层并获得了适当的功能标志服务。

这些是我们评估的:

于 2019-07-23T20:50:55.417 回答
1

如问题评论中所述,您正在寻找的是“功能标志管理”又名“功能切换管理”,术语混杂但相同。功能标志确实启用了不同的模式或激活策略。您所描述的就是其中的例子;

  • “终止开关”,例如在出现问题时禁用生产功能的简单方法
  • “发布切换”,例如在代码部署到生产后启用该功能

大多数功能标志管理系统将支持上述和更多的激活策略。

从内部构建这样的工具开始是很常见的,本质上它很简单:只有一个简单的标志和几个 if 语句。您的挑战是一旦您依赖于您的功能标志管理。通常您需要审计日志功能、适当的用户管理处理、适当的扩展、确保有限的性能影响和类似的功能。这篇博文中很好地介绍了要考虑的功能切换最佳实践。

有多种强大的产品可供选择,这些是前四名:

于 2019-08-12T20:09:58.690 回答
0

关于功能标志的stackoverflow上有一个很好的总结:什么是“功能标志”?

于 2019-08-13T20:45:16.420 回答