美文网首页
灰度发布

灰度发布

作者: 余明旭 | 来源:发表于2018-08-21 21:16 被阅读0次

灰度发布

文档状态 [ ] 草稿 [ ] 正式发布 [ √ ]正在修改
文档版本号 v1.1
文档密级 内部资料
归属部门 武汉极目未来数据科技有限公司
产品名 极目农业植保运营系统
子系统名 地面站

更新日志:

日期 版本 变更记录 作者
2018/05/30 v1.0 编写初版 余明旭
2018/05/31 v1.1 [调整] 5、实施流程 余明旭

一、定义

按照一定策略选取部分用户,让他们先行体验新版本的应用,通过收集这部分用户对新版本应用的反馈以及对新版本功能、性能、稳定性等指标进行评估,进而决定继续放大新版本投放范围直至全量升级或回滚至老版本。

二、目的

1)规避一定的发布风险,降低产品迭代升级所影响的范围。
2)根据反馈结果,做到查漏补缺
3)快速验证产品功能稳定性
4)发现重大问题,可回滚“旧版本”

三、实现步骤

图片.png

3.1、定义目标
a. 产品一般都会有明确的产品目标,灰度发布的过程通常把产品关键数据走势是否有利于既定目标的达成作为进一步进行放量的重要参考,
b. 如果灰度产品在目标数值超过未灰度用户,且产品在性能指标方面趋于稳定,例如崩溃率控制在一个合理范围,用户访问速度也在预计范围,则考虑继续放量。

3.2、制订发布策略
包括用户规模、发布频率、功能覆盖度、风险评估与回滚策略、运营策略、新旧系统部署策略等。
简单说,就是我们要分几个批次进行用户覆盖,多长时间覆盖完成,每次间隔多长时间,评估每次发布有可能面临的风险。
如果产品发生重大问题,是否能迅速回滚到上一个版本。

3.3、选定用户
包括用户特征、用户数量、用户常用功能、用户范围等。
一般的灰度用户选择都是从本公司内测开始,其次是高级别高忠诚度的用户,然后是高活跃用户,最后再到普通用户。

3.4、系统部署
部署新系统、设定分流规则、运营数据分析、分流规则微调等。
这里的运营数据部署,建议进行实时数据统计与报表展示,便于及时观测产品数据变化,快速发现问题解决问题。

3.5、反馈收集与发布分析
用户行为分析报告、错误统计反馈情况等可形成下次灰度发布的功能改进列表。
用户的反馈,从产品自带的反馈提交获取,无论是哪个渠道,都要考量这些反馈建议的代表性。用户反馈建议的收集整理输出,每天至少一次,灰度期间的主要观测数据报告需按天发出。

3.6、产品迭代
灰度过程是推动产品快速优化的有效手段,产品经理必须客观的对待用户的反馈,分析产品目标数据、用户行为数据等,拿出合理的优化方案,推动优化开发,再进行下一轮灰度或者完整发布。

四、需求涉及流程

方案一.服务端控制

许针对部分用户推送升级通知甚至版本强制升级。
无论哪种方法都需要做好版本管理工作,分配特别的版本号以示区别。
当然,既然是做灰度,数据监控(常规数据、新特性数据、主要业务数据)
还有,灰度版最好有收回的能力,一般就是强制升级下一个正式版。

方案二.客服端+服务端控制

客户端在打包的时候,将A功能B功能都打进同一个版本的Apk包里,然后在代码层写控制显示逻辑。后台接口控制当前版本显示APK上的A/B版本的分布,可以做到指定一部分用户使用A功能,一部分用户使用B功能。
服务器端应该有相应的报表来显示A/B版本的数量和使用效果对比,根据实时数据体现,再由服务器端接口控制用户全部切换到A版本或者B版本。

五、实施流程

5.1、服务端
1)新增数据表

    a. 内测白名单表:包含测试人员、开发人员、内定协商用户、用户主动申请成员名单
    b. 内测成员表:包含内测白名单表中所有成员+投放百分比人员


图片.png
2)修改接口

  a. 获取用户信息接口:/getPersonInfo/ 返回值需新增 isTester字段(1:内测人员 0:非内测人员),通过userId查询内测成员表获取。

3)新增接口

3.1 内测资格操作接口:1 申请 0 取消
a. 申请:客户端调用接口,传参 1 后台将userId加入内测白名单表
b. 取消:客户端调用接口,传参 0 发起后将userId从内测白名单表中删除,并将内测成员表中删除。为保证灰度阶段的测试百分比,一旦取消一个内测成员,将自动从总人员中随机抽取一个加入内测成员表。

3.2 新增接口:/checkVersionV2/ 不管服务端存在大于当前版本的发布版或测试版本,都将返回给客户端,由地面站根据用户信息表所有获取的isTester参数来判断是显示测试还是正式版本提示更新。

{
    "code": "000000",
    "message": "有新版本,请更新",
    "result": {
        "release": {
            "apkSize": "18.9",
            "publishTime": 1519825101000,
            "downloadUrl": "http://whjm-test.oss-cn-beijing.aliyuncs.com/app-firmware/gs/5uno=",
            "isForceUpdate": 1,
            "versionCode": "200100000",
            "updateDetail": "[修复] 任务详情接口添加参考边信息"
        },
        "beta": {
            "apkSize": "18.9",
            "publishTime": 1519825101000,
            "downloadUrl": "http://whjm-test.oss-cn-beijing.aliyuncs.com/app-firmware/gs/5uno=",
            "isForceUpdate": 1,
            "versionCode": "200100000",
            "updateDetail": "[修复] 任务详情接口添加参考边信息"
        }
    }
}

4)完善后台apk提交界面
图片.png

内测成员表默认包行内测白名单所有成员,在开启百分比投放后投放规则如下:
1)内测人员包含在总投放百分比中
2)投放用户10%,以地面站为例,因使用角色要求必须为飞手,总账户个数1000人,具有飞手角色用户500人,内测白名单成员数20人,计算公式如下:
设定百分比投放新增成员数=(有效角色总人数 * 投放百分比) - 内测白名单成员数
3)投放用户百分比变更:
增加: 增加人数 = (有效角色总人数 * 投放百分比) - 内测成员表总人数
减少: 减少人数 = 内测成员表人数 - (有效角色总人数 * 投放百分比),例如减少人数50人,随机从内测成员表中移除,过程不包含内测白名单中成员。

5.2、客户端:

1)登陆后请求用户信息表,获取isTester值
2)客户端新增版本回退UI(仅限回退上一个正式版本)
3)新增内测资格控制按钮(在开启内测资格给出弹窗,提示内测版本)
2)调用接口:/checkVersion/ 服务端将会返回release最新版本信息和beta最新版本信息

内测资格 存在新发布版 存在新测试版 提示
true true true 显示beta版本更新提示
true false true 显示beta版本更新提示
true false false 无提示
false true true 显示release版本更新提示
false false true 无提示
false false false 无提示

六、客户端灰度发布版本规则
默认情况下版本变更:
1)版本号由9位数字组成

201005101
2_01_0051_01
主版本-次版本-小版本-灰度版本

灰度发布版本变更说明:
当前功能开发的版本为 v2.1.51,开发工作结束,需要发布第一个灰度版本

灰度次数 VersionCode VersionName 通过
1 201005101 v2.1.51_1_beta false
2 201005102 v2.1.51_2_beta false
3 201005103 v2.1.51_3_beta true

如上所示,灰度发布第三版本运行一段时间后,符合全量更新的指标,则在第三版的代码的中修改VersionName:v2.1.051_release,VersionCode不变,生成一个安装包,发布一个正式版本,供非内测用户下载使用。

VersionCode VersionName
201005103 v2.1.51_release

七.总结

1.灰度发布必须做好版本管理,一旦错乱将导致一些版本无法回收更新。
2.数据的统计,收集,分析,没有一个好的数据平台就没有办法体现灰度发布所起到的作用,随之该功能就失去了意义。
``

相关文章

  • 灰度发布用户选取

    近日接触的项目涉及到“灰度发布”的概念,这是第一次接触灰度发布,因此对灰度发布用户选取的方式十分好奇。“灰度发布(...

  • Openshift上使用Nginx Pod作灰度发布

    参考文章:使用 Nginx 实现灰度发布 什么是灰度发布 【百度百科】灰度发布(又名金丝雀发布)是指在黑与白之间,...

  • 灰度发布discovery原理源码分析及多发布分组设计与实现

    关键字:saas灰度 灰度发布 装饰模式 桥接模式 spring cloud 公司 saas 平台,灰度发布用于先...

  • 浅谈灰度发布

    什么是灰度发布 所谓灰度发布就是将软件新功能版本先发布到灰度区进行可控范围的验证,如果验证结果良好,再进行正式发布...

  • 实现一套灰度发布系统需要考虑哪些问题?

    要了解一个灰度发布系统的功能,个人觉得有必要先了解灰度发布的概念定义和灰度发布流程,从概念和流程中明确灰度的目的并...

  • 什么是灰度发布,灰度测试。

    什么是灰度发布? 灰度发布,又名金丝雀发布,或者灰度测试,是指在黑与白之间能够平滑过渡的一种发布方式。在其上可以进...

  • 灰度发布

    灰度发布:灰度很简单,发布很复杂 - 程序人生的博客 - CSDN博客 灰度发布常见一般有三种方式 - 蒋大帅-蒋...

  • 如何进行灰度发布,考虑啥

    灰度发布的定义: 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部...

  • 灰度发布

    灰度发布 更新日志: 一、定义 按照一定策略选取部分用户,让他们先行体验新版本的应用,通过收集这部分用户对新版本应...

  • 灰度发布

    所谓灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A...

网友评论

      本文标题:灰度发布

      本文链接:https://www.haomeiwen.com/subject/zxwjiftx.html