Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小程序重大改动灰度方案 #32

Open
mtonhuang opened this issue Apr 6, 2021 · 0 comments
Open

小程序重大改动灰度方案 #32

mtonhuang opened this issue Apr 6, 2021 · 0 comments

Comments

@mtonhuang
Copy link
Owner

mtonhuang commented Apr 6, 2021

小程序重大改动灰度方案

一、问题:

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

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

二、方案:

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

三、效果:

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

灰度流程图

Contributing

mtonhuang

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant