E融汇移动端灰度发布功能演进
背景
灰度发布是近两年互联网产品必备的一个基础能力,在新功能发布时,只对一小部分用户开放,通过采集、分析用户的数据与反馈,逐步扩大范围,直至向所有用户开放。
灰度发布能使我们及早获得用户的意见反馈,完善产品功能,提升产品质量,让用户参与到产品的体验测试中,加强用户互动,降低产品升级所影响的用户范围。
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融汇移动端灰度发布功能演进相关推荐
- Kubernetes 使用 Ingress-nginx 实现灰度发布功能
推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...
- zuul灰度发布功能实现
灰度发布.蓝绿发布.金丝雀发布各是什么意思,可以看这篇http://www.appadhoc.com/blog/product-release-strategy/. 基于eureka.ribbon实现 ...
- FinClip 9月产品小报丨灰度发布功能更新;FIDE 自定义接口 mock 功能优化
9月底,在迎接国庆的时候,看看 FinClip 带给了大家什么最新的消息. 产品方面的相关动向
- Spring Cloud微服务版本灰度发布新神器
项目地址:https://github.com/Nepxion/Discovery 强烈建议stra.fork该项目,该项目可以作为学习改造Spring Cloud组件的案例项目. Nepxion D ...
- 1、Nepxion Discovery:Spring Cloud灰度发布神器
原文地址:http://dockone.io/article/8149 Nepxion Discovery是一款对Spring Cloud服务注册发现和负载均衡的增强中间件,其功能包括灰度发布(包括切 ...
- 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...
- Apollo之灰度发布
1.定义 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步 ...
- Apollo灰度发布
定义 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用 产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩 ...
- dubbo灰度发布方案
背景 目前我公司自己搭了一套发布系统,底层使用的是docker的swarm,实现了"灰度发布"功能.当开启发布灰度发布的时候,会独立启动一个容器,只允许指定百分比的流量进入到灰度容 ...
最新文章
- Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)
- page分页php,Page分页函数
- C语言结束输入(两种方法)
- 中国剩余定理(Chinese Remainder Theorem)
- C++学习点滴(多次调用同一个类)
- 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录
- 常用类回顾之(String类)
- HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线
- qt中使用QStringLiteral宏来实现带参数的输出
- 受控组件和非受控组件
- gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
- php下载apk文件源码下载,php文件下载功能简单源码示例
- PHP回纹判断_第四十八章 回纹考核
- 科创板交易规则知多少
- Excel查询颜色RGB值
- python创建一个简单的游戏
- 基于STM32的物联网下智能化养鱼鱼缸控制控制系统
- 饿了么建生鲜开放平台 买菜业务要推至全国500城
- LWN:GFP 标志介绍以及移除 __GFP_ATOMIC!
- androidstudio图片居中_Android imageView图片按比例缩放-Fun言