FDE Times 数据在招 FDE 职位 838▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 66在招公司 169支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

技能指南 · 指南

没有统一的 P1 定义,每个 Bug 都会变成危机

上线前约定一张四级表,分清哪些故障值得半夜打电话,哪些可以等到早上。

分享微博

要点速览

  • P1、P2、P3 没有通用标准,不写下来,客户和你的团队就会各有各的理解
  • 每一级都要有可度量的影响标准(例如超过 25% 的用户)和承诺的响应速度
  • 拿不准时往高里定,情况清楚后再调整等级,把重新定级当作常态
横向条形图,刻度为 0 到 400 名理赔员。一个表单 Bug 卡住 30 人(7.5%),低于 100 人(25%)的阈值线,因此是 P2。Bug 扩散到 120 人(30%)时,橙色条越过阈值,升为 P1。
在一家有 400 名理赔员的保险客户中,事件严重度取决于受影响人数与 25% 阈值的比较。来源:文中示例;25% 阈值引自 OneUptime。

晚上十一点,手机震了。客户的运营负责人发来消息:“P1,导出报表按钮错位了。”你打开电脑,确认按钮确实偏了几个像素,这才意识到,这已经是本周第三次为一个不必在早上之前修好的故障被叫醒。

客户并不是故意刁难。他们按自己的理解使用 P1 这个词,你则按自己团队的理解。事件管理平台 Rootly 说得很直白:P1/P2/P3 或 SEV0/SEV1/SEV2 这类标签并没有通用标准。

对前线部署工程师(FDE)来说,这个问题比内部 SRE 团队更棘手,因为你夹在两个组织之间。OneUptime 写道,没有清晰的定义,每起事件都会变成一场争论。

避免的办法是:上线前和客户坐下来,写清 P1 到 P4 四个等级,双方签字。

一个标签,两个问题

客户说“P1”时,其实同时回答了两个问题:情况有多严重,要多快处理。Rootly 把两者分开:严重度衡量事件的影响,优先级决定行动的速度。人们往往把这两个概念混为一谈,半夜的争执通常就从这里开始。

严重度应当用可以计数的东西来衡量。PagerDuty 建议每个组织自定等级,通常以受影响用户或账户的百分比为依据。OneUptime 给出了一个高影响的示例阈值:超过 25% 的用户受影响,或者某个创收功能性能下降。

分几级合适?按 incident.io 的经验,3-5 级比较合适,再少就无法区分不同的事件。P1-P4 四级正好落在这个区间,足以区分“现在就叫人起来”和“放进下一个迭代”。

为具体客户定制的表

假设你在为一家保险公司部署一个读取理赔材料的 Agent,每天有 400 名理赔员使用。对这个客户来说,25% 的阈值意味着超过 100 人。你带去会议的表格可以像下面这样,每一行同时写明影响和响应速度。

等级 影响 响应 保险公司场景示例
P1 Agent 停止运行,或 400 名理赔员中超过 100 人无法处理理赔 立即处理,7×24 小时,暂停计划内工作,通知双方管理层 模型更新后,每一笔理赔都返回错误
P2 较小的一群人在核心功能上受阻 在工作日内响应,排在 P1 工作之后 30 人无法上传某一类扫描表单
P3 质量下降,但有变通办法 纳入常规工作排期;除非情况恶化,不在非工作时间打电话 Agent 把少数罕见理赔分错类,审核人员可以手动纠正
P4 轻微或外观上的故障,不影响任何人使用产品 开工单;不呼叫任何人 导出报表按钮偏了几个像素

注意这张表如何在使用单一标签的同时把两个问题分开:“影响”一列回答严重度问题,“响应”一列回答优先级问题。把两者放在同一行,意味着双方事先同意:这种规模的影响对应这种速度的响应,没人需要在半夜重新谈判。

“响应”一列也不是凭空编的:它与 Rootly 对 P1、P2、P3 的定义一致,也符合 OneUptime 关于低等级不在非工作时间打电话的规则,以及 PagerDuty 把外观类故障转为工单的做法。

P1 时通知管理层,对应 PagerDuty 的 SEV-1,即需要公开通报、并与高管直接沟通的事件等级。

现在代入数字。表单故障卡住 30 人,占 400 人的 7.5%,仍低于 25% 的阈值。所以它是 P2,哪怕这 30 个人这一天过得很糟。

如果同一个故障扩散到 120 人,即 30%,就越过阈值,变成 P1。等级由数字决定,而不是由消息的语气决定。至于晚上十一点那个错位的按钮,是 P4:开一张工单,谁也不用被叫醒。

上线前的那次会议

草拟的表格只有在客户亲自设定阈值时才有价值。不要问“你希望 P1 是什么?”,这只会招来“什么都重要”的回答。要问人,问时间:

你:“如果 Agent 在周日凌晨 3 点停止运行,你希望打电话给谁?你自己要不要接电话?”

客户:“当然要,整个理赔部门都会停摆。”

你:“那如果只是某一类表单出问题,大约 30 人受阻,需要半夜叫人起来吗,还是可以等到周一早上?”

客户:“周一早上就行,只要当天有人处理。”

这两个回答之后,客户自己就画出了 P1 和 P2 之间的界线。你只需要把它记成一个数字。

流程是这样的:会前,统计真实用户数,找出哪些功能与收入挂钩,再用客户自己系统里的例子填好草拟表格。会上,用上面的话术调整阈值。

签字前,在表格底部加两条规则。第一条来自 PagerDuty:拿不准事件属于哪一级时,按更高一级处理,复盘时再回顾。第二条来自 Rootly:初始定级只是临时的,调整等级说明流程在正常运转。

为什么这么多表格最后成了废纸?

最常见的错误是只有标签、没有标准。一行写着“P1:严重”,半夜帮不上任何人,因为“严重”恰恰是双方争论的焦点。每一级都需要一个数字或一个具体功能,让值班工程师几分钟内就能核实。

第二个错误是不愿降级。一起按 P1 开出的事件,20 分钟后发现只影响十个人,就应降为 P2,并记录原因,让双方都能看到。如果没人敢降级,客户就会学到:标成 P1 就有人跑过来。不出几周,这张表就失效了。

第三个错误是写完表格就束之高阁。它必须与告警配置和值班排班保持一致。如果 P3 仍会在凌晨 2 点触发呼叫,这张表就只是纸上的承诺。最后,不要因为双方各想要一个例外就加上 P5、P6:等级太多,值班工程师就会把时间花在挑标签上,而不是解决问题。

把这张表变成职业履历

当 FDE 岗位描述里出现“on-call”、“incident response”或“SLA”时,正好可以在面试中问一句:谁负责与客户定义事件等级?这个定义写在哪里?答案能相当清楚地告诉你,以后值班的夜晚会是什么样子。

简历上,一句具体的描述比形容词更有分量:“与客户共同制定基于受影响用户比例的 P1-P4 分级表,并直接接入呼叫配置。”如果你有非工作时间呼叫次数的前后对比数据,也写上。

面试时,讲一次你给事件降级的经历,以及你是如何向客户解释的。

这张四行的表格并不会让系统少出故障。它只保证下次手机在半夜震动时,是为了一件真正值得起床的事。

这篇文章对你有帮助吗?

5 个信源
路线图上的下一篇 · 阶段 7: 项目主导客户改主意时,用 ADR 别让争论从头再来ADR 拦不住客户改方向,但能把争论收敛成一个问题:上下文变了吗?