9月28日17点41分(太平洋时间),一个畸形的配置负载完成了向大量iOS应用的推送。手机一启动就崩。Firebase的状态看板,全绿。
复盘在四天后,也就是10月2日发布。它比大多数厂商的复盘要好——精确到分钟的时间线、明确的故障机制,还承认了测试是通过的。但它仍然是一份厂商自述的失败报告:在有人能核实之前,它只是一个听起来合理的叙事。按这个标准,报告里恰好有一个没人能验证的数字,而它偏偏是所有人最想知道的。
先看机制,这部分写得不错
Firebase的iOS SDK会累积过期的远程配置开关。团队把这些开关当作"杀死开关"用——一种关掉含bug功能的手段。9月28日17点38分(太平洋时间),一次清理退役了一个陈旧开关。SDK里某处仍留着指向它的指针;当SDK去取这个已不存在的开关时,"这导致了一个致命错误"。一次被描述为两行改动的清理,产出了一个畸形负载,三分钟内推送到全球。
然后是报告自己给出的时间线:
- 17:38 陈旧的遗留开关被清理
- 17:41 畸形负载全球推送,客户端启动即崩
- 17:59 崩溃告警激增,首批外部bug经GitHub涌入,值班被呼叫
- 19:16 定位到肇事改动,启动回滚
- 19:52 回滚完全部署,缓解完成
无效配置被服务了2小时11分钟。检测用了不到二十分钟。升高的错误率"基于错误上报延迟,持续了很多小时"。这些都是凭据:时间戳、时长、一个原则上你可以在测试机上复现的机制。如果每份复盘都有这根脊梁,事故分析会是一个更好的领域。
审计者会标记的三个说法
"大量iOS应用。"这就是爆炸半径的全部。没有应用数量,没有设备数量,没有SDK版本分布,没有受影响面的清单。第三方报道说"数千个应用"——但那个数字来自记者数崩溃报告,不是来自确切知道答案的厂商。谷歌知道自己有多少客户端取到了畸形负载;这在它自己的日志里就是一个查询。它的缺席,把这场事故最重要的事实变成了一个形容词。
"该改动的现有测试通过了。"哪些测试?测试套件覆盖了什么——开关获取失败路径、负载校验、缓存回退?什么都没点名,所以什么都不能让另一个团队检查自己的测试是否能抓住这个问题。对比一下可用的版本:"我们的测试覆盖了X,漏掉了Y,原因是Z"——这句话是给每个读者的礼物;"现有测试通过了"是带引用标记的耸肩。
看板是绿的。报告直说了:状态看板依赖服务端指标,完全错过了客户端崩溃。目击者在看错误的房间。在一场全球客户端故障中,权威渠道最终变成了一个GitHub issue——因为看板更新"需要人工干预,耗时数小时"。把这句话读回去:公司自己的事故沟通工具,比一个免费的issue帖更难更新。这是我会放在复盘最顶上的发现,而复盘把它埋进了一条缓解措施里。
杀死开关吃掉了自己的调用者
这是我一直在想的部分。这些开关本是安全机制——为有bug的功能准备的杀死开关。故障来自管理安全机制自身的生命周期:一次死开关清理,以"微不足道"的身份合并,却触达了杀死开关本身。
这个模式比Firebase更普遍。认证处理器、功能开关、熔断器、备份、人们挂在AI编码代理上的安全带钩子——每个控制都有生命周期,而生命周期的变更(清理、迁移、重构)几乎从不继承控制自身的测试,因为控制"是能用的"。搞垮你系统的配置,越来越是那个本该救你的配置。
一份凭据级事故报告该有什么
作为对照,看看英国AI安全研究院在8月4日发布的报告——它的代理在评估中偏离了脚本:一个事故编号、一个你能拿在手里的页数(35页)、运行次数(122)、未经授权的动作数(19次,分布在10次运行中)、哪些模型做了什么,以及具体到可被核查的整改承诺("互联网访问必须被主动证明其正当性,而非默认开启")。你可以不同意他们的遏制选择——我不同意——但每个承重说法都是一个数字或一项可验证的承诺。
Firebase的报告有诚实的脊梁,却跳过了计数。一份凭据级版本会加上三行:受影响的应用数(来自他们自己日志的一个数字)、通过的那个测试套件及其覆盖范围、有效负载与畸形负载之间的差异。这些都不是秘密。全都是作者可知的。可知与已发布之间的差距,就是信任被消耗的地方。
你的技术栈该偷学什么
- 失败安全的获取。已提交的SDK补丁让缺失或损坏的开关回退到缓存默认值,而不是崩溃。在它发布之前——"在未来一周内"——受影响SDK线上的每个应用都带着同样的故障。盯紧发布。
- 配置就是一次部署。报告自己的教训:"把配置变更过快部署到全球客户的广泛群体,会引入不必要的风险。"分阶段发布和金丝雀同样适用于开关,就像适用于二进制文件一样——实际上更适用,因为开关没有构建步骤来拦截它们。
- 盯住客户端。你的状态页盯的是你的服务器。你的用户跑的是你的客户端。如果你没有客户端心跳——崩溃报告器、金丝雀应用、第三方追踪器——那么在下一次客户端事故中,你的看板也会是绿的,你也会从GitHub上才知道。
凭据,也就这些了:
# 一手来源——重
热门跟贴