记录一次线上App事故

记录一次线上App事故

由于公司的是社交产品,首屏上面都会有Banner图和各种公告

之前的逻辑

主播和用户看到的Banner图和公告都是一样的,不做区分

新需求

主播和用户看到的Banner和公告做区分,

数据库修改

数据库则新增了一个type字段,来做区分

修改api

根据用户类型去检索banner类型

看似以上所有步骤都没有问题,但是问题就这样发生了..

上线步骤

1.线上数据库增加type字段
2.后台添加banner数据
3.线上服务器更新api代码

如果严格按照1-2-3上线步骤,是不会出现问题的

由于上线的时候,直接执行了第3步,从而导致了App的banner显示不出来(因为检索不到数据了)

针对这种错误,有以下两种容错机制

1.根据app版本判断是否执行修改后的代码

不是特别赞成这种做法,主要是麻烦

2.给banner接口一个默认值

像banner这种接口,其实按照体验上来说,怎么都不会为空数据的..所以,我们这里可以在检索不到数据的时候,给一组默认值,或者是讲之前版本的数据查询出来做为默认值,这样就可以在上线步骤错误的情况下,保证线上不会出现问题