2018年/11月/16日

首页回退

那些错误

原文

我所能做的,就是和每个人谈谈我的失败经历,我倒是敢保证,如果你们都重蹈我的覆辙,那么你们也一定会跌得很惨。

——唐纳德·基奥

五个故事:

引子:某行网上银行上线那一天,我的悲惨遭遇

别人的错误1—前事不忘后事之师:台湾飞机失速坠毁

别人的错误2—对抗人的错误:401航班失事

我的错误1—做好被攻陷的准备:刚接手工作几个月,黑客入侵

别人的错误3—工具和风控:骑士资本集团的覆灭

首先是我在最后时刻才寻求公司内部资源支持,所以我们遇到线上事故的时候,一定要拿起电话召集人马,不要拖延。

其次,虽然上线前自己反复测试认为已经没有风险,但没有关注自己代码严重依赖的系统服务和第三方库。

自此之后,我非常关注“失败”,非常关注BUG、安全漏洞和投诉。

我通读了所有的系统知识库文章,经常会跑去看一看各种开源系统的Feature List和Bugfix,看看它们发布了什么特性,修复了什么缺陷。

 

这件事改变了我的人生…… 
我得到正确判断的办法,

通常是先收集各种错误判断的例子,

然后仔细考虑怎样避免得到这些下场。』

——《穷查理宝典2》查理·芒格
『我们要把别人的历史当作自己的未来,

这样,

才能知道过去人家在做什么,

我们现在应该怎么做。』

——冯仑《行在宽处》
所谓的出师其实就是把该犯的错误都犯一遍,

有人出师快其实是他试错快。

如果有人说他没有犯错误,

只能说他还没学到家,

就算现在绕开了以后迟早还是要碰到的。

——韩冰
一般人认为错误是不好的,出于本能会为错误找各种借口;

但这套方法,会把错误看成进步的契机。犯错的人要改正,没犯错的人也要自省,从而杜绝重复犯错,使整个组织,甚至整个行业都能从中获益。

一本书:黑匣子思维

这本书的作者称,航空业与医疗业对错误的态度是迥然不同的,航空业更愿意正视错误,飞行员们总体上说对自身的失误都抱着公开和坦诚的态度,部分原因是错误会导致他们自己死亡。这个行业里有强势并独立的组织专门负责对空难进行调查。失败不会被当成控诉某一位飞行员的理由,而会被视为能让所有飞行员、航空公司和管理者们学习进步的一次宝贵机会。
对于事故处理,我们遵从航天二十字诀:定位准确、机理清楚、可以复现、措施有效、举一反三。

“丰田生产体系”与航空航天的这个原则是相通的,如果对待错误的态度是开诚布公的,那么整套系统就能从中学习,能取得进步。

我们坚持每错必查、错了又错就整改、每错必写,用身体力行告诉每一个新员工直面错误、公开技术细节、分享给所有人,长此以往,每一次事故都会变为我们的财富。
放眼一年、三年、五年、十年,你的系统一定会被人攻陷,你的数据一定会被人拿走,往往是几个初中级安全漏洞,再加上一次社会工程学,就能成功渗透,并不需要高危漏洞。所以要做好灾难即将来临的准备,即使被攻陷,被拿走,也不要给商户和用户带来二次伤害。

骑士资本集团在整个事件中犯下的错误有哪些呢?

1,Power Peg 模块在停用时并没有从系统中删除,而是保留在系统里成为僵尸程序。

2,运维工程师手工部署,没有交叉验证,操作重大失误。

3,他们的风险管理完全是事后管理,缺乏事前控制。虽然对公司的敞口设置了限额,但超过限额时交易系统无任何限制。

4,他们的风险管理工具PMON,是一个事后的风险管理工具,完全依赖于人工监控。当交易量较大时,该系统还会有延迟,产生错误的报告。所以在灾难发生的时候,业务人员没有快速定位到敞口的来源,也没有意识到问题的严重性。

点题:

1,工具:假定人的错误是不可避免的,上线部署就应该是自动化的,而且是可重复的过程,尽量排除人为因素的干扰。如果你常年靠手动发布,总有一天会大难临头。

2.风控:你的业务保障平台,你的风控管理系统,是你的最重要的伙伴,不要轻视它,在关键时刻,它会救你的命。