一、故障原因
根据故障产生的直接原因分类:
- 代码合并。前端/后端开发合并代码导致最后的故障,例如代码误删,代码被覆盖等。 此类故障如果代码合并没有严格的检查流程,加上影响的是原有的边缘功能的话,是极难发现的。
- 测试未覆盖。测试用例遗漏相关功能点的测试。如果被“改坏”点属于主干功能、业务测试范畴,还是比较容易覆盖的。但如果被“改坏”点恰恰属于原有的边缘功能,那成为“漏网之鱼”的可能性就大大提高了。
- checklist缺失。上线步骤、回滚步骤、机器重启、服务下线、机器下线、第三方联调等缺少相关checklist时,由于涉及内容往往比较复杂,上述任何一个步骤有遗漏,都可能会导致线上故障。但值得庆幸的是,如果指定相关的checklist,并让团队成员review,故障还是会大大避免的。
- 性能问题。如内存OOM、数据库慢查询SQL、消息队列阻塞等问题,往往在测试阶段,甚至上线后很长一段时间都是正常的。此类问题是最为头疼的,不仅难以上线前发现,而且造成的影响面非常大,常常服务直接down掉了。
- 第三方问题。第三方不稳定/故障导致的故障。此类问题属于“受害方”,虽然不能干涉第三方问题的发生,但在对接第三方时,应该有个基本原则:及时对方down掉