6.3

6.3 待命、容量与运营负载指标

概述与动机

主题 6.1 所引入、主题 6.2 事件响应所衡量的可靠性,两者都依赖于本主题直接衡量的一套人力系统:待命轮值,那些携带传呼机、在出问题时做出响应的工程师,以及决定一个系统在开始出问题之前能吸收多少负载的基础设施容量。一个组织可以拥有出色的服务水平目标、设计良好的错误预算,以及一种真正无责的事件文化,却依然通过一份不可持续的负荷,让它的待命工程师耗竭殆尽,而这最终会侵蚀那些其他实践本应保护的可靠性本身。

本主题把运营负载当作一个自成一体的指标家族来对待,它直接连接到主题 3.2 的幸福感与职业倦怠测量,但专门针对携带传呼机这种特定、急性的压力:被打断的睡眠、即使什么都没发生、只是处于待命状态本身的心理成本,以及频繁、分布不均的事件负荷所累积的代价。一个一丝不苟地衡量其系统可靠性、却从不衡量维持这些系统可靠所需的人是否可持续的组织,只衡量了图景的一半,而未被衡量的那一半,往往最终会以人员流失、或因响应者精疲力竭而导致的事件响应质量下降,或两者兼而有之的形式显现出来。

对大团队而言,待命与容量指标揭示出的负荷均衡问题,与主题 3.5 的知识集中关切如出一辙:一小撮工程师吸收了不成比例份额的呼叫,往往恰恰是最有经验的人,因为他们能最快解决事件,这同时造成了职业倦怠风险和巴士因子风险。运营全天候关键服务的企业和政府组织,依赖本主题的指标来可持续地为待命轮值配备人手,而不是只有通过人员流失才发现真正的代价。

核心原则

  • 待命负荷是一种可测量、可管理的资源, 而不是一种工程师只能被迫吸收的不可避免、无限的负担。
  • 呼叫频率和呼叫分布都很重要。 一个团队层面的平均值,可能掩盖了在少数个人身上的严重集中。
  • 待命期间的打断,即使实际上没有事件发生,也带有代价, 那是保持可被联系、承担责任的心理重量。
  • 容量规划与待命负荷是相连的。 配置不足的基础设施会产生更多呼叫,直接增加待命负担。
  • 一个可持续的待命系统保护的是可靠性本身, 因为精疲力竭的响应者在事件中会做出更慢、更容易出错的决策。

建议

跟踪呼叫频率与分布,而不只是团队层面的平均值

测量每一位待命工程师个人收到多少次呼叫,而不只是一个可能掩盖严重集中情况的全团队平均值。与主题 3.5 的巴士因子和主题 2.9 的评审者负荷关切类似,待命负荷常常集中在一小撮能最快解决事件的资深人员身上,这恰恰是同时造成职业倦怠风险和危险单点故障的模式。当这种集中出现时,刻意地重新平衡轮值。

衡量待命本身的心理成本,而不只是活跃的事件时间

即使在一次没有任何实际呼叫的班次中,待命也带有真实的代价:因预期可能被打断而降低的睡眠质量、受限的个人活动,以及持续承担责任所带来的轻微压力。在可行的情况下,通过专门针对待命体验、有别于一般满意度的调查数据(主题 3.7)来捕捉这一点,因为一个团队可能报告出合理的一般满意度,而待命这一具体方面却在悄悄侵蚀幸福感。

为可持续的待命频率设定明确的上限

为任何个人应当多频繁地承担待命,建立一个合理的最高频率,常见的是不超过四周或五周中的一周,并跟踪实际的轮值频率相对于这个上限的表现。一份名义上列出了足够人数、实际上却因为技能缺口或可用性限制而实际依赖两三个人的轮值表,无论名义排班显示什么,都没有真正满足这个上限。

把容量规划与待命负荷直接连接起来

配置不足的基础设施,为流量激增留出的余量不足,自动扩缩容配置不当,按定义会产生更多呼叫,直接增加待命负担。跟踪基础设施容量利用率,并把它与呼叫频率关联起来:一项经常运行在其容量上限附近、并产生不成比例份额呼叫的服务,是为容量投资提出的一个直接、可量化的论证,而不只是一句模糊的运营抱怨。

用待命指标来指导人员配置和招聘决策,而不是个人评估

在团队层面汇总待命负荷数据,为增加人手、更好的工具(以减少误报呼叫),或减少真正事件频率的架构投资提出理据。遵循本书对任何直接触及个人的指标的一贯指导(主题 1.2、主题 3.4),绝不用个人呼叫响应指标来评估某位具体工程师的绩效;目标是可持续的人员配置和系统设计,而不是个人记分。

权衡取舍:利与弊

方案优点缺点
不做正式的待命负荷跟踪没有开销职业倦怠风险和巴士因子集中保持不可见,直到它们以人员流失的形式显现
只有团队平均呼叫频率计算简单掩盖了严重的个人集中情况
个人层面的呼叫分布跟踪直接揭示集中情况和职业倦怠风险需要谨慎,只在汇总层面使用,绝不用于个人评估
从源头投资容量以减少呼叫量解决根本原因,可持续地减轻负担需要前期的基础设施投资

核心张力是接受与投资之间的张力。把高呼叫量简单地当作运行一项可靠服务不可避免的代价、要求待命工程师去吸收它,是容易的,但这种接受最终会通过人员流失和因精疲力竭的响应者而导致的事件响应质量下降,让组织付出代价。解决这种张力的办法,是把升高的待命负荷当作一个呼唤真正投资的信号,容量改善、更好的告警以减少误报、扩大轮值人手,而不是一种只能无限期忍受的不可避免负担。

与团队讨论的问题

  1. 我们轮值中各个人的实际呼叫分布是什么样子,而不只是团队平均值? 拉出真实的、个人层面的数据;一个看起来合理的团队平均值,可能掩盖了一两个人吸收了不成比例大份额的情况。

  2. 我们是否曾经把待命的心理成本,与一般满意度分开测量过? 如果没有,讨论一个专门针对待命体验的、专门的简短调查问题,是否会揭示出你目前的一般满意度调查(主题 3.2)正在遗漏的东西。

  3. 我们名义上的待命轮值表反映了现实,还是因为技能缺口或可用性问题,实际上依赖两三个人? 对此要诚实;一份列出了八个名字、实际上却依赖两个人的排班表,无法满足任何合理的可持续性上限。

  4. 我们哪些服务相对于其容量余量产生了不成比例份额的呼叫,额外的基础设施投资是否会直接减少那种负荷? 明确地把呼叫频率与容量利用率数据交叉引证,用真实证据建立起这个论证。

  5. 待命负荷数据是否曾经,哪怕只是非正式地,被用来评估某个人的绩效,而不是为人员配置和架构决策提供依据? 这带来了与主题 3.4 针对活动数据所警告的相同的个人评估陷阱,只是这次应用在了运营负荷上。

  6. 如果我们最被呼叫的待命工程师因职业倦怠或人员流失而离开,我们会付出什么代价,这与现在重新平衡轮值或投资于根本原因修复的代价相比如何? 这种具体的比较,往往比单纯抽象地呼吁可持续性,更能为主动投资提出有力的论证。

行业视角

初创公司。 出于必要,待命往往是非正式的,集中在创始人或一个小型的早期工程团队身上。风险在于,在从未考虑过刻意的轮值设计之前,就把一种不可持续的节奏正常化了,而一旦它变成了后来加入的新员工的默认预期,就变得难以逆转得多。

小型企业。 即使没有专门的待命工具,一份简单、明确的轮值表,配以一个清晰的可持续性上限(例如不超过四周中的一周),也是可以实现的。主要的纪律,只是让轮值及其公平性变得可见、明确,而不是任由它作为一种非正式、未被言明的安排存在。

企业。 在这个规模上,呼叫分布的集中及其相关的职业倦怠和巴士因子风险扩展得很糟糕,因为更多的服务和更多的复杂性通常意味着更多潜在的呼叫,而专业知识的集中又加剧了这个问题。投资于个人层面的负荷跟踪(仅在汇总层面用于人员配置决策)、从源头减少呼叫量的容量投资,以及刻意的轮值重新平衡。

政府。 关键公共基础设施常常需要全天候的待命覆盖,如果响应延迟会带来真实的后果,这既提高了可持续人员配置的重要性,也加大了在典型公共部门人员编制限制下实现它的难度。明确、直接地用待命负荷数据来论证人员配置请求的正当性,把可持续的待命能力定位为一项直接的、可量化的可靠性要求,而不是一种可自行决定的人员配置偏好。

案例

企业。 一家云基础设施公司在第一次拉出个人层面的呼叫数据之后发现,在一个十五人的待命轮值中,有两名资深工程师个人处理了前一年超过60%的所有呼叫,这既是因为他们解决复杂事件的速度最快,也是因为轮值中的其他成员已经养成了非正式地依赖他们、而不是自己尝试解决的习惯。这两名工程师都在公司的幸福感调查(主题 3.2)中报告了显著的职业倦怠症状,而领导层此前从未把这个调查信号与那份具体的、可量化的待命集中数据联系起来。一次刻意的重新平衡努力,包括有针对性的培训以在更广泛的轮值中建立解决问题的信心,以及对任何个人可被连续分配多少次呼叫设定正式上限,在六个月内把这两名工程师的份额降到了25%以下,他们所报告的幸福感也相应地有所改善。

政府。 一家区域供水公司的待命工程团队,一直以一份名义上四人的轮值来运营关键基础设施监控,但容量利用率数据揭示,一座持续接近其运营上限运行的具体老化泵站,产生了整个轮值近一半的呼叫。对那座单一泵站的一次容量升级,直接使用呼叫频率与容量之间的关联作为预算请求中具体的支持证据来获得资助,在随后一年内把全组织范围的总呼叫量减少了约40%,证明了待命负担在很大程度上是一个伪装成人员配置或流程问题的容量问题。

商业理由:动机、投资回报与总拥有成本

刻意管理待命和容量负荷的回报,是避免了人员流失,避免了因精疲力竭的响应者做出更慢、更容易出错的决策而导致的可靠性下降。上面的云基础设施案例直接展示了这种累积性风险:未受管理的集中同时造成了职业倦怠和巴士因子暴露,而一次直接、依据数据的重新平衡努力,以相对于失去任何一位资深工程师而言适度的成本,解决了这个问题。

总拥有成本包括跟踪个人层面呼叫分布所需的埋点(谨慎地使用,仅在汇总层面),以及在有指示的地方,从源头减少呼叫量所需的真正容量投资。供水公司的案例表明,这份投资可以直接、可衡量地收回自身,因为一次单一、精准的容量修复,大幅减少了全组织范围的运营负担。

反模式与陷阱

  • 只跟踪团队层面的平均呼叫计数: 掩盖了同时驱动职业倦怠和巴士因子风险的严重个人集中。
  • 把名义上的轮值排班当作反映现实: 一份实际上依赖两三个人的排班表,无论列出了多少名字,都不可持续。
  • 用个人呼叫响应数据来评估绩效: 重复了本书自始至终所警告的那种个人评估陷阱,只是应用在了运营负荷上。
  • 把高呼叫量当作可靠性不可避免的代价来接受,而不是把容量作为一个根本原因来调查: 错过了一个常常唾手可得的直接修复方案。
  • 从不把待命负荷数据与幸福感调查数据连接起来: 错过了在一种累积性的职业倦怠风险显现为人员流失之前识别并处理它的机会。
  • 忽视一次没有实际呼叫的待命所带来的心理成本: 低估了一份轮值真正的负担。

成熟度模型

  • 第一级,启动: 待命负荷完全不被跟踪,或者只被跟踪为一个掩盖了个人集中情况的全团队平均值。
  • 第二级,发展: 存在一些个人层面的呼叫数据,但它没有与幸福感调查数据或容量投资决策连接起来。
  • 第三级,标准化: 个人层面的呼叫分布和容量利用率关联被一贯地跟踪,配以对轮值频率明确的可持续性上限。
  • 第四级,管理: 待命负荷数据被主动用于推动容量投资和轮值重新平衡,并明确与幸福感调查信号相连接。
  • 第五级,协奏: 组织能够指出具体的、可衡量的运营负荷和幸福感改善,这些改善来自有针对性的容量投资和轮值重新设计,可持续的待命人员配置是人员编制和基础设施规划中一项常规、有充分依据的输入。

讨论思路

  1. 我们目前实际的、个人层面的呼叫分布是什么样子?
  2. 我们名义上的轮值排班是否反映了实际上谁解决了大多数事件?
  3. 哪一项单一的容量投资最能减少我们当前的呼叫量?
  4. 我们是否曾经把待命负荷数据与幸福感调查信号连接起来?
  5. 如果我们呼叫负担最重的工程师因职业倦怠而离开,我们会付出什么代价?

要点回顾

  • 待命负荷是一种可测量、可管理的资源;跟踪个人层面的分布,而不只是一个可能掩盖严重集中情况的团队平均值。
  • 待命即使没有实际呼叫,也带有心理成本;把它与一般满意度分开测量。
  • 容量规划与待命负荷直接相连;配置不足的基础设施会产生更多呼叫和更多负担。
  • 把待命数据用于人员配置和容量决策,绝不用于个人绩效评估。
  • 一个可持续的待命系统保护的是可靠性本身,因为精疲力竭的响应者会做出更慢、更容易出错的决策。

参考文献与延伸阅读

  • Site Reliability Engineering: How Google Runs Production Systems,Betsy Beyer、Chris Jones、Jennifer Petoff、Niall Richard Murphy编(待命实践与可持续的运营负荷)。
  • The Site Reliability Workbook,Betsy Beyer、Niall Richard Murphy、David K. Rensin、Kent Kawahara、Stephen Thorne编(实用的待命轮值设计指导)。
  • The Burnout Challenge: Managing People to Avoid Burnout and Improve Wellbeing,Christina Maslach、Michael P. Leiter著(职业倦怠的组织性成因与干预措施,适用于待命压力)。
  • Seeking SRE: Conversations About Running Production Systems at Scale,David N. Blank-Edelman编(关于可持续运营实践的从业者视角)。