随叫随到和事件回复:成功的课程,新的遗物方式

14分钟阅读

(编者注:这是此帖子的更新;它最近在2018年2月13日上次更新。)

太多公司继续使用随叫随到的旋转和事件响应流程,使团队成员感到压力,焦虑,并且一般悲惨。值得注意的是,充足的良好工程师正在为此而拒绝或留下工作。

事情不一定非得这样。在New Relic,我们的DevOps实践允许我们创建随叫随到和事件响应流程,以支持快速增长和最大化我们系统的可靠性——同时也保护开发人员免受戏剧和压力的影响。我们希望通过分享我们建立和管理我们的随叫随到轮换和事件响应系统的经验和最佳实践,我们可以帮助其他公司解决类似的挑战,并使他们自己的开发人员和其他从业者的生活更容易。

行动中的随叫随到的政策:从新遗物学习

我们的工程团队由软件工程师,站点可靠性工程师(SRES)和工程管理人员组成。大多数团队至少有三项服务负责。组织中的每个工程师和工程经理都加入了一个呼叫旋转,通常在他们就业的前两到三个月内开始。

我们首先做到这一点,因为它是必要的。新的遗物为全球数以千计的客户提供关键的监控,警报和商业智能,适用于其应用和基础设施。当我们的一个客户有问题时,它不是一个选择,让问题等到第二天。虽然我们在美国和欧洲进行了工程师,但我们的大多数工程团队都有共享同一时区的成员。这意味着我们无法跑“遵循太阳”的旋转像谷歌一样,在世界各地的工程师中,在工作日结束时,世界一部分在世界各地的责任中向全球同行。

最佳实践:采用和拥抱Devops实践

在出现之前德沃斯作为应用程序开发方法,呼叫职责通常依赖于工程师和其他IT人员的子集,例如集中式站点可靠性或运营团队。

这些员工 - 而不是实际建立软件的开发人员 - 响应他们观看的服务的事件。然而,站点可靠性团队的反馈很少达到开发人员。此外,产品所有者经常选择进入下一个新功能,而不是敦促他们的团队偿还技术债务,并尽可能可靠地使产品和服务成为可靠的。亚博最新版直播

一个原因Devops的出现就是打破这些组织孤岛。在New Relic使用的现代应用程序架构中,服务组合在一起形成一个大型的、相互连接的产品平台,依赖于复杂的云服务系统、数据库维护人员和复杂的网络层——这只是系统的几个部分。虽然特定的事件响应可能从一个团队开始,但理解事件和解决任何面向客户的影响所需的细节可能涉及堆栈更低的服务。

Devops支持未经团队是一个岛屿的想法,该团队必须能够互动并清晰,记录的随叫随到的流程,以保持这些复杂的系统顺利运行。此外,在强大的Devops实践中,开发人员对他们构建的服务做出更好的决定,因为它们也必须支持它们 - 他们不能为别人担心墙壁服务。

最佳实践:平衡自主权和问责制

然而,成功的呼叫过程确实取决于团队的组成,他们管理的服务以及团队的服务的集体知识。新遗物的大多数球队使用某种形式的一周内呼叫旋转,一个工程师作为主要响应者,另一个工程师作为次要的。所以,如果一个团队有六名工程师,那么每六周的每个工程师都会成为主要人员。

大多数团队使用PANTRDUTY时间表确定主要和次要,他们使用PageRduty升级政策确定谁是第一个分页的,次要页是什么时候分页的,以及如果主页和次要页都没有确认该页该怎么办。

最佳实践:追踪和测量呼叫性能

New Relic在单个工程师、团队和团队级别上跟踪几个随叫随到的指标:

  • 每个工程师的页数总数
  • 工程师被分页的小时数
  • 收到的离事数量的页数(在正常工作时间之外发生的页面)

这些指标以及如何对其进行响应,对维护允许团队在随叫随到的实践中茁壮成长的结构和组织至关重要。例如,在新的遗物中,我们建立了一个从PageRduty提醒信息并将其写入的工具遥测数据平台。然后,经理和高管可以创建仪表板,该仪表板显示在给定的时间范围内分页的次数以及这些警报中的数小时中有多少次。

跟踪Off-Locth页面有助于注意与呼叫无管理呼叫负载斗争的团队。什么是无法管理的负担?在新的遗物中,如果团队平均每周超过一个OFF小时页,那么该团队被认为具有高调的负担。

如果团队的负担太高,请考虑允许团队专注于支付技术债务或自动化远离劳动,直到他们的随叫随到的负担。或者,如新的遗物,您可以以高级站点可靠性工程师(SRE)的形式提供支持,他可以帮助团队提高服务。

选择接通型号时要考虑的问题

随叫随到的模型不必复杂,但它必须确保指定的工程师总是可用来响应页面并处理涉及其职责范围的事件。随叫随到模型应该回答的问题包括:

  • 模型如何为每个呼叫旋转选择团队​​成员?
  • 旋转持续多久?
  • 当一个随叫随到的工程师没有回答一个页面会发生什么?
  • 如果工程师不感觉到处理随叫随到的页面的任务,则提供哪些选项?
  • 在任何特定时间将在通话时间有多少工程师?
  • 多个随叫随到的工程师将如何划分职责?
  • 团队将如何处理未核化的旋转和其他无法预料的事件?

对于具有多个团队的较大组织,答案还将取决于团队自主的程度。Devops组织通常赞成高水平的团队自主权,但有些人比其他人更进一步。

事件响应:寻呼机熄灭时会发生什么

组织的随叫随到过程是组织软件质量和可靠性实践的一个关键方面。另一个密切相关的方面涉及其事件响应程序。

事件响应涵盖从平凡地恐怖的赌场进行恐怖;没有专业监测工具的帮助,有些人无法注意到,而其他人可能会影响数百万用户并制造国家头条新闻。

New Relic将“事件”定义为任何系统以意想不到的方式行为的情况可能会对客户产生负面影响。

像许多软件公司一样的新遗物不能等到事件发生以弄清楚计划。我们需要快速有效地行事。我们必须有一个明确的计划,准备好了。

最佳实践:在您的客户之前发现事件

一个成功的事件响应系统的目标很简单:在客户受到事件的影响之前发现事件——并在理想情况下修复它。

作为一个组织,我们的目标是确保我们从未发现事件,因为恼怒的客户正在发推文 - 这是最糟糕的情况。我们还要确保我们没有愤怒的客户来电支持,也不是理想的情景。

在新的遗物,我们喜欢说我们“喝自己的香槟“(它比”吃自己的狗粮“更好)。工程团队可以自由选择他们用来建立服务的技术,其中一个条件:必须进行服务。这意味着它必须具有监控和警报。(除了极少数情况下,我们使用自己亚博最新版直播的产品。)

当然,如上所述,工程团队也有他们管理的服务的通话旋转。一个良好的监控设置,具有主动事件报告,意味着一旦检测到问题,就会分配工程师 - 最好在客户注意到它之前。

最佳实践:开发一个系统以评估事件严重程度

有效的事件响应始于一个系统,该系统根据事件的严重程度(通常根据客户影响来衡量)对事件进行排序。New Relic的内部事件严重程度量表为组织构建自己的事件响应过程提供了一个很好的起点;它是基于1-5的排名,每个级别都有明确的记录标准:

  • 5级事件不应该具有客户影响,并且可以简单地宣布提高对危险服务部署等某些内容的认识。
  • 4级事件涉及少量的错误或次要数据滞后,但不会阻碍客户。
  • 级别3的事件涉及主要的数据滞后或不可用的特性。
  • 第1级和第2级事件是涉及简短,全产性中断或对业务直接威胁的案件的案件。在新的遗物,“kafkapocalypse.“从几年前,这是这种事件的一个例子。

每个事件级别都涉及一种用于调用内部资源的特定协议,管理响应,无论是如何与客户沟通以及其他任务。新的遗物将其最严重的事件作为紧急情况进行分类;这些通常需要提高响应,并且在某些情况下,直接参与我们的法律,支持和领导团队。

考虑一个事件可能会如何影响客户和影响客户体验是非常重要的;并考虑一个反应小组需要多少资源来诊断、控制和解决问题。

在新的遗物中,我们在事件中分配严重性级别,以确定我们需要多少支持。然后,在事件发生后,我们根据实际客户的影响重新评估指定的严重程度。这反映了新遗物的关键事件响应原则:我们鼓励工程师在事件中快速升级,以便他们可以得到他们需要解决问题的支持。事件结束后,我们评估实际影响并降级严重程度如果它结果不会像最初担心那么糟糕。

最佳实践:定义和分配响应团队角色

下表概述了New Relic用于为其事件响应团队配备人员的角色。这些角色中有许多是在特定的严重级别上出现的。在其他情况下,分配给某个角色的职责可能会根据事件的严重程度而变化:

角色 描述 组织
事故指挥官(IC) 驱动现场事件的解决。保持CL通知事件的影响和解决状态。保持新并发症的警报。
该IC不会对事件进行技术诊断。
工程
技术主管(TL) 执行技术诊断和修复事件。保持IC了解技术进步。 工程
通讯铅(CL) 在事件期间,将IC通报客户影响报告。让客户和业务了解事件。决定要使用的通信渠道。 支持
通信管理器(厘米) 协调团队的紧急沟通战略:客户成功,营销,法律等。 支持
事件联络(IL) 仅为严重性1事件。保持支持和业务所通知所以IC可以专注于解决方案。 工程
紧急指挥官(EC) 可选的严重性1事件。如果多个产品倒塌,则作为“IC的IC”。亚博最新版直播 工程
工程经理(EM) 根据事件的根本原因和结果管理受影响的团队的事件后流程。 工程

最佳实践:设置事件响应方案

大多数组织不能完全模拟实际的事件响应 - 特别是高度严重的事件。但即使是有限的仿真也可以为您提供一个事件中会发生的事情,如何设置优先级和升级程序,如何协调团队角色以及其他关键洞察力。

让我们来看看一个例子,涉及新遗物的假设事件:

我们的模拟以新的遗物产品团队获得页面的呼叫工程师。这新的遗物合成纤维Minion将监测工程师服务之一的健康检查让她知道健康检查失败。她检查了这一点新的遗物见解仪表板的服务并看到,确实,健康检查失败了 - 吞吐量正在下降,而她担心的客户将受到影响。现在发生了什么?她该干什么?

首先,她宣布在我们指定的松弛频道中的事件。一个叫做NRRDBOT的机器人(修饰的克隆GitHub的哈博特),有助于引导她的过程。自从她决定采取事件的指挥官,她类型911 ic me。此更新Slack通道标题并创建一个新的开放事件盖板(我们的内部家用事件追踪器);NRRDBOT直接邮件(DMS)工程师具有下一步。

在Slack中声明的示例事件
New Relic使用一个名为Nrrdbot的Slack机器人(GitHub Hubot的一个修改版克隆)来指导随时待命的响应人员完成事件响应过程。

IC现在应该做三件事:

  1. 设置严重程度(它有多糟糕?)。
  2. 为事件设置一个标题(对出错内容的总结)和一个状态(对目前正在进行的内容的总结)。
  3. 找到一个或多个技术导致调试问题。如果IC是最好的人是技术领先的人,他们会发现其他人接管IC角色,因为IC没有对事件进行技术诊断。

当IC设置严重性(或在事件过程中更改它)时,确定谁会引入响应的帮助。对于至少严重3级的事件,支持的团队成员自动加入事件作为通信领先。CL的工作是协调与客户的沟通;他们将在任何与事件相关的客户投诉中继,并根据客户发现的客户积极沟通。

此时,IC开设了一份人群采购的协调文件,以便在参加响应的每个人之间分享。她负责管理响应所涉及的所有各方之间的沟通流程。她还在需要时支持支持,更新状态(每10分钟或作为NRRDBOT提醒她),并更新严重性,因为事情变得更好或更糟。

如果问题尚未在60-90分钟内得到解决,那么她将把她的IC扮演给别人,因为它是一种疲惫的责任,特别是在凌晨3点。

一旦问题完全解决,所有领导都证实了他们的满​​意度,IC通过进入结束事件911结束在松弛。这将关闭事件。

最佳实践:希望最好,但计划最坏的计划

以上示例模拟了新遗物的重要事件,但它从未升级到真正紧急情况的水平。紧急事件极为罕见(或者他们应该是,无论如何),但它们对业务造成指数较高的风险。事实上,在真正的最坏情况下,如果升级失控,事件可能会变成存在的威胁。

在新的遗物中,具有严重性1或2的事件集自动触发了页面的后台进程新的遗物应急响应力(nerf),以及一个随叫的工程学执行。NERF团队成员经验丰富的新遗物员工,深入了解我们的系统和架构,以及我们的事件管理流程。它们擅长处理高度严重性的事件,特别是当这些事件需要协调多个团队时。

高管加入一个事件响应团队,内合行人员提供三个关键职能:通知执行领导;协调我们的法律,支持和安全团队;并做出艰难的决定。

最佳实践:使用事件来学习,改进和成长

作为从事件捕获知识和学习的第一步,我们示例中的新遗物IC也将执行几个事件后任务:

  • 收集进入协调文件的最终详细信息,包括
    • 事件持续时间
    • 客户影响
    • 任何需要回滚的紧急修复
    • 事件期间出现的任何重要问题
    • 关于谁应该参与事故后回顾的注意事项
  • 确认应邀请谁邀请到无可指责的回顾
  • 选择一个团队拥有事件(在上面的例子中,综合团队)因此该团队的工程经理可以安排事故后回顾

我们还要求团队在事件发生后的一到两个工作日内进行回顾。New Relic的组织“无辜的”回顾旨在揭示问题的根本原因 - 找不到替罪羊。了解更多关于新的遗物结构和用途无可指摘的回顾作为其更广泛的DevOps最佳实践的一部分。

最佳实践:实施不重复事件(DRI)政策

在新的遗物,如果服务事件会影响客户,我们有一个不要重复事件(DRI)迫使我们停止对该服务的任何新工作的政策,直到我们修复或减轻事件的根本原因。DRI进程在新的遗物工程团队的成功中发挥着重要作用 - 确保他们识别和偿还技术债务,这是经常通过其他方式优先考虑的工作。

重要的是要记住,目标不是完全消除事件 - 这根本就是不是现实的。相反,新的遗物希望其团队更有效地回应未来的事件发生。

现在轮到你了:引导事件响应计划的问题

我们已经讨论了很多关于New Relic如何处理我们的随叫随到和事件响应过程的问题,并建议了您可以从我们的经验中获得的最佳实践。我们鼓励你创建明确的指导方针,这样你的团队就知道该期待什么;识别并减少事故响应和解决过程中最严重的摩擦;并准确地决定如何构建您的随叫随到和事件响应流程。

解决以下问题可以帮助您更有效地执行所有这些任务。

  • 大小:工程组织有多大?个人团队有多大?您的团队可以处理什么样的旋转?
  • 生长:工程组织的生长程度有多快?营业额率是多少?
  • 地理位置:您的组织是地理上集中或广泛分布的吗?您是否拥有尺寸和分发来研究所“遵循太阳”的旋转,或者工程师需要应对offlow页面页面?
  • 组织:工程组织结构是怎样的?你是否采用了一种现代的DevOps文化,即团队拥有从开发到运营的整个服务生命周期,还是开发和运营是竖井式的?您是否有一个集中的SRE小组,或者SRE是否嵌入到整个组织的工程团队中?
  • 复杂:您的应用程序如何结构化?您的工程师是否支持已插入更大架构的明确定义服务,或者您的产品是不同团队支持的单片应用程序吗?每个团队支持多少服务?这些服务有多稳定?
  • 依赖性:有多少客户(内部或外部)取决于您的服务?如果服务失败,爆炸半径有多大?
  • 工具:您的事件响应过程和工具有多复杂?您的团队的流程本和监控如何彻底和目前?工程师在回复页面时有足够的工具和组织支持吗?工程师获得自动,动作的问题通知
  • 期望:随叫随到在你们的工程文化中是一种规范吗?它是否被视为工作中有价值和必要的一部分,还是一种额外的负担?
  • 文化:您的公司是否有一个可靠的文化,侧重于真正的根本原因和解决系统问题,或者您有“责备和羞耻”文化,当出现问题时,人们受到惩罚的文化?

看看加速Aiops的事件响应要了解有关新的遗物应用智能如何帮助您提高事件响应过程最佳实践的更多信息。