注解标记这个方法不再使用
云应用程序体系结构,微服务,CI / CD(持续集成,持续开发)管道,测试自动化以及作为代码的基础架构都是使敏捷开发和开发团队能够频繁将代码交付生产的技术。 从季度发布和复杂集成的日子到持续发展的现代时代,他们已经将软件开发带入了世界。
开发人员一直关注如何管理代码库以支持频繁发布,开发人员生产力,功能开发以及代码重构以解决技术问题 。 Github支持不同的开发和分支范式,包括功能分支 , 发布分支 , 基于主干的开发和Gitflow工作流程 。 分支策略构成了要构建的代码,因此可以用来控制将哪些功能部署到最终用户。
[ 同样在InfoWorld上:如何缩短开发发布周期 ]
尽管有关分支方法的讨论一直在进行,但人们强烈同意开发团队应避免使用长期运行的功能分支 。 准备好将功能集成到主分支中时,长时间运行的功能分支通常会创建复杂的代码合并。
什么是功能标记?
分支机构控制代码的部署,并可以调节是否部署功能。 但这只是一个总的二进制控件,可以打开和关闭功能的可用性。 与产品负责人为最终用户启用代码相比,仅使用分支来控制功能部署会限制团队控制代码何时部署的能力。
有时产品负责人和开发团队应部署功能并在运行时控制对其的访问。 例如,对特定的客户群或部分用户群进行功能测试和测试很有用。 功能标记是功能和一组工具,使开发人员能够使用控制标记包装功能。 一旦开发人员部署了功能的代码,这些标志就使他们能够切换,测试并逐步使用工具来控制该功能,以控制该功能在最终用户中是否出现以及如何出现。
功能标记可通过以受控方式缓慢打开功能来实现渐进式交付。 它还推动了实验。 可以与最终用户一起测试功能,以验证影响和体验。 Optimizely产品副总裁Jon Noronha表示:“开发团队必须快速行动,不要破坏事物。 渐进式输送有助于将断裂隔离成小块,并减小爆炸半径,从而使整个应用程序瘫痪。”
让我们回顾一下开发团队使用功能标记来驱动敏捷实验的几种方式。
1.开发和测试环境中的控制功能
由于配置设置不正确,开发或测试环境中的应用程序有多少次无意中向内部用户(或更糟糕的是向外部客户)发送了电子邮件? 是否在不应该进行的批处理作业中运行,还是在Beta测试人员测试新功能时应用程序处理了信用卡?
如果只有少数几种环境,则这些配置设置很容易启用或禁用。 但是,如果除了开发和测试环境之外,还有用于客户测试的演示环境该怎么办? 如果您希望演示环境中的应用程序将电子邮件发送到特定的域列表,或者要测试特定的付款交易,该怎么办?
另外,如果开发人员或系统工程师不应该拥有这些控件,但是您想将它们提供给可以操作环境以满足不同业务需求的业务经理,该怎么办?
一旦有许多变量,配置设置以及需要控制它们的IT外部所有者,您将无法在代码或系统级测试中进行此级别的配置。 功能标记是启用这些控件的一种方法,它可能比自定义编码管理工具更容易。
2.对用户体验,设计和语言的A / B测试
设计人员通常希望与最终用户一起测试用户界面和功能设计,以评估其易用性和影响力。 开发人员和设计人员可以通过多种方式测试不同的设计,以验证哪些设计更具吸引力。
- 想象一下使用不同的图形,按钮样式和文本实施“立即购买”号召性用语,以查看哪种方法产生的点击次数最多。
- 假设您的应用程序允许用户按多个维度对搜索结果进行排序。 设计人员可以测试不同的控件以支持多级排序,并查看哪种方法可以测试用户是否更喜欢。
- 使用户能够设置隐私控制和配置应用程序可能很棘手,尤其是确定粒度,语言和控件的级别时。 测试几种方法是一种让用户表达哪种方法更易于理解和控制其需求的方法。
3. Alpha和Beta测试新技术
有时开发人员需要测试新服务,库或软件开发套件。 有时,可用的升级包括新功能。 敏捷产品所有者和开发团队应如何知道哪些组件和功能已准备好用于关键应用程序?
消除猜测的一种方法是实现功能,使用功能标志控制它们,并将其作为alpha功能发布。 开发人员可以为一小部分内部员工启用alpha功能,以提供有关新功能的反馈。 一旦开发团队解决了任何问题或风险,产品所有者便可以为内部和外部Beta测试人员启用该功能。
4.通过缓慢增加对新功能的访问来验证性能
alpha和beta测试的一种变体是开发团队逐渐增加对一项新功能的访问,以确保其可靠性,性能和鲁棒性。
根据使用的功能标记工具,可能会有不同级别的信息和控件可用于管理增量部署。 一些高级用例包括:
- 如果检测到错误,请减少使用新功能的用户数量,直到问题解决。 错误可能来自未经充分验证的用户输入,也可能来自新的或更新的第三方服务,微服务和数据库的错误。
- 如果响应时间增加到定义的阈值以上,则降低功能的可用性。 当团队无法充分进行负载测试时,一种相关的方法包括缓慢增加新功能的可用性,直到性能得到验证。
- 另一个新兴用例是验证对机器学习和人工智能算法的响应,例如聊天机器人,自然语言界面,图像识别算法和语音控件。 可以使用高级功能标记对应用程序进行编程,以控制在测试和改进算法时启用了哪些用例。
5.按地理位置,语言或其他客户群推出功能
一个重要的考虑因素是为特定客户群打开功能。 例如,某项功能可能已准备好在美国向用户公开,但法规阻止该功能在欧盟中使用。 另一个示例是需要特定语言实现的功能。 功能标记可以启用所选的语言。 产品所有者可能希望为首次使用的用户,低风险客户或其他受众群体启用新功能。
尽管功能标志提供了多个选项来缓慢推出或配置功能的可用性,但是将它们用于这些目的很重要。 使用功能标志作为实现业务逻辑和相关参数的廉价替代品可能会导致应用程序支持问题。 同样,对标志进行分类并在不再需要它们时修剪它们也很重要。
由于当今的开发人员必须更快地测试新功能,因此功能标记提供了工具,可以进行试验并以较低的风险部署新功能。
注解标记这个方法不再使用