mtonhuang / blog

博客,想法,笔记

Home Page:http://huangmiantong.cn/ (已废弃)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

小程序重大改动灰度方案

mtonhuang opened this issue · comments

小程序重大改动灰度方案

一、问题:

小程序在前后端同时改动到某个重要页面时(比如首页),基于传统的小程序更新机制,灰度覆盖时间大约是半个小时生效,无法立刻影响到所有现网用户,最差情况下是在发布之后 24 小时之内下发新版本信息到用户(期间涉及到冷启动和热启动的知识,具体可以移步小程序官网学习),可能会带来以下问题:

  • 如果前端来控制灰度进度,那么是要基于后端接口全量的情况下,在开平用uin比例来灰度,灰度方式较单一;
  • 如果后端来控制灰度进度,那么是要基于前端发布全量的情况下,期间会出现用户请求新接口报错的情况造成页面白屏;

二、方案:

涉及到重要页面的改动,遵循只做增量不做改动的原则。创建一个分发页和新业务页面,不动旧业务页面的代码。
由后端提供一个控制灰度逻辑(比如根据商户号进行灰度)的接口(比如checkState),在分发页调用checkState来判断跳往新旧业务页面。
1、后端checkState以及新业务接口全量;
2、前端全量;
3、后端根据账号(一个用户可以有多个账号)进行灰度。
4、前后端全量各项数据稳定后,根据业务需要可以del掉旧业务页面以及分发页。

三、效果:

灰度过程中虽然会牺牲200mswebview跳转的些许体验,但是分发页能保证过程中的稳定性,能更灵活地根据不同情况(比如以商户号纬度,员工号纬度等)控制灰度进度。

灰度流程图

Contributing

mtonhuang