Architecture “a”是什么;功能标志“;?

Architecture “a”是什么;功能标志“;?,architecture,scalability,Architecture,Scalability,此处提到功能标志: ,“5.缺少功能标志” 功能标志究竟是什么?功能标志(或)是在以下位置轻松打开/关闭应用程序的功能(子部分): 可能通过重新部署,或者 一些内部页面,可在其中实时切换页面/功能 我想这里的例子是,如果你需要,比如说,如果负载太高,减少db查询,那么使用控件来减少功能集是很方便的 不过,您可能希望使用此功能—其中一个主要功能是启用:将内容推入生产/现场,但在功能完成之前禁用/切换该功能。我们经常使用所谓的“开发cookie”来向开发团队显示未完成的特性。通过这种方式,我们可

此处提到功能标志:

,“5.缺少功能标志”

功能标志究竟是什么?

功能标志(或)是在以下位置轻松打开/关闭应用程序的功能(子部分):

  • 可能通过重新部署,或者
  • 一些内部页面,可在其中实时切换页面/功能
我想这里的例子是,如果你需要,比如说,如果负载太高,减少db查询,那么使用控件来减少功能集是很方便的

不过,您可能希望使用此功能—其中一个主要功能是启用:将内容推入生产/现场,但在功能完成之前禁用/切换该功能。我们经常使用所谓的“开发cookie”来向开发团队显示未完成的特性。通过这种方式,我们可以在多个版本/部署中测试部分完成的生产工作(哦,是的!有更好的集成吗?),然后再“不处理”(完成)它并使其对公众可见

这里有一个简单的软件包,可以帮助您在ASP.NETMVC领域做到这一点:(完全公开:我是作者)

福勒也有自己的想法

。支持基于主线/干线的策略,在本文中称为“”

强调您可能需要一些此基础架构的原因和条件。记住,你可能只需要这些东西中的一部分。例如,我可能只想启用一个简单、敏捷的部署/交付工作流,因此一个简单的基础架构就足够了。如果您选择了要用A/B、队列测试和类似的控制滚转之类的方法进行充分的实验,那么您应该考虑一种分析工具(例如),它将这些数据驱动的开发方法作为一种独特的解决方案。执行上述所有操作的切换基础设施将导致膨胀和不必要的复杂性

如果你做到了这一点,那么你可能想看看我的一些功能。

功能标志(也称为功能翻转或)是根据需要启用或禁用潜在昂贵功能的开关(例如,当网站受到意外流量冲击时)。这将为您赢得一点时间,直到您扩大规模,或直到负载峰值消失


以下是。

功能标志是一种通过配置关闭应用程序某些功能的技术,无需部署新代码

特性标志在CI方案中起着关键作用,在CI方案中,特性不断被部署,但不一定“发布”到生产中

更多信息请点击此处:

--编辑:


.

我的理解是,功能标志通过决定哪些用户接收某些功能来帮助您选择功能

例如,假设您只希望测试版用户看到新功能。您将为测试版用户“切换”该功能,而您的其他用户将看不到它

LDUser user = new LDUser("user@test.com");

boolean showFeature = ldClient.toggle("your.feature.key", user, false);

if (showFeature) {
     // application code to show the feature 
 }
else {
     // the code to run if the feature is off
 }

我正在测试一些前端JS A/B测试-似乎工作得很好。您也可以查看。

功能标志、功能切换、实验和受控卷展栏是一个简单但功能强大的想法的同义词:从功能卷展栏中部署单独的代码。简单地说,这是一种推动您的功能投入生产的能力,同时在您的客户中选择谁可以看到该功能(如果有的话)

它们在一定程度上是通过计算机普及的。LinkedIn的LiX是另一个很好的例子

拥抱这个简单的想法为许多最佳实践奠定了基础,包括:

连续部署/交付-一天内将多个代码推送到生产中

主干/主线开发-应仅为拉取请求创建功能分支,而不是为长期功能开发创建

不再发布列车以使事情陷入困境

生产中的QA/Perf测试-真正的QA和性能测试是在具有生产流量的生产基础设施上进行的。不要浪费时间构建广泛的性能实验室和临时环境

实验-了解新功能如何在KPI上移动指针

在出现问题时避免修补程序或代码回滚-修补程序和代码回滚都会带来压力,需要很长时间,并且会导致更多的问题。相反,请关闭该功能或将其向下倾斜


其他人提到了开源库。完整解决方案的一个很好的例子——如Gatekeeper和LiX——是。我为Split工作。

功能标志基本上使您能够在不更改代码或发布新版本的情况下打开和关闭功能。 这是一个重要的解决方案,特别是对于移动应用程序开发人员来说,因为他们无法控制用户将其应用程序更新到新版本

有几家公司为移动应用程序开发人员提供这项服务


    • 在我的公司,我们在SaaS应用程序中引入的每个新功能都使用功能标志。除了对性能的好处外,它还允许我们逐步推出新功能——首先向高级用户介绍新功能,从他们那里获得反馈,然后即兴创作,然后才能向所有用户推出

      它还允许我们为个人用户定制产品-超级用户需要所有功能;简单的用户可能只想要基本的东西,可能会被所有强大的复杂功能弄糊涂。它还允许我们的销售团队追加销售


      当然,正如其他人所指出的,如果我们发现某个功能导致性能下降,我们可以简单地关闭该功能(对于所有客户机或导致问题的一个客户机)。

      这里有很多很好的答案,都是针对文章中流行的重要基本定义:

      它们是“允许团队在不更改代码的情况下修改系统行为”的代码片段
      if(app_settings["beta-mode"] == "true")
        showAwesomeNewGui();
      else
        sameOldSnoozeFeset();