背景

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

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

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

灰度发布1.0

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

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

灰度发布2.0

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

为了满足以上需求,我们在E融汇APP中,给每个功能编号,并在后台给每个功能配上开关标识。用户在打开APP时,只能看到开放的功能,关闭的功能无法看到,即使通过某个链接或者某个广告位跳转至关闭的功能,也会提示用户“该功能升级中,敬请期待”等字样。

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

计划

基于开关功能,未来可以实现很多灰度发布策略。如

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

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

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

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

如果各位有好的想法,欢迎关注我的公众号(程序员顺仔)留言讨论~

转载于:https://juejin.im/post/5c9dddb46fb9a05e55162f13

E融汇移动端灰度发布功能演进相关推荐

  1. Kubernetes 使用 Ingress-nginx 实现灰度发布功能

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  2. zuul灰度发布功能实现

    灰度发布.蓝绿发布.金丝雀发布各是什么意思,可以看这篇http://www.appadhoc.com/blog/product-release-strategy/. 基于eureka.ribbon实现 ...

  3. FinClip 9月产品小报丨灰度发布功能更新;FIDE 自定义接口 mock 功能优化

    9月底,在迎接国庆的时候,看看 FinClip 带给了大家什么最新的消息. 产品方面的相关动向

  4. Spring Cloud微服务版本灰度发布新神器

    项目地址:https://github.com/Nepxion/Discovery 强烈建议stra.fork该项目,该项目可以作为学习改造Spring Cloud组件的案例项目. Nepxion D ...

  5. 1、Nepxion Discovery:Spring Cloud灰度发布神器

    原文地址:http://dockone.io/article/8149 Nepxion Discovery是一款对Spring Cloud服务注册发现和负载均衡的增强中间件,其功能包括灰度发布(包括切 ...

  6. 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布

    简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...

  7. Apollo之灰度发布

    1.定义 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步 ...

  8. Apollo灰度发布

    定义 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用 产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩 ...

  9. dubbo灰度发布方案

    背景 目前我公司自己搭了一套发布系统,底层使用的是docker的swarm,实现了"灰度发布"功能.当开启发布灰度发布的时候,会独立启动一个容器,只允许指定百分比的流量进入到灰度容 ...

最新文章

  1. Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)
  2. page分页php,Page分页函数
  3. C语言结束输入(两种方法)
  4. 中国剩余定理(Chinese Remainder Theorem)
  5. C++学习点滴(多次调用同一个类)
  6. 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录
  7. 常用类回顾之(String类)
  8. HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线
  9. qt中使用QStringLiteral宏来实现带参数的输出
  10. 受控组件和非受控组件
  11. gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
  12. php下载apk文件源码下载,php文件下载功能简单源码示例
  13. PHP回纹判断_第四十八章 回纹考核
  14. 科创板交易规则知多少
  15. Excel查询颜色RGB值
  16. python创建一个简单的游戏
  17. 基于STM32的物联网下智能化养鱼鱼缸控制控制系统
  18. 饿了么建生鲜开放平台 买菜业务要推至全国500城
  19. LWN:GFP 标志介绍以及移除 __GFP_ATOMIC!
  20. androidstudio图片居中_Android imageView图片按比例缩放-Fun言

热门文章

  1. git stash 部分文件
  2. HBase (一) --------- HBase 简介
  3. 常用的Window Dos命令
  4. java版湛蓝的回忆_湛蓝回忆 | 假情绪love | 橙光作品
  5. 【Web前端】落地成盒?达咩之——CSS盒子模型及属性
  6. Win10搜索文件后新窗口打开
  7. Altium Designer2018下载安装及基本使用
  8. 注意力机制(Attention)
  9. 《MLB棒球创造营》:走近棒球运动·华盛顿国民队
  10. 公网IP,内网IP,动态IP,静态IP的区别