web 应用灰度发布,业务数据一致性怎么处理呢?

2018-08-05 10:09:29 +08:00
 fe619742721

作为一名前端,受累于每次月版升级熬夜之苦,想了解一下灰度发布的前后逻辑,前端目前确定通过基于 cookie 的 nginx 转发能够实现基于账号的灰度,但涉及到后端的灰度,感觉最大的问题就是数据一致性的问题。

后端目前使用统一的业务数据库,因为业务复杂的原因字段繁多,如果后端采用灰度发布,那么对应的后端服务应该单独部署一套灰度机器,但是数据存取还是业务数据库中进行,这里就得考虑到如果新功能新增或删减字段,修改业务字段等情况的问题,如果灰度顺利不需要回滚,那么对数据库影响不大,如果灰度失败需要线上回滚,那么被修改过后的数据库要如何处理呢?必须要通过数据库脚本进行过滤清洗然后重新写入才行吗?

2784 次点击
所在节点    问与答
4 条回复
whileFalse
2018-08-05 10:32:29 +08:00
只有新增字段没有删。
你不灰度发布,把 db 搞乱也得洗啊。
fe619742721
2018-08-05 12:01:21 +08:00
@whileFalse 我们现在上线都是凌晨上线测试做全量回归,如果出现了问题会直接回滚,这样的话,用户的业务数据不会受到影响,但是如果灰度的话,必然会有部分用户使用灰度版本产生业务数据差异,所以从目前灰度的方案来看,使用统一数据库的前提下似乎也没有好的处理办法了是吗?只能从功能代码,数据库字段设计上考虑,避免灰度失败带来的数据差异影响了
whileFalse
2018-08-05 15:45:33 +08:00
@fe619742721 你们代码正式上线之前测几轮?
先在 dev、qa 测过之后,上了正式先给内部账户灰度用,内部账户数据脏了也没问题,而且过了两道之后出问题概率也很小。
不过还是要看业务形态,你们什么业务?
fe619742721
2018-08-05 16:18:08 +08:00
@whileFalse 开发自测,提测后测试全量,大概就这两轮吧,主要是做 toB 的企业服务,客户量大线上不敢出问题,真要推进做灰度的话紧急措施预案还是得有,之前就有提过要做灰度减少升级成本,也是因为数据问题搁置了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476964

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX