(编者注:此帖子由2018年2月13日最初发布的一对职位调整。)

太多的公司继续使用随叫随到的轮岗和事件响应流程,这让团队成员感到压力、焦虑和痛苦。值得注意的是,许多优秀的工程师正是因为这个原因而拒绝了工作。

它不一定是这样的。在新的遗物中,我们的Devops练习使我们能够创建支持和事件响应流程,支持快速增长,并最大限度地提高系统的可靠性 - 同时保护开发商免受戏剧和压力的影响。我们希望通过分享我们的经验和建设和管理随叫随线旋转和事件响应系统的最佳实践,我们可以帮助其他公司解决类似的挑战 - 为自己的开发人员和其他从业者提供生活更轻松。

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

新的遗物产品组织目前包括50多名工程团队,拥有400多名工程师和经理,支持约200个个人服务。每团队是它自己的自主单位;团队选择他们使用的技术,写作和维护他们自己的服务,并管理自己的部署,runbooks和呼叫旋转。

我们的工程团队由软件工程师组成,现场可靠性工程师(SRES)和工程经理。大多数团队承担至少三个服务的主要责任。公司的每一位工程师和工程经理通常在他们受雇的前两到三个月就开始轮班工作。

我们这么做,首先也是最重要的,因为这是必要的。New Relic为全球成千上万的客户提供关键的监控、警报和应用程序和基础设施的商业智能服务。当我们的客户有问题时,我们不能让问题拖到第二天再解决。虽然我们在美国和欧洲都有工程师,但我们的大部分团队都在俄勒冈州波特兰市的全球工程总部工作。这意味着我们不能跟着太阳转像谷歌一样,在世界各地的工程师中,在工作日结束时,世界一部分在世界各地的责任中向全球同行。

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

在出现之前德沃斯作为一种应用程序开发方法,待命任务通常取决于工程师和其他IT人员的子集,比如一个集中的站点可靠性或运营团队。

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

一个原因Devops的出现是拆除这些组织筒仓。在现代应用架构(如新的遗物用途)中,服务适合依赖于复杂的云服务,数据库维护者和复杂网络层的复杂系统的大型互连产品平台 - 只是为了命名系统的几个部分。虽然特定的事件响应可以从一个团队开始,但根本原因可能涉及进一步下堆的服务。

DevOps支持这样一种观点,即没有团队是孤岛,团队必须能够交互,并拥有清晰的、文档化的待命流程,以保持这些复杂的系统顺利运行。此外,在一个强大的DevOps实践中,开发人员对他们构建的服务做出更好的决策,因为他们也必须支持这些服务——他们不能把一个服务扔到墙外让别人去操心。

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

新遗物的大多数球队使用某种形式的一周内呼叫旋转,一个工程师作为主要响应者,另一个工程师作为次要的。所以,如果一个团队有六名工程师,那么每六周的每个工程师都会成为主要人员。

然而,成功的呼叫过程确实取决于团队的组成,他们管理的服务以及团队的服务的集体知识。这是团队自主在新的遗物中发挥作用的地方,每个团队都会创建自己的随叫随到的系统,这反映了它的需求和能力。

以下是这一方法在实践中发挥作用的两个例子:

New Relic的指标管道团队的轮换结构是这样的,所以总有一个“主要的”和一个“非主要的”随叫随到的联系人。使用运行的脚本詹金斯,团队随机旋转非原始的呼叫顺序。发生事件时,如果主触点不可用或不响应页面,则非初始在一个随机顺序上分页,直到有人响应。

新的遗物浏览器团队使用可配置的自定义应用程序,每分钟将新的团队成员旋转到“主要”角色。如果团队成员被分页并没有立即响应,系统旋转到下一个人,依此类推,直到有人承认警报。这种方法实际上取消了队员的压力:如果出现问题并且他们无法使用或不准备好解决问题,另一个团队成员距离两分钟。

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

新遗物跟踪各个工程师,团队和组级别的几个呼叫指标:

  • 每个工程师的总页数
  • 呼叫工程师的小时数
  • 接收到的非工作时间页面(在正常工作时间以外发生的页面)的数量

这些指标以及如何对其进行响应,对维护允许团队在随叫随到的实践中茁壮成长的结构和组织至关重要。在新的遗物中,例如,提醒数据PagerDuty允许管理人员和高管查看在给定的时间范围内的团队在组中查找的次数,以及其中有多少警报发生了几个小时。

跟踪非工作时间页面有助于提醒那些正在为难以管理的随叫随到负载而挣扎的团队注意。什么是难以管理的负担?在New Relic,如果一个团队平均每周的工作时间超过一个小时,那么这个团队就被认为有很高的随叫随到的负担。

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

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

随叫随到的模型不一定是复杂的,但它必须确保指定的工程师始终可以响应页面并处理涉及其责任范围的事件。关注模型应该回答的一些问题包括:

  • 模型如何为每次轮班选择团队成员?
  • 旋转持续多久?
  • 随叫随到的工程师无法回答页面时会发生什么?
  • 如果工程师不感觉到处理随叫随到的页面的任务,则提供哪些选项?
  • 有多少工程师随时待命?
  • 多个随叫随到的工程师将如何划分职责?
  • 车队将如何处理计划外的轮换和其他未预见的事件?

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

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

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

事件反应涵盖了从平凡到恐怖的所有事件;如果没有专门的监控工具的帮助,有些是不可能注意到的,而另一些则可能影响数百万用户,并成为全国的头条新闻。

新遗物定义了“事件”,如任何系统以意想不到的方式行为的情况可能会对客户产生负面影响。

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

最佳实践:在客户发现事故之前发现事故

成功事件响应系统的目标很简单:发现事件 - 而且,理想情况下,在客户受其影响之前修复它。

作为一个组织,我们的目标是确保我们不会因为恼怒的客户在推特上谈论此事而发现事故——这是最坏的情况。我们还想确保不会有愤怒的客户打电话给客服,因为这也不是一个理想的情况。

在新的遗物,我们喜欢说我们“喝自己的香槟”(这比“吃我们自己的狗粮”还要好)。工程团队可以自由选择他们用于构建服务的技术,但有一个条件:服务必须被仪器化。这意味着它必须有监控和警报。(除了极少数情况,我们使用自己的188bet.com产品。)

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

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

有效的事件响应从一个系统开始对其严重程度进行排名 - 通常在客户影响方面测量。新的遗物内部事件严重程度规模为组织建立自己的事故响应过程做出了一个很好的起点;它基于1-5的排名,为每个级别清楚地记录了标准:

  • 5级事件永远不应该对客户产生影响,它可能只是为了提高对一些事情的认识,比如有风险的服务部署。
  • 4级事件涉及少量的错误或次要数据滞后,但不会阻碍客户。
  • 3级事件涉及主要数据滞后或不可用功能。
  • 第1级和第2级事故是为涉及短暂的、完整的产品故障或那些对业务构成直接威胁的情况而保留的。在New Relic,“Kafkapocalypse“几年前就发生过这样的事件。

每个事件级别都涉及调用内部资源、管理响应、是否以及如何与客户通信以及其他任务的特定协议。New Relic将其最严重的事件归类为紧急事件;这些问题通常需要我们的法律、支持和领导团队做出更高的回应,在某些情况下,还需要我们的直接参与。

考虑事件如何影响客户并影响客户体验非常重要;并考虑资源,响应小组需要诊断,包含和解决问题。

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

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

下表概述了新的遗物用途对其事件响应团队的工作人员的角色概述。其中许多角色在特定严重性级别输入图片。在其他情况下,分配给角色的职责可能会根据事件的严重程度而变化:

角色 描述 组织
事件指挥官(IC) 推动现场事故的解决。使CL了解事件的影响和解决状态。对新的并发症保持警惕。
IC不会对事故进行技术诊断。
工程
技术领先(TL) 对事故进行技术诊断和修复。让IC了解技术进展。 工程
通讯铅(CL) 在发生事故时,让IC了解客户影响报告。让客户和业务人员了解事件。决定使用哪个通信通道。 支持
通信经理(CM) 协调跨团队的应急沟通策略:客户成功、市场营销、法律等。 支持
事件联络(IL) 仅适用于严重程度为1的事故。保持支持和通知业务,使IC可以专注于解决。 工程
紧急指挥官(EC) 可选的严重性1事件。如果多个产品倒塌,则作为“IC的IC”。188bet.com 工程
工程经理(EM) 根据事件的根本原因和结果管理受影响的团队的事件后流程。 工程

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

大多数组织都不能完全模拟实际的事件响应——尤其是严重程度很高的事件。但即使是有限的模拟也可以让您了解事件期间将发生什么、如何设置优先级和升级过程、如何协调团队角色,以及其他关键见解。

让我们来看一个关于New Relic的假设事件的例子:

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

首先,她宣布在我们指定的松弛频道中的事件。一个叫做NRRDBOT的机器人(修饰的克隆GitHub的哈博特),有助于引导她的过程。自从她决定采取事件的指挥官,她类型911集成电路我。这将更新Slack通道头,并创建一个新的,打开事件Upboard(我们内部自制的事件跟踪器);Nrrdbot直接通知(DMs)工程师和下一步。

在松弛中宣布的示例事件

新遗物使用名为NRRDBOT(GitHub的Hubot的修改克隆)的松弛机器人来指导通话响应器通过事件响应过程。

IC现在应该做三件事:

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

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

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

如果问题在60-90分钟内还没有解决,她就会把IC的工作交给别人,因为这是一个令人筋疲力尽的责任,尤其是在凌晨3点从酣睡中醒来的时候。

一旦问题完全解决,并且所有线索都确认满意,集成电路就会通过进入结束事件911结束在松弛。这就结束了事件。

最好的做法:抱最好的希望,做最坏的打算

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

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

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

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

作为获取知识和从事件中学习的第一步,我们例子中的新Relic还将执行几个事件后任务:

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

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

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

在New Relic,如果服务事故影响到我们的客户,我们有不要重复事件(DRI)强制我们停止对该服务的任何新工作的策略,直到我们修复或减轻事故的根本原因。DRI流程在New Relic工程团队的成功中扮演着重要角色——确保他们识别并偿还技术债务,这是一项通常无法通过其他方式得到优先处理的工作。

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

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

我们涵盖了很多地面讨论新的遗物如何处理我们的随叫随到和事件响应流程,并建议您可以从经验中带走的最佳实践。我们鼓励您创建明确的指导方针,以便您的团队知道预期的内容;识别并降低事件响应和解决过程中最严重的摩擦;并决定如何构建随叫的随叫随到和事件响应进程。

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

  • 尺寸:工程组织有多大?个人团队有多大?您的团队可以处理什么样的旋转?
  • 增长:工程组织的生长程度有多快?营业额率是多少?
  • 地理:您的组织是地理上集中或广泛分布的吗?您是否拥有尺寸和分发来研究所“遵循太阳”的旋转,或者工程师需要应对offlow页面页面?
  • 组织:工程组织的结构是怎样的?你采用了现代的DevOps文化吗?在这种文化中,团队拥有从开发到运营的服务的整个生命周期,还是开发和运营相互隔离?你是否有一个集中的SRE组,或者SRE嵌入到整个组织的工程团队中?
  • 复杂:您的应用程序如何结构化?您的工程师是否支持已插入更大架构的明确定义服务,或者您的产品是不同团队支持的单片应用程序吗?每个团队支持多少服务?这些服务有多稳定?
  • 依赖关系:有多少客户(内部或外部)依赖于您的服务?如果服务失败,爆炸半径有多大?
  • 工具:您的事件响应过程和工具有多复杂?你的团队的运行手册和监控有多彻底和及时?当工程师响应一个页面时,他们有足够的工具和组织支持吗?工程师会自动吗,动作的问题通知吗?
  • 预期:正在呼吁您的工程文化中的规范?它被视为工作的宝贵和重要组成部分,还是作为无关的负担?
  • 文化:你的公司是否有一种无可指责的文化,专注于真正的根本原因并解决系统问题,还是你的公司有一种“指责和羞辱”的文化,即员工在出现问题时受到惩罚?

Beth Adele Long是一个软件工程师,其中俄勒冈州波特兰的新遗物可靠性工程团队。查看帖子

对新遗物博客的写作有兴趣吗?188博彩体育网址送我们一个球场!