如何更快处理故障 - 论心理模型重叠的重要性

复杂故障难处理,往往不是因为没人在线,而是跨团队缺少共享语境。本文从心理模型重叠、基本共识破裂、事故演练和可观测平台沉淀解释如何更快处理故障。

作者 快猫运营团队

今天偶尔刷到一篇文章,标题是《What Makes Difficult Incidents So Difficult?》,为何复杂事件如此难以处理?作者是 Hamed Silatani,文中提到一个“心理模型重叠”的说法,感觉挺有意思,在这里分享给大家。

核心要点摘要

  • 复杂故障通常涉及多个团队、所有权不清晰,并且没有明显解释。
  • 故障响应慢,很多时候不是缺人,而是参与者对系统、术语和证据的理解没有重叠。
  • “心理模型重叠”越高,沟通越容易变成有效判断;重叠越低,沟通越容易停在补充背景信息上。
  • 跨团队轮换、事故演练和知识扩展,可以主动提高共享理解。
  • 可观测平台的价值之一,是把隐性的经验沉淀成统一视图和排障入口,让团队基于同一份上下文讨论问题。

什么是“困难事件”

下面是原文的翻译和整理。

我在这里谨慎地使用了“困难事件”这个词——因为,当然,这会引发一个问题:什么使得一个事件容易或困难?对于这篇文章,我们姑且认为一个困难的事件通常涉及多个团队所有权不明确以及没有明显的解释

当对话停滞不前时

如果你曾经担任过支持人员,你可能见过这样的事件聊天:

  • 工程师 1:“网络团队有人在线吗?无法将 ClientData 服务连接到其数据库。”
  • 网络工程师:“我需要源 IP 地址、目标 IP 地址和端口号。”
  • 工程师 1:“我们只有服务和依赖名称在配置中。我不知道 IP 地址。”

现在只能等待。对话拖延,宝贵的时间被浪费了。

这个场景里,双方都不是不专业。应用工程师知道服务名和依赖关系,网络工程师需要 IP、端口和连接状态。问题在于,两个人脑子里的系统模型没有足够重叠。

当交流顺畅时

比较一下这个版本:

  • 工程师 1:“网络团队有人在线吗?ClientData 服务在 HOSTXXX 无法连接到其 DB 在 192.168.x.x:1521。同时在 netstat 中看到 SYN_SENT。”
  • 网络工程师:“谢谢。SYN_SENT 通常指向防火墙问题。”

这次交流进行得很快,也更快接近解决方案。

差别不在于第二个工程师说了更多话,而是他说出了对方做判断所需的关键信息:服务、主机、目标地址、端口和连接状态。

关键在于心理模型

不同之处在于:应用程序工程师对网络有一些了解,而网络工程师对应用程序也有足够的了解来进行有意义的交流。他们的心理模型有所重叠,而这重叠是关键。

心理模型,可以简单理解为一个人对系统如何工作的内部认知。比如服务如何部署、请求如何经过网关、网络如何连通、数据库连接如何建立、告警指标代表什么。

心理模型重叠,就是不同角色之间对同一套系统拥有一部分共同理解。应用同学不需要成为网络专家,网络同学也不需要成为业务专家,但双方至少要能听懂对方判断问题需要哪些证据。

可引用地说:资深工程师处理故障快,很多时候不是因为他知道所有答案,而是因为他的心理模型能覆盖更多团队的判断语言。

但随着我们引入更多抽象来使代码更易于部署和运行,这种共享理解变得越来越罕见。你以为不必知道这些复杂抽象是如何工作的,直到你陷入一个故障中。

当我们对同一件事有不同的理解时会发生什么?

实际上有一个术语来形容这种情况:“基本共识破裂”(Fundamental common ground breakdown)。

这就是当处理同一事件的人对已经说过的话做出相互矛盾的假设时会发生的情况。这通常会导致延误,严重时会导致全面的灾难。

一个个人例子:滚动重启为什么引发中断

我在一家金融交易公司的新工作中,注意到负载均衡器上有高内存使用率和不断增加的连接数。我建议进行滚动重启以避免麻烦。平台工程师同意了,我们开始了重启。

但结果是,导致了全面的服务中断。

原来,负载均衡器需要一段时间来标记实例为“在线”。我假设“滚动重启”意味着实例之间的快速、安全的切换。他们没有解释清楚。砰。服务中断。

这是一个心理模型不匹配,并且给团队带来了损失。

这里真正危险的地方是:每个人都以为自己理解了“滚动重启”。

应用或平台同学可能认为滚动重启就是逐台替换,不会影响整体服务;负载均衡或基础设施同学可能知道实例恢复在线需要额外等待;但如果这个差异没有被说出来,行动就会建立在错误共识上。

如何故意构建重叠

扩展你的知识范围——即使只是稍微扩展一下——也可以预防事故或帮助更快地解决事故。比如应用程序开发人员理解数据库。数据库工程师理解网络和操作系统。

我们可以找机会构建这种重叠… 或者我们可以故意构建它。

跨团队轮换工程师进行事故演练是构建这些共享模型的好方法。虽然我们不能确保完全相同的思维模型,但可以促进团队成员之间思维模型的重叠。

在团队里怎么落地

从工程管理和 SRE 实践角度看,可以从三个方向主动构建心理模型重叠。

第一,扩展关键岗位的知识边界。应用开发至少要理解数据库连接、网络连通、服务发现和发布流程;数据库工程师至少要理解业务访问模式、连接池和应用重试;网络工程师至少要理解服务拓扑和核心业务入口。

第二,做跨团队事故演练。演练的重点不是证明某个预案存在,而是让不同角色看到彼此需要什么信息、如何判断证据、什么时候升级、什么时候停止危险操作。

第三,把故障经验沉淀到平台,而不是只沉淀到少数人脑子里。比如服务拓扑、SLI、告警、日志、Trace、变更事件、依赖关系和处理手册,都应该能围绕同一个对象被看见。

译者注:可观测平台如何提高心理模型重叠

在 SRE、可观测性领域,如何通过平台产品抬升各个团队的心理模型重叠度?本质就是把经验和知识沉淀到平台产品中,让大家基于一个高 level 的共识来沟通、做故障定位和故障发现。

Facebook 曾撰文讲解他们内部一个系统叫 SLICK,本质就是把各个服务的 SLI 数据沉淀到一个地方,大家都能看到。这样可以减少各个团队之间的沟通成本。

我们创业做的一站式智能观测平台 Flashcat 里也做了类似的事情,叫做「灭火图」。它帮助企业构建全局稳定性视图,有故障时可以一目了然看到哪些服务受影响、哪些模块可能是故障原因。

这类平台能力的意义,不只是“多一个大屏”,而是把跨团队沟通所需的上下文提前组织好。大家看同一张图、同一组 SLI、同一条告警时间线,故障沟通就不再从“你说的是哪个系统”开始。

如果您需要乙方协助构建整套监控、可观测性体系,欢迎联系我们交流产品和思路(免费哒) 👇

https://flashcat.cloud/contact/

FAQ

Q1:心理模型重叠是不是要求每个人都懂全栈?

不是。心理模型重叠不是让每个人都成为所有领域专家,而是让关键岗位之间有足够共享语境,能在故障时高效交换证据和判断。

Q2:为什么资深工程师处理故障更快?

一个常见原因是资深工程师能跨越更多系统边界。他知道应用、数据库、网络、操作系统、发布和监控之间的大致关系,所以能更快提出对方可判断的信息。

Q3:可观测平台能替代跨团队沟通吗?

不能替代,但能降低沟通成本。平台把服务健康、SLI、告警、日志、Trace、变更和依赖关系组织到统一上下文里,团队沟通时就不必反复补背景。

结论

复杂故障之所以难,不只是因为技术复杂,也因为参与者对同一件事的理解不一定相同。

心理模型重叠越多,团队越容易在故障现场形成共同判断;重叠越少,沟通越容易停在补充背景、解释术语和等待信息上。

要提升故障响应速度,一方面要通过跨团队轮换、事故演练和知识扩展提高人的共享理解;另一方面也要把系统结构、健康状态和排障路径沉淀到可观测平台里。只有这样,团队才能从“靠少数专家翻译系统”走向“基于同一份上下文协同处理故障”。

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 incident
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云