关于线上事故的一些碎碎念
12年的项目经理
在3年前的时候,我在浪潮负责一个几个亿的业务。但是系统做的很烂。
和我交接的是一个12年工作经验的项目经理。
刚入职项目经理就给我一个工作任务,让我处理XX问题。然后给了我一个文档。
我操作了一下,看不懂。
项目经理:你怎么就看不懂呢?你说说,哪个地方看不懂?
我也不知道为什么,那天就非要和项目经理对着干:我一个字都看不懂。
项目经理:那为什么我能看得懂?我对你非常的失望。
在1个周以后,用户给了一个需求,需要往生产环境写入一份数据。
这个能看得懂的项目经理就瞧不上我(这个工作应该我处理),然后他就往数据库写入了数据。
结果喜闻乐见:线上事故,给用户导出的数据差了几百万。(差了一个鱼皮公司的总资产)
然后:甲方是腾讯云的,往死里call项目经理的电话。
那个项目经理痛苦的说:我5天就睡了8个小时。你不理解我,你能不能给我分担点工作量?
问题解决
后来是怎么解决的呢,是我解决的。
项目经理他5天睡了8小时,拉着我加班。周六加班还不给加班费。
烦得要死,我说我给你定位下。花了2天时间给他定位了故障原因:他导入数据的时候用的是excel,导入错了。
导入了204条数据,这个项目经理错了15条。查一下diff就行了。
这个事情再也没让项目经理插手。
复盘
后来复盘这个线上事故的时候,他是这么说的:
- 懂业务的运维离职了,然后离职之前和他交接了一下;他不懂业务很正常
线上事故之前你可不是这么说的啊,我可记得很清楚:他看得懂、能处理,对我很失望;
等着出了线上事故的时候你立马转变态度。
我也理解他的说法:
- 你不接吧,用户投诉不处理扣绩效;处理了吧能力又不够,改了就线上事故
- 出了线上事故是想敢作敢当来着,敢作敢当直接下岗。在浪潮干了12年了,突然就没了
公司一年所有人工资也不到500W啊,你搞个500W的事故是啥意思……
我觉得在这个情况下,大概率人性是经不起考验的;
线上数据修改
后来有一次,用户要求改数据。改数据也正常业务,我立刻处理。
写sql但是没保证原子性。先改的A表后改的B表。数据迁移的时候就会出现不一致
修改的数据量很大,没法保证事务。
用户当场投诉电话就过来了。项目经理当场就把我卖了。然后就开始问责。
项目经理他懂个X的原子性,线上用户管你是在数据迁移还是什么,反正用户觉得有问题直接一个电话到项目经理那边。项目经理也不可能大包大揽,直接问责是最正常不过的。
后来,我就永远不在白天进行任何线上操作。
只要在线上进行敏感操作,用户就会出现线上恐慌;恐慌了以后就会投诉,投诉就背锅。
你线上刷数据?可以,明天。
今天不行嘛?今天不行?
很急?很急也不行。
我投诉到项目经理那边?投诉就投诉。
线上数据修改,大部分情况下都不急;但是出了问题就立刻升级。
线上问题
- 我自己导致的,把全省的机房设备都发给枣庄了,where条件没带id
- 这个环境因为某个菜鸟写的垃圾程序崩溃了,导致了整个环境1天不可用
- 在处理这个bug的时候引入了一个新的bug,导致整个环境又崩了
- 然后也不知道为什么,hadoop主节点挂了起不来,7天没修复
这玩意故障率还挺高……而且修起来都挺吓人
总结
- 默认项目经理是不懂技术的,他提的需求是有可能不可实现的;项目经理和pm说他懂业务,他懂个X的业务;出现线上事故,基本上项目经理和pm没有背锅的逻辑,都是直接分黑锅
- 宁肯得罪领导,也不能在线上环境上做敏感和不可逆的操作;付费和敏感业务。层层确认,测试环境确认,领导确认,用户确认,甲方确认。而且在晚上没人的时候进行操作,保证出了问题以后留时间余量
- 线上环境能不动就不动,线上事故出问题,之前多大功劳一笔勾销。
