E融汇移动端灰度发布功能演进

背景

灰度发布是近两年互联网产品必备的一个基础能力,在新功能发布时,只对一小部分用户开放,经过采集、分析用户的数据与反馈,逐步扩大范围,直至向全部用户开放。前端

灰度发布能使咱们及早得到用户的意见反馈,完善产品功能,提高产品质量,让用户参与到产品的体验测试中,增强用户互动,下降产品升级所影响的用户范围。程序员

E融汇是中国银行一款外汇贵金属期权原油投资APP,其功能繁多,对价格和交易敏感,每次新功能发布都当心翼翼、心惊胆战,稍有问题,即会影响所有用户,轻则体验较差,重则带来资金损失。所以,E融汇于去年开始了灰度发布之路。测试

灰度发布1.0

最初为达到灰度测试的效果,在后台功能投产后,前端APP先不上架,由项目组人员安装新版本APP到手机上,进行功能验证。因为安装繁琐,灰度测试包流通范围不易控制,iOS的ipa安装包没法直接安装等条件限制,灰度测试人员仅限于项目组同事,线上不少场景没法覆盖(如期权交易要求帐户上必须有外币存款等)。cdn

后来,DevOps条线同事开发出移动产品持续交付平台,提升了APP产品的持续交付能力。借助该平台,项目组提交代码便可生成灰度测试包,你们只需扫描二维码便可直接安装到手机上。安装难度下降后,即可把总分行业务部门的相关同事都加入到灰度测试的范围当中,大大增强了场景的覆盖度,可达到全功能的覆盖。配合着灰度白名单的控制,能严格控制灰度测试包的流通范围和下载次数,方便管理。ip

灰度发布2.0

虽然有了持续交付平台,可是对于已经发布的版本,功能仍是对全部用户开放,若是某个监管规定要求紧急调整某项规则(对银行软件来讲很常见),没法即时关闭或下架原有功能,只能紧急发布新版本,并强制用户更新,对用户来讲是不可接收的体验。iOS版本从提交审核到发布至少须要2天时间,期间只能祈祷审核不要被拒绝。开发

为了知足以上需求,咱们在E融汇APP中,给每一个功能编号,并在后台给每一个功能配上开关标识。用户在打开APP时,只能看到开放的功能,关闭的功能没法看到,即便经过某个连接或者某个广告位跳转相当闭的功能,也会提示用户“该功能升级中,敬请期待”等字样。产品

有了功能开关以后,灰度发布就简单了。每次新功能发布时,只针对特定白名单内的用户打开该功能。同是线上同一版本,不一样的用户看到的是不一样的功能,初步实现了灰度发布功能。hash

计划

基于开关功能,将来能够实现不少灰度发布策略。如it

  • 基于用户标识的灰度发布策略:hash(userid) % 1000 <= n,则开放功能。设置不一样的n值,能够控制新功能的流量,初期能够开放千分之一的流量,逐步扩大,直至所有io

  • 基于地域的灰度发布策略:设置某个功能针对某些地域的用户开放,如上海分行的特点功能,只开放给上海的用户

  • 能够制定更加复杂的规则引擎,实现更复杂的策略

A/B测试是灰度发布的一个重要方式,咱们也会积极尝试,敬请期待~

若是各位有好的想法,欢迎关注个人公众号(程序员顺仔)留言讨论~

相关文章
相关标签/搜索