Feature Flags
Entrega Contínua
DevOps
Gestão de Risco
Engenharia de Software

功能标志:工具以及在公司采用之前要考虑的事项

功能标志解决了部署风险并产生了治理风险;大规模采用是一个过程决策,而不是工具决策。

功能标志:工具以及在公司采用之前要考虑的事项

功能标志是一种技术,当您发现它们时,它们看起来就像魔法,但当没有人管理它们时,它们就会变成一场噩梦。在业务规模上,两种场景之间的区别不在于工具,而在于使用它的规则。

这个承诺很诱人:将部署与发布脱钩。您可以在关闭时将代码投入生产,并在需要时为任何人打开它。它降低了每次交付的风险,允许您逐步释放并在出现问题时立即关闭。对于一家经常交付软件的公司来说,这是变革性的。

但还有另一方很少参与收养对话。功能标志解决了一种风险,即部署风险,并引入了另一种风险,即治理风险。本文的主题是针对那些决定在组织中采用此工具的人,即选择该工具是最容易的部分。困难的事情以及决定成功的因素是围绕它的过程。

功能标志为公司带来了什么

在权衡成本之前,值得公平地对待价值。在企业环境中,[功能标志0 可以实现具体降低风险的实践。

它们允许逐步发布:为 1% 的用户激活功能,观察并仅在指标保持健康时进行扩展。允许立即关闭:如果新资源导致问题,您可以将其停用,而无需匆忙再次部署它。它们允许您在生产中安全地进行测试,向特定客户公开功能,并将有关何时启动的业务决策与有关何时交付代码的技术决策分开。

对于无法承受公共失败的组织来说,这种控制是真正的风险管理资产。这就是为什么它是值得的,也是为什么值得做正确的事情。

工具类别以及成熟决策的区别

那些评估[功能标志1]工具的人基本上会找到三种路径,并且它们之间的选择是战略性的。

专用商业平台提供开箱即用的仪表板、高级分段、访问控制和审计。它们坚固耐用,节省建设成本,但经常性成本会随着规模的扩大而增加,并产生对供应商的依赖。

开源解决方案让您能够控制和降低许可成本,但将运营、维护和扩展基础设施的责任转移给您的团队。

内部构建一开始似乎很经济,但结果几乎总是很昂贵:一开始只是一个简单的交换机,随着时间的推移,变成了一个没有人计划维护的平台。

成熟的决策不会问“最好的工具是什么?”,而是“考虑到我们的规模和团队能力,我们的总成本、许可、运营和维护是多少?”。在公司中,这种计算比任何资源比较都更重要。

隐藏成本:flag 的技术债务

以下是导致大多数企业采用率下降的风险,但没有供应商强调:[功能标志2] 默默地积累技术债务。

每个标志在代码中添加一个条件路径。成功启动的功能应该删除其标志,但删除它需要工作,而且没有人优先考虑它。不久之后,代码库中就充斥着一些开关,没有人知道它们的用途、它们是否还能做任何事情、或者使用起来是否安全。

在企业规模上,有很多团队和很多flag,这成为一个严重的可维护性甚至安全问题;忘记的标志可以重新激活易受攻击的代码路径。采用之前要问的问题不仅仅是“我们如何创建标志?”,而是“我们如何确保它们被删除?”。如果没有第二个问题的答案,你就会背上一笔自行增长的债务。

治理:谁可以调用什么

在公司中,功能标志是一种可以立即更改生产中系统行为的控件。这就提出了一个较小的产品可以忽视而组织却不能忽视的治理问题。

谁可以激活标志?错误地对关键标志进行的更改可能会产生与错误部署相同的效果,而无需经过任何审查。因此,企业工具需要访问控制、审计记录,理想情况下还需要敏感标志的批准流程。

还有合规性的维度。在[LGPD3]的背景下,标志可以控制如何处理个人数据,例如连接新的收集流。谁触发了这个,以什么标准触发,不再是技术细节,而是责任。在处理敏感数据的组织中,标记治理是监管风险控制的一部分。

权衡以及何时值得采用

诚实地对待权衡是值得的。功能标志增加了测试的复杂性,现在您拥有理论上可以共存的多种标志组合。它们使系统的行为更加动态,因此更难以推理。他们需要纪律,但并非每个组织都具备这种纪律。

那么什么时候值得呢?当交付频率足够高以使每次部署的风险真实存在时,当公司出于风险或业务原因需要受控发布时,以及当随着时间的推移管理标志的流程成熟度时,它是有效的。

当组织很少交付、没有删除旧标志的纪律、或者寻求技术解决方案来解决实际上是与交付过程相关的问题时,它是无效的。功能标志放大了现有的成熟度;他们不创造它。

工具是开始,而不是解决方案

每个企业采用时都会重复的教训是相同的:将[功能标志4]视为工具决策的公司会感到失望;那些将其视为流程决策的人会获得价值。

正确的工具如果没有治理,就会成为被遗忘的开关的雷区。一个简单的工具,具有严格的创建、删除和访问控制功能,可提供真正的安全性和速度。差异从来不在于你购买的产品,而在于你围绕它建立的文化。

在比较供应商之前,定义您的组织将如何创建、管理和废弃标志。这个答案比任何资源电子表格都更有价值,并且决定了采用该答案是否会降低风险或创建新风险。

一个简单的测试有助于了解公司是否已准备好:询问今天系统中有多少个标志,有多少个标志仍在执行某些操作以及每个标志由谁负责。如果组织无法做出反应,采用更强大的工具只会加速混乱。如果可以的话,该工具将成为现有工具的倍增器。市场上可用的软件并不具备就绪性;它取决于团队在生产中控制其打开和关闭的能力。

如果您的公司正在考虑采用[功能标志5并且希望避免在定义流程之前购买工具的陷阱,那么值得讨论。博客上还有其他有关持续交付、DevOps 和风险管理的文本,深入探讨了这些要点。

另请阅读

  • [功能标志:安全发布完整指南6
  • [在生产中实施功能标记和逐步推出7
  • 【软件测试周期:早测试者(和晚测试者)的趋势和真实案例8
  • [软件测试周期:趋势和领导者快速指南9
  • [初创公司的功能标志:值得投资的工具10
  • [日常生活中的应用程序备份:将复制变为安全的最佳实践11