七月十九号,全球很多地方的电脑同时蓝屏。机场的自助值机、酒店前台、医院的系统都受影响。起因不是操作系统本身,是一家安全厂商推送的更新出了问题。
那天下午我们在群里复盘了三个小时,因为我们自己也在做固件和软件的远程升级,这件事跟我们直接相关。
问题出在哪,我不谈厂商细节,只谈我们能学到什么。
一、终端安全软件的权限太高了。它要能拦住病毒,就必须比病毒更深入系统底层。权限这么高的组件,一旦自己出问题,造成的破坏比它防的东西大得多。这是结构性的取舍,不是谁不小心。
二、灰度做得不够。这么大的装机量,任何变更都该按比例分批放,并且有明确的熔断指标。如果第一批几百台机器出现同一个崩溃,就该自动停掉后面的。
三、回滚要能真的滚回去。很多方案设计时觉得"最坏情况回滚就行",但蓝屏的机器根本进不了系统,远程回滚无从谈起。要在设计阶段就想清楚:设备完全起不来的时候怎么办。
那天之后,我们自己的固件升级加了两条硬规定:所有灰度必须带自动熔断,且必须有一个不依赖操作系统的本地恢复通道。这两条以前也写在流程里,但那天之后变成了强制的技术约束。