第 8 章:功能管理与实验

第七章中,我们探讨了将软件部署到生产环境的挑战和最佳实践。我们重点关注了降低风险和确保可靠性的策略,研究了渐进式部署策略,并结合了强大的回滚机制。这种方法有助于我们及早发现新软件版本中的问题,从而保障生产系统的完整性。回想一下,我们曾提到功能标志是一种重要的渐进式部署策略;功能标志是一种在软件的单个版本中以渐进方式部署单个功能的机制。在本章中,我们将继续讨论功能标志作为管理功能部署的工具。

我们还将深入探讨功能标志的另一个作用——它们如何推动实验。虽然功能标志对于降低部署风险和实现渐进式交付非常有用,但其影响远不止于此。当与人工智能结合时,它们使您能够运行实验,从而了解用户、优化功能设计理念、验证假设,并做出数据驱动的决策,从而改善产品可用性、用户参与度以及整体业务成果。

功能管理和实验管理密切相关——功能标志是控制特定功能是否启用的基本开关。功能管理系统提供了基础设施,用于控制功能何时、以何种方式、向哪些用户在何种条件下发布,而实验则利用这种控制来衡量每个变体的影响,并帮助团队做出数据驱动的决策。然而,尽管功能管理与功能标志功能强大,但它们也伴随着自身的风险和挑战,我们也将对此进行探讨。

回想一下我们在第七章中对骑士资本事件的讨论。一次错误的软件部署导致在 45 分钟内损失了 4.6 亿美元。该事件发生在骑士资本部署了其交易软件的新版本,该版本重新激活了一段休眠的遗留代码。一个配置错误的功能标志是罪魁祸首。这个旨在控制一段遗留代码激活或非激活的标志,在某些服务器上被错误地启用,而在其他服务器上则没有。这种不一致性触发了过时的逻辑,导致在不到一小时内发生了超过四百万笔错误的交易。

尽管功能标志为帮助团队大规模交付提供了巨大的潜力,但正如骑士事件所示,它们的滥用或管理不当可能会引入重大风险。有效的功能管理需要周密的规划、彻底的测试和强大的治理,以防止此类灾难发生。

人工智能正在通过使实验和实施变得更加易于访问和富有洞察力,从而改变功能管理系统。现代人工智能平台能够以通俗易懂的语言解释统计结果,根据用户模式建议最佳的发布策略,自动检测异常,甚至生成针对特定实验量身定制的实现代码。人工智能增强减少了开发人员的认知负担,同时使产品团队能够进行更复杂的实验。

在本章中,我们将探讨缺乏人工智能能力的传统自研功能管理解决方案的局限性,并探讨现代人工智能增强系统如何不仅降低风险,还充分发挥功能管理和实验作为交付高质量软件的战略工具的潜力。

现代软件开发中功能管理的好处

想象一下,我们的组织正在实施一个处理小型企业基本在线交易的支付平台。该平台支持支付处理、开票、基本分析以及与电子商务平台的集成。我们持续快速地发布新功能,以进行迭代改进并解决用户反馈。

在本节中,我们将探讨如何利用现代功能管理使我们的组织摆脱传统发布流程的束缚,从而加快支付平台发布周期。我们将讨论如何使用功能管理来支持跨团队协作和渐进式交付。最后,我们将探讨功能标志如何帮助我们管理技术债务。

利用功能标志加速开发周期

最简单地讲,功能标志允许我们部署"关闭"的新功能,从而将部署与功能发布解耦。然后,我们可以像开关一样拨动功能标志,以便稍后激活功能,而无需部署新代码。这种方法有助于我们实现主干开发。正如我们在第二章中探讨的,持续集成涉及将代码更改定期合并到共享存储库中,并通过自动化测试确保每次集成的质量。主干开发在此基础上鼓励开发人员直接向主分支(通常称为"主干")进行小而频繁的提交。

人工智能系统通过根据简单的提示生成将代码块包装在功能标志中所需的代码,从而加速向主干开发的过渡。这减少了可能不熟悉功能标志的开发人员的认知负担。用功能标志包装所有新更改可确保主分支保持稳定,即使有频繁的小型提交。

主干开发的替代方案涉及长期存在的功能分支。使用这些替代方案,集成会随着时间的推移变得越来越困难,因为当多个团队长时间在隔离的分支中工作时,他们通常只在集成期间发现代价高昂的冲突。延迟集成也削弱了持续集成实践的好处,因为问题可能在代码编写后很长时间才被检测到。主干开发被广泛认为是行业最佳实践,因为它有助于团队最大限度地减少合并冲突并保持对主分支的稳定更新流。更改合并得越频繁,主分支在任何时候都可部署的可能性就越高。这意味着更快、更可靠的发布。

在没有功能标志的情况下,难以部署主干开发所特有的小型更改,因为所有更改都会立即在生产环境中激活。这需要团队之间紧密同步发布,限制了安全合并和部署不完整功能的能力。

功能标志为这一挑战提供了优雅的解决方案。通过允许开发人员将新功能或实验性更改封装在功能标志中,他们即使功能尚未完全开发或未经过生产测试,也可以将工作提交到主分支。该标志有效地充当了看门人,确保不完整的功能在生产环境中保持关闭,直到您准备就绪。这种方法消除了对长期存在的功能分支的需求。这有助于团队保持高部署速度并验证代码库的其他方面,而不会受到功能完成时间线的阻碍。

解耦团队以减少协调开销

回到我们的支付平台,假设我们要引入一个新的“订阅支付”功能。前端团队负责更新用户界面以支持定期支付选项,后端团队必须实现用于管理订阅计划的 API,分析团队则负责跟踪订阅的用户行为。

没有功能标志,发布将成为一个紧密耦合、高风险的事件。前端团队无法在后端 API 上线之前部署更新的 UI,导致他们的工作在暂存环境中未完成。后端团队无法完全测试 API,因为前端未集成,从而延迟了工作流的验证。分析团队无法实现跟踪,因为订阅系统在生产环境中无法运行。

这种依赖关系迫使所有团队调整他们的日程并协调一次大规模、整体且有风险的发布。一个团队的任何延迟都会波及其他团队,造成瓶颈。如果发现一个关键错误,回滚功能意味着撤销所有团队的工作,通常需要重新部署整个应用程序。

使用功能标志,每个团队都可以独立工作并逐步发布其更改。前端团队可以提前部署订阅管理 UI,并将其隐藏在功能标志之后。这样做可以让他们在等待后端准备就绪时在生产环境中验证基本功能。后端团队可以实现并部署订阅 API 到生产环境,同样通过功能标志进行门控。这些 API 可以使用测试数据或有限用户进行测试,即使前端尚未上线。分析团队可以添加跟踪机制并将其部署在另一个标志之后。他们可以模拟用户流程,以确保正确收集指标,而无需向实际用户公开功能。

一旦所有组件准备就绪,功能标志将为内部测试而打开。一旦在内部验证,该功能便可以推广到生产环境。我们不仅降低了发布“订阅支付”功能的风险,还减少了跨多个团队协调的开销。借助人工智能驱动的功能标志,这种协调变得更加简化。人工智能助手可以自动建议跨团队的标志依赖关系,在可能出现冲突时发出警报,甚至根据历史部署模式推荐多团队功能发布的最优顺序。

通过分阶段推出支持渐进式交付

当我们的“订阅支付”功能准备就绪时,我们可以使用功能标志逐步推出更新。借助现代功能标志系统,我们可以应用目标标准,例如用户属性或百分比,以针对部分用户启用功能。这使我们能够通过缓慢启用功能、监控其性能并进行调整,然后在扩大受众范围之前在生产环境中进行验证。

在分阶段推出期间,我们正在关注关键指标,例如 API 错误率、响应时间、支付成功率和客户反馈。如果我们观察到异常,例如支付失败尝试激增、延迟增加或用户体验中断的报告,这些可能表明新功能引入了我们需要在继续之前调查的问题。

人工智能通过预测性目标定位和自适应控制显著增强了渐进式推出。机器学习模型分析用户行为模式并预测最佳推出策略——确定哪些用户应该首先看到某个功能以获得最大影响。在推出期间,人工智能系统可以实时监控指标并根据性能数据自动调整速度,加速成功的部署,同时快速识别和遏制有问题的部署。

如果确实发现问题,我们可以通过简单地关闭标志轻松回滚。新功能将对所有用户禁用,而无需重新部署代码库。系统会立即恢复到稳定、先前测试过的应用程序版本,从而最大限度地减少中断并为团队提供时间来调查和解决问题。

使用功能标志管理技术债务

功能标志不仅仅用于启动新功能——它们在现代化遗留代码时可以作为安全网。通过这种方式,它们更像是调光器开关,而不仅仅是开/关按钮。在重构时,您可以从旧代码逐步过渡到新实现,同时保持在出现问题时回滚的能力。

现代人工智能原生功能管理系统擅长管理这种复杂性,它们通过跟踪功能标志的使用模式并识别不再需要的标志。机器学习算法可以分析代码依赖关系、标志状态和使用指标,从而自动识别过时的标志并建议删除它们,防止技术债务的积累,同时保持系统完整性。

这在实践中通常是这样工作的:首先,您在新改进的代码实现与现有代码并行编写。然后,您创建一个功能标志,让您可以控制运行哪个版本——旧实现还是新实现。这允许您在生产环境中用少量流量测试新代码,而大多数用户继续使用经过验证的遗留代码。随着您对新实现信心的增加,您可以逐渐增加其处理的流量百分比。

这种方法对于大规模重构项目尤其有价值。您可以使用功能标志以受控波次迁移用户,而不是进行有风险的“大爆炸”替换。如果您发现任何问题,可以立即为受影响的用户恢复到旧系统,而不会扰乱整个用户群。

此模式的真正力量体现在多个组件同时进行现代化改造的复杂系统中。功能标志让您可以对现代化工作进行精细控制,让您可以在协调多个重构计划的同时保持系统稳定性。

通过实验优化结果

我们已经看到功能标志如何通过主干开发帮助我们更快地发布,并消除对协调多团队发布的需要。我们还看到如何通过渐进式功能发布降低发布风险。但是,如果我们发布的功能没有提供价值,这还有意义吗?这就是人工智能驱动的实验发挥作用的地方。

只有少数功能管理系统包含对实验的强大支持,使团队能够直接在现有应用程序基础设施中运行受控的、可测量的测试。通过结合细粒度目标定位、用户群体的随机百分比分配和自动化统计分析,这些系统允许工程和产品团队在用于功能发布的相同基础设施内无缝地进行实验。这消除了对单独的实验平台的需求,这意味着您只需要管理、监控和为单个模式编写集成代码。

精心设计的实验改变了产品开发。您不再依赖主观意见和无休止的争论,而是可以使用真实世界用户行为来指导您的决策。这样做取代了会议室猜测和无休止的争论,转而使用关于实际能够吸引用户的更改和新功能的具体数据。功能标志允许我们将用户分成不同的组(例如 A 组和 B 组),并让每个组体验不同的功能变体。例如,在一个在线支付平台中,一个组可能会看到一个“快速支付”按钮,而另一个组则会体验一个更新的“快捷结账”工作流。

通过使用功能标志,我们可以并行地实时部署这些变体,从而实现并排实验,提供版本之间的实时、直接比较。这种方法比顺序测试变体具有明显的优势,因为在顺序测试中,常规波动、季节性差异、营销活动的存在或其他因素可能会扭曲结果。通过并排实验,我们确保两个版本都受到相同的条件,以获得最可靠和最准确的见解。这些比较有助于我们自信地识别哪个版本为用户提供了最大价值,而没有顺序测试带来的噪音和不确定性。

现代人工智能极大地加速了我们的实验能力。例如,一种称为“多臂老虎机”的机器学习方法利用强化学习实时动态地将更多流量分配给表现更好的变体。例如,如果早期数据显示“快捷结账”优于“快速支付”,人工智能会自动在实验仍在运行时将更多用户路由到获胜变体,从而在测试进行期间最大化业务价值(并最小化损失)。这种自适应优化确保用户更快地体验到最佳版本,而无需等待手动分析和决策。

构建结构良好的实验

有效的实验始于一个定义明确的假设,该假设与您的业务目标保持一致,并概述了具体的、可测量的目标。例如,您可能会假设“快捷结账”工作流将通过简化支付流程来提高转化率。重要的是要记住,实验的目的不仅仅是确认您的假设——而是为了学习。与您的假设相悖的早期结果并非失败;这些实验提供了宝贵的见解,可以节省数月对一个不太可能实现其目标的项目的投资。

一个好的实验能确保结果有意义且可操作。它将功能性能与外部因素分离,以便观察到的结果可以完全归因于正在测试的更改。随着实验在团队和产品之间扩展,实验应遵循以下标准进行指导,这一点很重要。

强大、清晰的指标

每个实验都应以一个明确定义的假设和一个关键指标开始,该指标捕获成功的样子。例如,如果您正在测试“快捷结账”工作流,您的主要指标可能是从结账启动到完成的转化率。清晰的指标使实验集中,实现可衡量的进展,并防止事后合理化。同样重要的是要确定护栏指标——如错误率或客户流失率等辅助指标——它们可以标记意外的副作用,并防止您盲目优化单个数字而牺牲整体健康。

有针对性且随机化的受众

接下来,重点关注有效地定位您的实验。能够为特定用户群(例如按设备类型、位置或客户层级)定制实验至关重要。但即使在这些定制的受众中,也必须保持随机化以避免结果偏差。例如,不要在不同区域测试相同的功能而不进行随机抽样。这确保了任何观察到的差异都是由于功能本身造成的,而不是外部因素。请记住,在管理多个实验时,受众重叠成为一个问题:确保用户不会接触到可能扭曲结果的冲突实验。

具有统计显著性的样本量和实验持续时间

在运行实验之前,请使用功效分析计算最小样本量。这有助于定义实验需要运行多长时间才能得出可靠的结论。“功效不足”的实验会浪费宝贵的时间,因为样本量不足可能导致不确定或误导性的结果。仔细考虑实验持续时间:如果您的结果看起来不确定,预先定义停止标准有助于您决定何时结束实验,无论是由于达到

统计显著性还是达到性能阈值。这种方法可以防止浪费精力,并确保团队不会陷入结果模糊的无休止实验中。

实验分离

在实践中,大多数组织不会一次只运行一个实验。相反,产品不同部分可能同时有数十个实时实验,这带来了新的复杂性。团队必须考虑测试交互——尤其是当实验重叠或针对相同用户时。管理良好的实验平台通过自动跟踪曝光、在需要时强制互斥以及揭示可能的冲突来提供帮助。

AI 驱动的解释

集成到功能管理平台中的现代人工智能助手简化了团队解释实验结果的方式。人工智能无需统计专业知识来分析复杂数据,而是可以以通俗易懂的语言解释结果,阐明实验结果的影响。例如,当一个实验显示转化率增加 5% 但平均订单价值略有下降时,您可以要求人工智能解释这些权衡及其业务影响。人工智能可以同时分析多个指标,识别相关性,并建议可能不那么明显的潜在关系。

为了做出自信的产品决策,我们需要相信实验提供的见解。通过设计包含这些关键要素的实验,我们可以确保其可靠性和准确性。

将实验与渐进式交付集成

正如我们渐进式推出像“订阅支付”这样的新功能以降低风险一样,我们也可以使用功能标志以受控和安全的方式实施实验。例如,假设我们开发了一个修订的“订阅支付”工作流。这次迭代旨在简化用户体验。我们的假设是,此版本将导致订阅注册量增加。

为了验证这个假设,我们使用功能标志将用户分成两组:一组体验原始工作流,另一组则与更新版本交互。通过随机分配用户,我们确保公平比较,并收集有关关键指标(例如注册率和完成时间)的可靠数据。这种方法允许我们在真实世界条件下评估新工作流的性能,而不会将整个用户群暴露于潜在问题。

如果指标显示更新版本在驱动注册方面优于原始版本,我们可以开始逐步将其推广到更大比例的用户。这迭代过程不仅最大限度地降低了风险,而且还确保我们根据真实数据做出决策,这些数据要么证实要么驳斥了我们的假设。

建立护栏

我们讨论了在定义实验假设时识别关键指标的重要性。同样重要的是识别一个或多个护栏指标。

例如,我们曾与一家将贷款申请人与贷款提供商匹配的公司合作。贷款申请人使用注册流程提供有关他们感兴趣的贷款类型以及许多其他详细信息。该服务能够将用户与最能满足其需求的贷款提供商进行匹配。

产品团队确信重新设计的注册流程将提高贷款匹配的质量。他们首先小心翼翼地将这个实验推广到一小部分用户。在推广过程中,团队发现新流程导致了更高的流失率,即用户在完成实验之前就离开了。在这种情况下,流失率作为护栏指标帮助团队近乎实时地发现问题并采取行动。

通过分析数据,产品团队可以决定采取何种行动。他们可以缩小用户群规模或暂停更广泛的推出,这将使他们能够继续利用实验了解对目标指标的影响,同时限制副作用。或者,如果产品团队得出结论,副作用对整体业务价值过于有害,他们可以完全取消实验。

护栏指标,如上例中的流失率,与目标指标的目的不同,但对于确保实验的成功同样重要。目标指标衡量实验的主要目标——例如提高转化率、增加收入或增强用户参与度——而护栏指标则充当安全检查,用于监控意外的负面后果。用作护栏的示例指标包括跳出率、页面加载时间、客户流失率、错误率和次要产品线的转化率。

护栏指标帮助您保持对实验影响的整体视图,使您能够在主要目标进展与产品的整体健康和可靠性之间取得平衡。通过同时跟踪两者,您可以做出明智的决策,决定何时继续、暂停或调整实验。

最有效的护栏是自动化的,并无缝集成到实验流程中。现代功能管理系统可以实时监控护栏并自动执行阈值。人工智能驱动的异常检测通过使用机器学习识别可能逃脱人类注意力的微妙模式,从而显著增强护栏监控。这些系统建立基线指标行为,并在实验变体导致意外偏差时自动发出警报,甚至在它们达到预定义阈值之前。此外,人工智能可以同时关联多个指标,以检测简单的阈值监控会遗漏的复杂交互。

自动化通过减少因人为错误而无意中错过性能下降的机会来保护您的系统。使护栏成为实验过程的核心部分有助于支付平台保持敏捷性,同时保持可靠性。这种方法确保新功能可以提供价值,而不会危及用户信任。

没有成熟功能管理工具的生活

虽然功能管理系统提供了巨大的价值,但它们的有效性和成本效益取决于其实现和治理。依赖脆弱的、自研的解决方案或多个分散的实现可能会适得其反,特别是当这些基本解决方案缺乏定义现代功能管理平台的复杂人工智能功能时。对于许多团队来说,当他们的需求基本时,自然会开始构建自己的功能管理系统。然而,随着他们的需求变得越来越复杂,为添加越来越多的功能所付出的努力变得越来越难以证明是合理的。这种努力的成本和累积的技术债务最终会超过最初的任何节省。在本节中,我们将更详细地探讨自研系统的缺点。

低质量工具阻碍有效的功能标志管理

如果没有适当的工具和治理,功能标志可能会成为负资产。挑战在于基本功能标志实现与真正有效的大规模功能标志管理之间的差距。随着功能标志在团队和项目中的广泛采用,最初只关注简单切换而不进行测量的第一代解决方案,以及最初为解决简单用例而构建的内部解决方案,很快就暴露出它们的局限性。如果没有复杂管理能力,团队难以维护对其不断增长的功能标志生态系统的可见性和控制。

考虑一个典型的场景:一个开发团队使用基本的切换系统在他们的应用程序中实现了数十个功能标志。虽然这最初有效,但他们很快发现无法轻易跟踪标志所有权、监控标志状态或管理标志生命周期。系统缺乏人工智能驱动的自动化清理通知、使用跟踪或依赖映射等关键功能。结果,开发人员不知道哪些标志仍然需要,哪些应该被淘汰。代码库充满了“僵尸标志”——没有人敢删除的永久切换,因为他们无法确定该标志是否真的过时。此外,保留僵尸功能标志会限制废弃或过时的代码,这些代码可能未经过测试或维护,从而产生漏洞并增加技术债务。

专业级功能管理工具应提供全面的治理功能,包括清晰的所有权跟踪、自动化清理流程、依赖可视化和强大的访问控制。这些功能可确保功能标志随着系统复杂性的增长而保持资产,而不是负债。

对实验的最小支持限制了您的学习

自研系统通常缺乏支持高质量实验所需的先进功能。例如,虽然基本的功能标志系统可能允许您全局开启或关闭功能,但它通常不支持按地理位置、设备类型或客户层级等属性进行细粒度目标定位。同样,这些系统很少提供真正的随机百分比发布,即用户群体被随机且一致地划分,以确保实验的公平性和可靠性。诸如使用机器学习优化流量路由等高级功能,即使是最复杂的自研工具也无法实现。没有这些功能,实验可能会产生偏差或不可信的结果。

此外,现代实验系统包含用于自动化统计分析和指标跟踪的内置工具,使团队能够直接在平台内评估关键绩效指标(KPI)和护栏指标。例如,如果您正在支付平台上测试更新的结账流程,现代系统可以自动计算转化率,识别统计显著性,并标记异常情况,如错误率增加——所有这些都无需人工干预。相比之下,基本系统严重依赖外部工具和手动数据聚合,这增加了操作复杂性和错误风险。这种缺乏集成和复杂性使得团队难以有效地进行实验,最终限制了数据驱动决策的潜力。

缺乏集成会减慢您的速度

基本功能管理系统的另一个重大限制是它们缺乏与更广泛的软件开发生态系统的集成,这通常会导致更多的交接、手动步骤以及复杂、难以维护的脚本。现代功能管理系统通过与关键工具和平台的紧密集成来解决这些挑战,将功能管理无缝地嵌入到您的工作流中。

脆弱的实现分散您的团队注意力

最值得注意的是,自研系统通常无法很好地扩展。它们可能很脆弱,容易出现性能瓶颈。自研解决方案通常缺乏正式的服务水平协议(SLA)或专门的支持结构,导致正常运行时间和可靠性降低。当这些系统遇到故障时,您的团队必须投入宝贵的资源来排除故障和解决中断。

相反,一个健壮的功能管理系统可以帮助您高效可靠地交付业务价值。虽然构建内部解决方案可能是开始功能管理的一种简单方法,但这些自研系统通常难以满足高性能开发团队不断变化的需求。

当组织内不同的团队开发自己的独立功能管理实现时,挑战会成倍增加。这种碎片化在几个关键领域造成了不必要的复杂性:管理功能部署、维护安全标准以及在整个组织中建立一致的治理实践。在接下来的部分中,我们将探讨通过现代、专门构建的工具集中功能管理如何简化操作、增强安全性并改善团队之间的协作。

扩展功能管理和实验

扩展功能管理和实验需要人工智能驱动的模式来简化流程并确保一致性。在本节中,我们将探讨统一功能管理单一实现、利用智能集成减少手动工作和改善协作的优势。我们将探讨现代平台如何帮助自动化治理,同时利用您现有的身份管理基础设施。我们将了解现代系统如何确保可伸缩性。最后,我们将了解人工智能驱动的功能如何改变实验。

统一使用单一功能管理实现

我们曾与许多寻求现代化软件交付流程的大型公司合作。在这一旅程中,他们常常惊讶地发现,他们正在管理十几个或更多独立构建的自研功能管理系统,有时还混杂着部分实现的商业或开源解决方案。随着这些组织的成长,他们的软件和交付流程变得更加复杂,对集中式功能管理系统的需求变得清晰。碎片化的实现放大了配置错误、安全漏洞和不合规的风险。在可审计性至关重要的行业中,这些差距使得合规成为一场艰苦的战斗。

此外,在团队之间维护多个定制系统会带来越来越多的技术债务。更新、修补和同步这些系统所需的努力和资源会分散交付业务价值的注意力。学习如何使用多个系统对于开发人员和产品经理在团队之间切换时也是一种负担。

集中式功能管理实现为公司提供了所有环境中功能标志的单一、一致视图,并允许跨团队安全、一致的功能发布能力。通过统一平台,公司能够轻松跟踪活动标志的状态、监控其使用情况并了解功能之间的依赖关系。缺乏统一视图可能导致部署期间的错误。依赖关系可能变得混乱,错误激活或停用标志的真实风险增加,尤其是随着系统复杂性的增长。

人工智能通过自动化上下文决策制定显著增强了这些集成。当与 CI/CD 管道集成时,人工智能可以自动检测哪些功能标志受到特定代码更改的影响,有助于确保在部署前进行适当的测试。

通过智能集成减少手动步骤

现代系统通过将功能管理直接嵌入到更广泛的软件生态系统中来简化工作流。与集成开发环境(IDE)的集成允许开发人员直接在他们的编码环境中创建和管理功能标志,减少上下文切换并简化开发过程。CI/CD 管道集成使团队能够将功能标志整合到自动化构建和部署过程中,从而使功能标志成为其中的自然组成部分。

同样,与任务管理、通知和审批平台(如 Jira、Slack、Microsoft Teams 和 ServiceNow)的连接确保功能标志更改可以实时跟踪、审批和沟通,使利益相关者保持知情并减少误解。

对于基本的功能管理系统,功能标志本身的配置是导致开发人员繁重工作的主要原因。传统上,实施功能标志和实验需要开发人员仔细配置 SDK、编写目标规则并确保正确跟踪指标。现代人工智能系统解决了这个问题,因为它们可以根据您的实验配置自动生成这些实现代码。以下是它特别强大的原因:通过集成到您的 IDE 中的编码助手,人工智能了解您的实验上下文,并可以生成针对您的用例量身定制的代码。

例如,如果您已配置一个实验来测试某些地理区域中高级用户的新结账流程,人工智能可以为您选择的编程语言生成所有必要的代码。这包括:

  • 使用正确的语法和 API 密钥将功能标志注入到您的代码中
  • 实施所需的任何实验跟踪遥测
  • 处理边缘情况和错误条件

人工智能会根据您的具体需求调整其代码生成,并可以解释其实现选择。如果您需要修改生成的代码或使用不同的编程语言实现它,您可以简单地要求人工智能根据您的新要求重新生成它。这极大地缩短了从实验设计到实现的时间,同时确保了高质量的一致代码。

通过消除手动脚本编写和在这些工具之间实现自动化,内置集成创建了工作流,不仅减少了繁重的工作,还提高了协作、效率和敏捷性。

通过自动化审计跟踪和强制执行简化治理

现代功能管理系统通过自动化批准和策略执行等关键流程来简化治理,这有助于您的团队保持控制,同时减少运营开销。例如,您可以设置自动化工作流,要求对生产环境中的任何功能标志更改进行强制批准,并要求这些标志必须首先在测试环境中激活。这样做可以保护敏感环境免受意外或有风险的修改,同时在开发或暂存环境中提供更大的灵活性,在这些环境中,实验和迭代更为常见。这种强制执行的差异平衡了工作效率和生产稳定性。

这些系统中的策略还可以帮助标准化跨团队的实践。例如,可以自动强制执行一致的标志命名约定,即使标志数量增加,团队也能一目了然地理解标志的目的。此外,现代系统可以引导标志通过定义的升级生命周期,确保用于测试或实验的临时标志在不再需要时得到适当的淘汰。对于高风险更改,例如生产环境中的部署,这些系统可以强制使用黄金管道——预定义、经过验证的流程,以确保严格的测试和可靠的发布。通过自动化这些治理任务,现代系统消除了歧义,使团队与组织标准保持一致,并显著降低了可能危及可靠性或安全性的配置错误的可能性。

利用您现有的身份管理基础设施

现代功能系统支持单点登录(SSO),允许您的团队使用内部身份提供商的现有凭据,并且跨域身份管理系统(SCIM)简化了用户配置和角色分配,确保在系统之间存在正确的帐户和权限。结合 RBAC,您可以强制执行一致的治理,确保只有授权用户才能调整功能标志或修改设置。这确保每个用户在需要时拥有其角色所需的权限,不多也不少,从而减少了安全漏洞和合规性违规的可能性。SSO 和 SCIM 共同增强了治理,简化了入职和离职流程,并确保了跨团队的安全、一致的访问控制。

选择为扩展而构建的平台

现代系统以可扩展性和可靠性为核心构建。它们利用内容分发网络(CDN)和低延迟、高可用性架构的其他特性,在峰值负载下保持性能,随着用户群和系统复杂性的增加,负载会随时间显著增长。这些系统还采用推送架构,即时在各个环境中传播配置更新,从而实现近乎即时的回滚或实时目标更改等功能。通过将其他关键任务应用程序的最佳实践(如冗余和容错)结合起来,现代系统确保功能管理在重流量或意外需求高峰期间也能保持健壮和响应迅速。

总结

本章探讨了功能管理和实验如何作为现代软件交付的基础元素,使团队能够更频繁地部署代码,同时通过渐进式发布和强大的回滚能力保持稳定性。我们了解到,功能标志不仅有助于管理部署风险,还通过实验推动业务价值,使团队能够根据真实用户行为而非猜测做出数据驱动的决策。此外,我们还看到现代功能管理平台如何通过提供全面的治理、可扩展性和人工智能驱动的功能来克服自研解决方案的局限性,使实验更易于访问和富有洞察力。

当我们转向第九章中的云成本管理时,我们将探讨大规模运营的另一个关键方面:了解和优化我们在云环境中架构和运营决策的财务影响,在云环境中,实现快速功能交付和实验的灵活性必须与资源效率和成本效益保持平衡。

文章导航

独立页面

这是书籍中的独立页面。

书籍首页

评论区