突如其来的事故让人猝不及防,一天早上合伙人突然电话我,萌萌,线上出事故了,我们把客户的结算标记改成我们自己的了!我听完也异常震惊,立即电话后端、桌面端、前端的负责同学,让他们立即查证;我也即刻赶往公司,路上大致梳理了一下思路,这个事故大致持续的时间、波及的用户、对客户可能造成的损失;在到公司之前前端和后端同学给我了反馈,前端一段测试代码凌晨发到线上了,反馈之前已经回滚处理了。我一赶到公司,负责业务的合伙人就面色沉重的对我说,萌萌,这个问题严重了,对我们口碑造成了恶劣影响,现在线上已经各种负面消息了(原话记不清了,大意应该比这个更严重)。
我们立即召开了合伙人会议,同步相关信息。现状比我预想的要严重,严重的问题在于由于上个Q我们意外的成功以及对于原有生态略带侵略性的搅局,让我们的竞争对手对我们充满敌意,日常除了技术性的攻击还有不曾停歇的恶意宣传,让我们对于自己的品牌和声誉小心翼翼,如履薄冰,而这次事故,正好授人以柄。线上对于我们的工具产品偷用户订单,篡改用户信息、收益的宣传在圈内已经铺天盖地,我能体会业务合伙人当时的压力和心境。会议讨论了应急响应方案:
1、产品关键位置公告道歉,并提出赔偿方案;
2、整理事故期内所有用户的损失;
3、安排赔偿事宜;
会议上争论的主要是两点,该如何应对这次危机;因为事故由技术引发,如何处理,今后如何避免。由于外界由此引发的恶意攻击很多,对于现阶段的影响非常,我们把它定性为影响到公司生死的重大事故,如果要按事故层级来定义的话,我想当时我们是把它定为P0了,虽然后续我们也经历了不少事故,但这次事故对于公司发展阶段的意义深远,这也可以说我们第一次真正面对生存危机。对于如何应对,我们有不同的意见,对于公开道歉、赔偿方案大家并无异议,我的意见是这次事故即是危机也是我们成长的机会,是我们危机处理的考验,我希望除了道歉,赔偿,在各个渠道尽可能的和我们的客户沟通,降低用户流失的风险,也希望我们向大家反馈在我们的产品上线以来我们为了保障质量所做的各种努力,包括我们不断在遭受恶意的系统攻击,我们为大家提供的安全防护,在这点上我们的业务负责人认为事故就是事故,我们要做的是我们的处理和诚意的道歉,如何能争取到用户的认可,多说其他可能适得其反,大家看问题的视角不同,但最后大家达成一致,我们只道歉、赔偿。
我知道这样给整个技术团队带来的压力巨大,特别是事故导火索的前端同学,而这一切都是我要承担和应对的。讨论的第二个焦点其实就是我这边了,因为我刚刚接手技术团队,大家都看着我要怎样处理,未来怎样避免如此的危机。我说了我的意见,这次事故其实是整个开发流程不规范,我们前期业务不断迭代试错带来的坑,这样的事故不是一个工程师能承担的,这次事故我承担事故责任,自罚一个月的薪资;技术层面梳理前端开发流程,后端全面检查涉及用户核心标记,重构相关模块,明确我们的核心功能的测试开发模式。
会议结束后,我们召开了全员会,向大家同步了这次事故、影响以及我们合伙人团队的处理结果,我们尽量淡化了涉事同学的问题,以免将压力传导到一线的工程师层面。接下来我的事很多,当我重新梳理了前端的开发流程后,发现了不少问题:没有统一的测试环境,之前前端都是各测各的,而且基本是本地;上线比较随意,极少Double Check;为了快速完成功能,前端写了不少本地变量,这在探索性的业务阶段不能说不行,但是后果就是隐患太大,这次事故就是这个触发的;核心模块没有从后端获取,自己直接就写了。梳理下来,和前后端、桌面端的同学一起开了个会:
1、汇总因为这次事故波及到的用户信息;
2、汇总事故期间我们新增的订单数据,所有新增订单全部作为补偿订单的基础提供给业务方制定补偿方案;
3、搜索前端及桌面端所有涉及用户标记的模块,全部迁移到后端;
4、后端全面检查用户标记相关代码,抽象成独立模块;
5、前端、桌面端开发流程和后端统一持续集成发布;
因为这件事,我在团队内全面推动阿里云云效的应用,尽管当时云效主要面向Java等强类型语言的持续集成,不过在我们和云效团队的配合下,把我们的系统整体上迁移到云效了。当时我们的同学也有不少抵触的,但是我还是强行推进了。我们也发现了一些问题,当时云效整体部署的情况还没有现在这么完善,我记得打包后的代码要上传到北京的部署中心,然后再从北京节点下载到杭州的部署节点,这点让我们非常尴尬,而且当时两个节点之间的上传下载速度还不理想,我没有去了解细节了,导致我们的发布时间要比原来的简单部署慢了近10分钟,后来和云效的同学现场沟通曲折解决了(我印象中是中间上传下载的过程我们短路处理了,不过包还是要上传到北京的中心节点)。
这次危机对我们合伙人对我都是一次考验,虽然有很多细节还值得探讨,但是我们依然艰难的度过了,对外我们向我们的用户、客户表明了我们的诚意以及改进,而内部我收获了团队的团结,我也收获了一个不错的前端负责人,这是后话。
Q3对我们来说,几乎就是忙于应对:微信封杀,友商攻击,事故应对;最终这个Q的目标我们没能完成,甚至我们都没有在团队内宣布结果,低调处理了。而这一切,视乎还并没有结束,更大的危机还在等待着我们……(未完待续)