船舶越快,风险越来越少。获得优化的推出,为开发人员提供免费功能标志。 建立免费账户



功能标志卷展览促销TL;博士

🚩 我们如何优化使用功能卷展栏? 方法安全,快速提供新功能。
🔒访问权限? 任何工程师都优化。 
😬风险水平? 取决于正在推出的东西。
- 测试? 单位,集成,结束到结束,以及手动(所有测试!)
一生? 短的。一旦采用功能,就会删除这些。


特征 卷展栏 是一种方法 基于行李箱的发展 我们的开发人员使用练习 连续交货。团队可以在共享集成分支(主站)中检查代码,同时允许此分支随时将部署到生产。这使工程团队能够灵活地控制他们想要发布功能而不是等待代码部署。作为功​​能标志,允许部署成为内部,工作流程决策并将代码释放到生产成为业务决策。 

虽然这种灵活性是一个很好的功能,但真正的电源有能力,以控制他们的客户群与交换机的轻松控制其特征的能力。开发团队可以选择特定的客户组,以将其功能释放到(Beta客户),或特定的观众(20%的生产)。如果该功能正在工作,他们可以将功能滚动到每个人,或者如果出现问题,则完全回滚变化,在发布该功能时最小化风险。由于这些标志用于部署永久性功能,只要采用该功能就需要删除功能标志。

我们如何优化使用功能卷展栏?

火箭发射

摄影者 spacex.

优化的工程团队几乎所有的功能 功能卷展栏。当不是这种情况时,我们确实有一些例外情况(美化代码,外部文档,内部文档,小错误修复),但我们的大部分功能都部署在功能卷展栏后面。

典型功能卷展栏的一般生命周期如下:

  1. 在技​​术设计文档阶段,开发人员和产品团队讨论:
    1. 新功能设计
    2. 回滚的风险(见下面的风险)
    3. 部署策略(分阶段推出)
    4. 删除策略&退出条件(何时何地删除此标志)
  2. 开发人员构建该功能: 
    1. 完成编码和构建功能 
    2. 将优化的特征标志添加到门将其特征
    3. 添加了对功能标志后面的新组件的单元测试
    4. 添加任何E2E测试(参见测试的以下部分)
  3. 开发人员创建了一个拉出请求并链接一个功能标志 贾拉票 对追踪和治理的公关。 JIRA票包含以下信息:
    1. 特征标志所有者
    2. 滚动的风险
    3. 有关VS OFF和IT的存储库位置的功能标志的详细信息
    4. 该标志当前的陈述(在开发,测试,推出,部署,准备被删除,删除)
  4. 然后产品使用“功能”标志部署新功能。部署通常按以下步骤进行:
    1. 一个有针对性的观众,如QA,或测试版客户组 – This is our 金丝雀试验 阶段并允许我们 在生产中测试.
    2. 增加流量 –我们开始向更广泛的客户群推出该功能。根据我们认为的风险将与我们的变化和我们变革的大小/影响有关,我们可能会选择更少的百分比(15-45%)VS更大(60-80%)。向我们的新功能发送流量允许我们检查日志记录并确保该功能在比例下正常工作。如果功能有任何错误,则此卷展栏过程会减少爆炸半径。
    3. 产品完全推出 –我们的功能现已完全部署。 
    4. 功能标志已删除 –一旦我们的退出标准(即:旗帜完全推出并在使用中使用30天,没有事件)已满足删除我们的功能标志,团队将删除此功能。有些团队使其成为“功能完整”要求的部分,以删除该标志。其他人依赖我们的 功能标志清除日 ping他们去除他们的旗帜。
样品拉出请求

样品拉出请求

谁被允许更改功能卷展栏?

在优化的情况下,多个团队彼此密切合作,因此所有工程师都可以访问所有功能推出标志(多个团队可能正在利用该标志的旗帜或观众条件)。我们确实如此审计 改变历史记录 对谁进行监督对旗帜进行了更改,并询问如果您确实进行了更改,请更新 联系Jira票 随着你的推理。这两种方法结合了在卷展栏上发生的事情来实现工程清晰度。 

使用功能卷展栏的风险等级是多少?

我们将卷展栏的风险分类为高中,介质和无规模。这些是我们分配给每个级别的定义:

  • 高的不要回滚。坏事会发生。这些是无法回滚的卷展栏,而不会卷起一些灾难性的影响。例如,我们可能有一个修改修改它的实体和后端数据存储的功能。关闭该功能可能是其实体已更改的客户,但不再有权访问后端数据存储(元素现在异常异常)。回滚通常需要一些修补功能,为特征推出给他们。
  • 中等的 –这些可以回滚,但不建议直到与工程主人讨论。根据原因,它们可能会摇曳到让旗帜退回,但会有一些反响。例如,Beta客户可以使用这些功能并删除它们将导致客户摩擦。
  • 没有 –这表示可以随时关闭标志。但是,如果有人关闭另一台工程师’S旗帜,他们必须给他们留言(在优化时,这是一个很好的措辞稀释消息,但这可能是在Jira)之后给他们一个抬头。

有趣的关闭功能标志

这些风险水平主要用于在违规标志可能导致某些服务水平中断时发生的任何工程事件。随叫随到的工程师通常会检查风险级别(高/中/无),如果它是无,它们可以立即禁用该标志。这有助于保持我们的 平均恢复时间 低于我们可以在没有送货代码的情况下解决我们的事件。

如何优化测试其部署功能卷展栏?

测试金字塔

测试金字塔的功能卷展栏(来自书籍: 自信地船舶随着逐步的交付和实验 )

优化使用测试策略的组合。在一起实施,这些使我们对特征覆盖和质量释放的高度信心:

  • 单元测试 –每个功能卷展栏都必须具有单位测试来验证每个组件。我们的单位测试很小,如果它们受到特征标志的影响,则不知道它们是否受到影响。创建的每个代码路径都有自己的独立单元测试。
  • 集成试验 –由于集成测试正在测试彼此交互的集成组合,因此我们使用模拟和存根来控制特征状态。例如,如果我们想测试对外部系统的某个API响应,我们可以将响应从Optimizely SDK中排序,以强制我们的测试到镜像功能卷展栏路径的特定状态。这使我们的测试能够以确定性的方式运行。
  • 结束到最终测试 –这些是运行最昂贵的测试。因此,我们只关注最关键的变化,我们使用自动化 观众瞄准或白名单 在我们的测试跑步者中,创建一个确定的路径以断言。 
  • 手动验证 – We use 启发式测试 确定我们需要检查的最高风险变化或路径是什么。手动验证与端到端测试非常相似,其中我们将测试人员施加到一个变异或另一个变体中。我们还向他们提供信息 优化的记录器通知侦听器 因此,它们在旗帜的行为中具有更好的可见性。

当优化删除其功能卷展栏时?

功能卷展栏旨在部署永久性的代码,一旦我们高度信心,我们部署的正常工作就会正确。对于每个功能,我们都有产品团队确定功能退出标准是什么。这里有些例子:

  • x客户数目已经开始使用没有任何主要事件的功能
  • Y的流量已经流过功能,而无需任何服务劣化
  • Z未经任何事件暴露于公众的天数

一旦出现退出标准,个人团队就会实施其特征删除策略。总的来说,作为一个工程组织,我们跟踪已将许多标志移入“准备删除”状态,并确保我们的功能卷展标志不断删除。


这是一个系列的一部分,将更多地潜入我们在这里的不同特征标志类型,以及实现它们的工程团队。下次见到你,因为我们深入了解错误修复功能标志类型。

如果您要查看开始或缩放功能标志,请查看我们的免费解决方案: 优化推出

您在贵公司使用功能推广吗?我很想听到你的经历! 推特, linkedin. 

优化X.