什么是“特征标志”?
Highscalability在这里提到function标志:
什么是function标志?
谢谢
“function标志”(或function切换 )是能够轻松打开/closures应用程序的function(子部分):
- 也许通过重新部署,或者
- 一些页面/function可以切换的内部页面。
我想这里的例子是,如果你需要减lessfunction集,比如减less数据库查询(如果负载太高),那么让控制减lessfunction是很方便的。
有许多其他原因可以使用这种方式,其中一个主要方式是实现持续交付 :将事物推送到生产/现场,但仍然禁用/切换function,直到完成。 我们经常使用我们所说的“dev cookie”来向开发团队展示未完成的function。 通过这种方式,我们可以在“解除”(完成)之前testing部分完成的生产工作(噢!是否有更好的集成?)在多次发布/部署之前,公众可以看到它们。
这里有一个简单的包,可以帮助你在ASP.NET MVC的土地上做到这一点: https : //github.com/cottsak/DevCookie (完全披露:我是作者)
福勒还有一个比上面链接更多的文章更多的细节 。
Adil的回答强调,有很多条款和原因可能会导致您需要某些基础架构。 请记住,您可能只需要这些东西中的一部分。 例如,我可能只想启用一个简单而灵活的部署/交付工作stream程,因此一个简单的基础架构就足够了。 如果您随后select您希望进行全面的A / B 启动实验,队列testing以及受控推出等内容,那么您应该考虑一个分析工具(如堆 ),以便将这些数据驱动的开发方法作为独特的解决scheme。 完成以上所有操作的切换基础结构将导致膨胀和不必要的复杂性。
特征标志是一种通过configurationclosures应用程序的某些function而不需要部署新代码的技术。
特征标志在CIscheme中扮演重要angular色,其中特征不断地被部署,但不一定“发布”到生产中。
更多信息:
- http://code.flickr.com/blog/2009/12/02/flipping-out/
- http://techblog.outbrain.com/tag/feature-flags/
– 编辑:
特征标志java的实现 。
function标志,function切换,实验和控制卷展栏是一个简单但function强大的概念的同义词:独立代码从function部署中部署。 简而言之,就是能够将您的function提交到生产中,同时select您的客户中的哪些人(如果有的话)能够看到该function。
他们被Facebook的关守部分推广。 LinkedIn的LiX是另一个很好的例子。
拥抱这个简单的想法奠定了许多最佳实践的基础,其中包括:
连续部署/交付 – 多个代码在一天内推进生产。
中继线/主线开发 – function分支只能用于拉取请求,而不能用于长时间的function开发。
没有更多的释放火车陷入困境。
生产中的QA / Perftesting – 真正的QA和性能testing是基于生产stream量的生产基础设施。 不要浪费时间build立广泛的性能实验室和临时环境。
实验 – 了解新function如何在您的KPI上移动针头。
发生问题时避免修补程序或代码回滚 – 修补程序和代码回滚都是有压力的,需要很长时间,并导致更多的问题。 相反,请closures此function或将其closures。
其他人提到了开源库。 像Gatekeeper和LiX这样的完整解决scheme的一个很好的例子就是Split 。 我为斯普利特工作。
function标志(也称为function翻转或function切换 )是一种开关,用于根据需要启用或禁用潜在的昂贵function(例如,当某个网站受到意外stream量攻击时)。 这会给你一点时间,直到你放大,或者直到负载峰值消失。
这里是SWIG文档的一个例子 。
我的理解是function标志通过决定哪些用户接收某些function来帮助您selectfunction。
例如,假设您只希望您的testing版用户看到新function。 您可以为testing版用户“切换”该function,而其他用户则不会看到该function。
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 }
我正在testingLaunchDarkly的一些前端JS A / Btesting的function标志 – 似乎运行良好。 您还可以查看此网站的function切换和function标志库 。
function标志基本上使您能够打开和closuresfunction,而无需对代码进行任何更改或发布新版本。 这是一个重要的解决scheme,尤其是对于移动应用程序开发人员,因为他们无法控制用户将应用程序更新到新版本。
有几家公司为移动应用程序开发人员提供此项服务。
- apptunnel.com
- apptimize.com
- launchdarkly.com
在我的公司,我们使用function标志来介绍我们在SaaS应用程序中引入的每个新function。 除了性能上的好处之外,它还允许我们逐步推出新function – 首先向用户介绍新function,获得用户的反馈意见,并在即将发布给所有用户之前即兴发挥。
它还使我们能够为个人用户提供定制服务 – 强大的用户需要所有function; 简单的用户可能只是想要的基本东西,可能会被所有强大的复杂function混淆。 这也使我们的销售团队能够向上销售。
当然,正如其他人指出的,如果我们发现一个function导致性能下降,我们可以简单地closures这一function(无论是对于所有客户端还是对于引起问题的客户端)。