如果功能标志出错的话( 二 )


一旦技术团队完成与其他团队的所有集成测试,确认一切无误并成功发布后,后续的团队还可能在迁移过程中使用功能标志 。一旦后续团队更改了标志状态,前序团队的代码可能会被破坏 。因此请务必确保每个人都知道各种标志的使用!\
将标志从配置文件中剥离出来并集中放置在一个用户接口中,这种做法可以让所有人获益 。这样做的最大好处在于,更改配置文件中的标志通常需要进行完整的系统发布,可能需要耗费数分钟(甚至数小时)的时间 。如果可以将标志独立于发布进行更改,整个系统即可更快速应用改动 。另外还有一个很重要的建议,需要将所有功能标志集中存储在同一个位置 。如果有五个团队分别使用了五个配置文件,这样的悲剧只能造成棘手的混乱 。\
如果客户需要通过某个标志才能访问某一功能,必须将这种情况告知客户支持人员 。客户支持人员必须能够对这种标志进行排错或开关 。而这也是功能标志的一个重大价值:如果某个功能有缺陷或导致性能缓慢,在工程部门对有问题的功能进行迭代的同时,客户支持可以轻松地将其关闭 。\
标志本身也可以促进业务\
除了可以让用户获益,销售和营销人员也可以借助功能标志,通过新功能吸引现有和潜在客户 。功能标志的终极威力在于,非技术用户也可以轻松控制标志的开关 。如果深藏于每个部署所绑定的配置文件中,标志的价值也会被埋没,因为无法实时更改,并且更改过程需要工程人员的介入 。\
就算不了解JSON或配置文件的非技术人员,也可以不依赖工程人员使用这些标志 。如果非技术用户必须开工单,等待工程师更新标志并进行发布,整个过程对所有人都是异常缓慢麻烦的 。\
理想情况下,功能标志需要集中保存在一个所有人可见的位置,并独立于代码发布过程进行控制 。当某个重要的潜在用户希望访问某一功能时,销售人员可以不求助工程师直接打开对应的标志 。当版本发布时,营销人员则可以让采访人员等人提前访问相应的功能 。\
最终,业务用户可以借助功能标志自行启用现有功能,而无须编写任何代码或求助于开发者 。\
标志的访问控制\

如果功能标志出错的话

文章插图
考虑一下功能标志的用途到底是什么,是否是为了...\
更大的能力伴随而来的是更大的责任 。这三种标志针对了截然不同的用例,应该由不同的人员负责 。在组织中不同部门可以看到并管理所有标志后,还要根据需要分配不同的权限 。需要严格避免业务用户无意中针对可能有隐患的新功能发起负载测试,或技术用户无意中为无权访问某一功能的用户启用了相关功能等情况 。\
日志记录\
如果某人可以“开启”或“关闭”某个标志,一定要明确这些人的身份!无论执行这种操作的是人类或自动化脚本,如果某个标志会导致异常行为,我们必须能明确这些行为是谁造成的,这样才能更好地解决问题并进行调试 。在面对压力的情况下做出错误的决策,这是所有人的本性,我们的大脑会权衡到底要“战斗还是逃避”,大脑额叶皮层会被荷尔蒙所淹没 。快速逃离危险的过程中这是好事,但如果需要冷静地针对复杂问题做出决策,这种情况就会造成糟糕的后果 。通过功能标志,我们可以首先将有问题的功能关闭,并在有空的时候考虑解决问题的方法 。只是不小心错误设置了三个标志,就在早晨起床前损失了五亿美元,这种悲剧到底是如何产生的?\
骑士资本( )在30分钟内损失4.65亿美元之前,曾是华尔街最大规模的高频交易商 。美国证券交易委员会针对此次事件发布了完整报告 。简而言之,他们为一个新项目重复使用了一个老的标志(错误1),本应淘汰的代码依然存在于代码库中(错误2) 。随后在启用标志后,他们八台服务器中的一台通过本应淘汰的代码快速触发了接二连三的交易 。由于在不重新部署的情况下该标志无法轻松关闭(错误3),随之而来的恐慌让问题进一步扩大 。恐慌过后,他们通过新发布的版本将所有八台服务器上的这个标志顺利关闭 。然而4.65亿美元就这样烟消云散,这一切都发生在早十点前 。其实只要避免重复使用标志并及时清理代码,骑士资本就可以避免这样的悲剧,或者就算最糟糕的情况下,可以独立于重新部署单独关闭功能标志,也可以最大程度避免损失 。\