当前位置: 首页 > news >正文

传媒公司网站建设思路长沙网站建设企业

传媒公司网站建设思路,长沙网站建设企业,房地产开发公司名字,建筑模板多少钱一块背景产品在新功能发布前#xff0c;可能会采取小流量测试的方式#xff0c;或者在确定方案前使用A/B测试来衡量。一般开发人员会跟运维同学合作#xff0c;通过一些现有平台切换机器或者流量来实现。本文介绍了另外一种简便的方式#xff0c;并解释了其在持续集成上的应用可能会采取小流量测试的方式或者在确定方案前使用A/B测试来衡量。一般开发人员会跟运维同学合作通过一些现有平台切换机器或者流量来实现。本文介绍了另外一种简便的方式并解释了其在持续集成上的应用同时提供了现有的开发框架供快速使用。Feature Flag VS Feature BranchesFeature Flag(又名 Feature Toggle、Flip等)是一种允许控制线上功能开启或者关闭的方式通常会采取配置文件的方式来控制。提到Feature Flag一般都会跟Feature Branches进行比较。这两个有什么关联与差别呢可以通过一个简单的示例来比较假设产品需要添加一个功能如果你在主干上进行开发那么通常的做法是在前端开发人员在界面上添加功能然后可能会有其他同学来完成后端服务、安全保障最后测试及Bug修复并发布上线。如下图所示图中有个明显的问题是主干分支上在功能测试完毕之前是不能进行发布的因为功能已经在提供在界面中必须完备之后才能发布给用户使用。当然解决方法也很简单例如我们常见的是会使用功能分支(Feature Branches)来解决。在主干上拉取一个分支然后在分支上开完测试完之后在合并到主干上这样就不会影响主干的持续发布了。如果有另外的新的功能那么同样拉取新的分支来解决。如下图这样同样存在问题如果一个功能比较复杂开发的周期较长而在此期间主干上已经多次修改代码那么等分支上开发完之后合并到主干将是一个比较麻烦的工作。你必须去处理各种冲突与其他开发人员沟通修改点。这是很多人不愿意做的。于是有人提供了新的方案来解决这个问题。例如将开发工作拆分成多个小块在各个分支上开发测试完成后及时合并到主干中并且可以先隐藏界面功能直到所有的功能开发完成之后才展现。这样每次合并的难度就小多了或者每次将主干上的修改都及时同步到分支上这样分支上开发完成之后合并到主干上就简单多了。如果发布时出现bug怎么办可能常见的是进行回滚重新上线。有什么方式既能避免分支合并的麻烦、保持主干快速迭代随时发布又能更好的控制新功能的发布、方便的进行小流量或快速回滚操作呢答案就是Feature Flag。Feature Flag允许关闭未完成的功能你可以在主干上进行迭代开发新功能即便未开发完成也不会影响发布因为它对用户是关闭的。当功能开发完成之后修改配置便可以让功能发布。这种操作甚至可以在线上进行例如代码已经发布但功能不可见你可以修改配置让功能对特定的用户(线上测试、小流量或者全量发布等)可见。如果发现新功能存在问题那么可以通过配置文件来迅速回滚而必须重新分支上线。Feature Flag原理示意图如下自的优缺点选择合适的方案而不拘泥于方式本身并没有万能的方案两种方式都有各自的优缺点。Feature Branches优点同时开发多个功能分支不会影响主干和线上代码在分支上开发新功能时不用担心对其他在开发的功能的影响现有很多持续集成系统支持分支的构建、测试、部署等缺点也很明显Martin Fowler的文章中已经做了全面的阐述分支分出去时间越长往往代码合并难度越大在一个分支中修改了函数名字可能会引入大量编译错误。这点被称为语义冲突semantic conflict为了减少语义冲突会尽量少做重构。而重构是持续改进代码质量的手段。如果在开发的过程中持续不断的存在功能分支就会阻碍代码质量的改进。一旦代码库中存在了分支也就不再是真正的持续集成了。当然你可以给每个分支建立一个对应的CI但它只能测试当前分支的正确性。如果在一个分支中修改了函数功能但是在另一个分支还是按照原来的假设在使用在合并的时候会引入bug需要大量的时间来修复这些bug。Feature Toggle优点避免了分支合并代码冲突的问题因为是基于主干的开发每次提交都在主干迭代速度明显有优势新功能的整个过程都持续集成缺点:未完成的功能可能会部署到线上如果配置有误可能将未完成的功能开启。当然可以将界面层最后开发避免过早暴露。主干上担心提交代码影响其他功能。我们可以根据需要选择合适的方案。Feature Flag在避免分支合并加快迭代上有优势另外Feature Flag除了主干开发上的支持还有什么实用功能呢下面来介绍。Feature Flag种类与应用一般Feature Flag可以分为两类见下所示发布开关在发布代码时关掉未完成的功能生存期短功能稳定就马上删除在整个开发过程中有预定义的值业务开关实现A/B测试针对特定人群发布功能尽早获得反馈针对特定条件开启或者关闭功能。例如可以设置在指定时间点开启这样新功能将按照设定自动上线下线无需手动上线适合专题等情况能线上开启或者关闭,实现快速回滚发布开关主要是为了隐藏未开发完成的功能而业务开关则可以帮助我们快速满足某些需求。例如A/B测试Feature Flag可以轻松控制展现哪个功能提升A/B测试的可维护性。我们也可以通过配置里面的逻辑让新功能针对小部分人群甚至是特定地域的人群发布尽早获取功能的反馈。甚至是可以在线上开启调试只让新功能对调试人员可见。而这些都只需要配置文件和简单的标记来实现。谁在用Feature Flag功能看起来很酷但是不是新东西有谁在用呢我可不不愿意承担风险事实上Feature Flag已经在国外互联网公司中获得广泛的使用。例如FaceBook、Google等公司使用基于主干的开发模式来持续集成开发Feature Flag是其中一个基础技术。下面这幅图展现了FaceBook开发模式转变历程,可以看到几年前facebook就开始使用Feature Toggle使用了Feature Flag关闭主干上未开发完成的功能来保证快速迭代和高频率的发布。外主干开发中推荐这样一种方式trunk作为开发主线所有开发人员完成开发后向及时向主干提交代码开发人员不允许在主干上拉取分支。在发布的时候由系统拉取分支发布主干上的bug修复及时同步到发布分支。开发人员可以本地使用git等工具进行版本管理。如下图所示然基于主干的开发模式已经成为国外的主流但分支开发并不是不该使用。使用分支不推荐的是让新功能代码在分支上长时间堆积分支应当是生存周期短的。实际应用中我们可以根据业务场景来选择是否用功能分支还是Feature Flag并且这两者可以相互结合。例如在文章前面提到的示例中可以使用分支来开发细分的子功能保持分支及时合并同时使用Feature Flag来控制功能的发布提升工作效率。最佳实践除了主干开发什么情况下选择使用Feature Flag呢下面是使用Feature Flag的一些典型场景在 UI 中隐藏或禁用新功能在应用程序中隐藏或禁用新组件对接口进行版本控制扩展接口支持组件的多个版本将新功能添加到现有应用程序增强现有应用程序中的现有功能可以看到由于Feature Flag本身是对业务功能的控制所以不适于功能大范围的改动等情况。另外使用过程中需要注意一些问题只在需要的地方创建开关。美酒虽豪不可贪杯。滥用任何技术都会出现问题。控制开关的数量。同上开关应按需使用并及时清除。开关之间代码保持独立。如果代码存在依赖就没法删除最终维护性反而变差清除发布开关和废弃代码。发布开关应当在功能稳定后删除旧代码也是。界面层最后暴露。如何实现实现这套东西复杂吗下面以php和smarty模板为例来介绍。首先需要一套控制代码逻辑的工具虽然开源的框架有在后端代码层的支持但推荐在模板层使用Feature Flag因为模板直接跟功能挂钩维护起来更加直观方便。例如我们会提供一个smarty插件让你控制相应的展现:个代码的意思是如果common模块的featureA命中则展现下面代码否则展现另外一套代码展现代码由于与功能相关所以就相当于控制了展现哪个功能。当然你也可以不用featureelse只控制功能的开启或者关闭。另外我们需要一个配置文件对应featureA的配置如下所示  {      features : {          featureA : {              type : switch,              value : on,              desc : test switch feature work or not          }      }  }featureA配置的value是on开关类型是switch。也就是说这个功能是开启的。与switch类似的可以实现多个feature类型例如抽样控制、日期控制、地域控制等代码逻辑只需要根据value的设定判断是true还是false。例如抽样类型value设置0.5那么对应的类型逻辑只需要判断随机数是否在0-0.5范围内而已。部署中我们只需要修改featureA的配置就可以控制功能的发布是不是so easy!开发框架有哪些相应的开源框架呢几乎各种语言都有相应的实现。例如FEX FIS小组提供了基于php和node.js的框架。此外还有多种语言的开源实现语言Feature Flag框架php基于smarty的Feature Flag框架NodeJs基于Node前后端解决方案Yogurt的Feature Flag框架javaTogglz.NETFeatureToggleRubyRollout、DegradePythonGargoyle、Nexus adminGroovyGrailsFeatureToggle总结Feature Flag与Feature Branches各有优势结合使用能发挥更大作用结合业务场景选择合适方案Feature Flag能支持主干开发并在控制功能发布上有独特优势参考资料采用功能切换进行软件开发使用功能开关更好地实现持续部署FeatureToggleFeature driven developmentFavor Feature Toggles over Feature BranchesWhat is Trunk Based Development?Decoupling Deployment and Release- Feature Toggles
http://www.pierceye.com/news/453925/

相关文章:

  • 网站建设制作设计优化兰州如何用织梦建网站
  • wordpress 网站禁用全屏代码百度怎么建设网站
  • 强军网网站建设北京各大网站推广服务公司
  • 西安优秀的集团门户网站建设公司网站建设中 优秀账户的标准
  • 网站建设的对比分析移动设备网站开发注意点
  • 在word上怎么做网站链接网站开发试题
  • 自己做网站新手入门淮北论坛招聘网
  • 建网站的意义大学跳蚤市场网站建设
  • 平阳做网站成都网站优化公司哪家好
  • 庆阳北京网站建设广东省建设工程执业中心网站
  • 佛山哪里有做网站的大学生文创产品设计
  • 电商网站建设运城网站图片链接怎么做的
  • 服务器建网站教程宁波网络营销推广制作
  • 微信公众号属于网站建设网站云解析域名解析
  • 网站的建设及推广在哪找可以做网站的
  • 网站经常修改好不好北京互联网公司50强
  • 知识网站有哪些h5用什么制作
  • 广州网站制作联系方式上海共有多少家企业
  • 自己建一个网站需要什么网站关键词分析工具
  • 建三江建设局网站四川省建设厅官方网站电话
  • 福建志佳建设工程发展有限公司网站vi品牌包装
  • 专业门户网站开发公司龙岩正规全网品牌营销招商
  • 网站怎么做qq微信登陆政务网站的建设时期的概述
  • 购物网站的目的和意义西安做网站xamokj
  • 厦门市建设局网站网站开发周记30篇
  • 工业园区门户网站建设方案塘沽网站开发
  • 郑州网站设计 公司驻马店市可以做网站的公司
  • 推荐盐城网站开发安陆网站开发
  • wordpress中文网站模板软件开发者路线图
  • 福清市建设局网站深圳网站制作品牌祥奔科技