如何使功能可切换?

时间:2019-07-23 20:46:45

标签: python android ios node.js

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

例如:

var featureEnabled = featureService.isMyNewFeatureEnabled();

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

最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

现在,我们已经实施了自己的解决方案。我对此感到非常遗憾。首先,通过在包含功能标记值的服务器上具有可下载的配置JSON,这似乎是一个简单的任务。还有一个用于编辑它们的简约管理页面。 当我们想添加例外时,兼容性提高了。就像为一个用户组提供一个值,为另一个细分市场提供另一个值。所谓的A / B测试。在尝试在我们当前的解决方案中破解此功能后,我们设法说服了管理层并获得了适当的功能标记服务。

这些是我们评估过的:

答案 1 :(得分:1)

正如对该问题的评论中所述,您要查找的是“功能标志管理”(又称“功能切换管理”)​​,这些术语混合使用,但相同。功能标志确实启用了不同的模式或激活策略。您所描述的例子包括;

  • “杀死开关”,例如一种在出现问题时禁用生产中功能的简便方法
  • “发布切换”,例如将代码部署到生产中后启用功能

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

从内部开始构建此类工具非常普遍,从本质上讲很简单:只有一个简单的标志和一些if语句。您面临的挑战是一旦您依赖功能标志管理。通常,您将需要审核日志功能,适当的用户管理处理,适当的扩展,确保有限的性能影响和类似的功能。在blog post中找到了有关要考虑的功能切换最佳实践的很好的介绍。

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

答案 2 :(得分:0)

关于功能标志:What is a "feature flag"?

在stackoverflow上有一个很好的总结。