小程序重大改动灰度方案
mtonhuang opened this issue · comments
mtonhuang commented
小程序重大改动灰度方案
一、问题:
小程序在前后端同时改动到某个重要页面时(比如首页),基于传统的小程序更新机制,灰度覆盖时间大约是半个小时生效,无法立刻影响到所有现网用户,最差情况下是在发布之后 24 小时之内下发新版本信息到用户(期间涉及到冷启动和热启动的知识,具体可以移步小程序官网学习),可能会带来以下问题:
- 如果前端来控制灰度进度,那么是要基于后端接口全量的情况下,在开平用uin比例来灰度,灰度方式较单一;
- 如果后端来控制灰度进度,那么是要基于前端发布全量的情况下,期间会出现用户请求新接口报错的情况造成页面白屏;
二、方案:
涉及到重要页面的改动,遵循只做增量不做改动的原则。创建一个分发页和新业务页面,不动旧业务页面的代码。
由后端提供一个控制灰度逻辑(比如根据商户号进行灰度)的接口(比如checkState),在分发页调用checkState来判断跳往新旧业务页面。
1、后端checkState以及新业务接口全量;
2、前端全量;
3、后端根据账号(一个用户可以有多个账号)进行灰度。
4、前后端全量各项数据稳定后,根据业务需要可以del掉旧业务页面以及分发页。
三、效果:
灰度过程中虽然会牺牲200mswebview跳转的些许体验,但是分发页能保证过程中的稳定性,能更灵活地根据不同情况(比如以商户号纬度,员工号纬度等)控制灰度进度。
Contributing
mtonhuang