发布后台程序注意总结

QQ后台服务承载过亿的在线用户,即使是很小的事故也会影响大量的用户,造成极其不好的影响,而百分之八九十的事故都是由于上线发布引起的,所以要对服务上线发布足够的重视。

这里总结一些必要的规范,减少事故发生:

SVN Tag

完成代码,测试通过后,对要发布的版本按照日期打一个Tag,方便查找线上Bug时有一个对应的代码版本,另外,如果有问题回滚到之前的版本,每次发布有Tag能够很快找到之前的版本进行回滚,每一个线上存在过的版本,都应该在SVN有一个Tag与之对应。代码编译应该使用编译机,不要在自己机器上编译发布,避免有一些只能在自己机器上编译的情况,如果有需要其他同事也方便操作。

发布前代码review

发布前,尽量找熟悉相关模块的同事进行代码走读,能够在发布前查到一些自己没考虑清楚的逻辑;

上线前周知

在服务上线之前,一定要在相关的群里周知,对于比较重大的修改,甚至需要单独拉群进行知会,以便在服务出现问题的时候能够即时发现处理。同时另一方面,当自己相关的模块有比较重要的更新,要即时关注自己服务的视图,即时得知问题;

发布时间

发布出现事故,时常是相关模块最先感知,或者需要相关模块协助定位并解决问题。这就需要在上班时间进行发布,上午10:00到11:30,下午2:00到5:00,周五及节假日前一天尽量避免发布;

灰度发布

发布过程中先发布一台机器进行灰度,尽量挑选自己用户所在的机器,这样能够验证线上服务是否正常。发布一台机器以后,需要即时关注日志、单机视图和进程是否有core,视图包括全部属性,不能只看重要属性,查看是否有非预期的错误日志输出,单机视图各项上报是否有异常变化。同时验证线上功能是否正常。

对于一些比较重大的改动,可能的情况下,尽量保留新通道和旧通道,通过染色号码和号段进行灰度,这样出现情况可以快速通过修改配置禁用新逻辑。

发布过程中

发布过程中间隔一段时间需要关注一下视图变化情况,凡是同比图出现异常变动,都需要查找原因,事故的表象往往就是不起眼的视图变化。

发布后

发布结束后,以及发布当天下班前,通览一遍视图,确保各项指标正常。

出现问题

发布过程中出现异常情况,即使不是发布引起的,也要第一时间暂停发布,确定没有问题后方可继续发布,出现异常情况短时间无法确定产生原因,要第一时间知会Leader及导师,并在Leader建议下尝试回滚和问题定位。

回滚后

如遇到回滚,回滚时不应该放松警惕,应该同发布一样,逐步灰度回滚,并观察单机视图,日志,检查进程是否存在core,之前的异常问题是否已经解决等。回滚后定时检查视图,查看是否存在其他异常。

另外,对于leader,在新人前几次发布需要按照步骤手把手发布,一个新人对发布的态度,往往是由前几次发布所决定,只要开始没有按照规范发布,以后的发布就会很潦草,所以要从一开始养成良好的发布习惯。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计