履行职责时应考虑的事项

Effective DevOps的作者Ryn Daniels分享了任何人都可以使用的策略,以创建更好,更不烦人​​且更稳定的Oncall职责轮换。



随着Devops的出现,如今许多工程师以某种方式组织轮班工作,这曾经是系统管理员或维护工程师的唯一职责。观看,尤其是在下班时间,并不是大多数人喜欢的任务。值班值勤可能会扰乱我们的睡眠,干扰我们白天试图做的日常工作并影响我们的整体生活。随着越来越多的团队值班,我们问自己:“作为个人,团队和组织,我们能做些什么来使职责更加人道和稳定?”

保持睡眠


人们通常在想到职责时首先想到的是它会对睡眠产生负面影响。没有人想要一个警报在半夜把他们叫醒。如果您的组织或团队规模足够大,那么当位于多个时区的团队参加同一轮换,而轮班时间变短时,您可以使用“跟随太阳”轮换,因此,每个时区仅在其工作(或至少醒来)小时内值班。安装这种旋转装置可以很好地帮助减少值班人员承担的夜间工作量。

如果您没有足够的工程师及其地理分布来提供“跟随太阳”的轮换,那么仍然可以采取一些措施来减少人们不必要地在半夜醒来的可能性。最后,为了解决客户所面临的紧急问题,凌晨4点起床是一回事。唤醒只是为了发现您正在处理虚假警报,这完全不同。这可以帮助检查您设置的所有警报,并询问您的团队几个小时后真正需要唤醒某人的警报,以及这些警报是否可以等到早晨。让人很难同意关闭一些不起作用的警报,尤其是如果遗漏的问题过去曾引起问题时,这一点尤其重要,但要记住被剥夺睡眠的工程师并不是最有效的工程师。将这些警报设置为非常重要的营业时间。如今,大多数通知工具都允许您在下班时间为通知设置不同的规则,无论是Nagios通知时段还是在PagerDuty中设置不同的时间表。

睡眠,职责和团队文化


解决睡眠障碍问题的其他方法与更重要的文化变革有关。解决此问题的一种方法是跟踪警报,特别注意警报何时到达以及它们是否有效。Opsweekly是由Etsy创建和发布的工具,它使团队可以跟踪和分类收到的警报。它可以生成图表,显示多少警告唤醒了人们(使用健身追踪器的“关于睡眠”数据),以及实际需要多少人采取的警告。使用这些技术,您可以跟踪职责轮换的有效性及其随时间推移对睡眠的影响。

团队可以为每个值班人员提供充足的休息。营造一种鼓励人们照顾自己的文化:如果您由于夜间打电话而失去睡眠,可以在早上睡得更长一些,以弥补所浪费的时间。团队成员可以互相监视:当团队通过Opsweekly之类的信息共享彼此的睡眠信息时,他们可以去值班的同事说:“嘿,看来您昨晚在PagerDuty度过了一个艰难的夜晚“你想让我今晚掩护你,让你休息一下吗?” 鼓励人们以这种方式互相支持,而不赞成人们会达到极限,避免寻求帮助的“英雄文化”。

减少工作上班的影响


当工程师因在工作中醒来而感到疲倦时,他们显然不会在白天以100%的力量进行工作,但是即使不考虑睡眠不足,工作也会对工作产生其他影响。值班期间最重大的损失之一是与中断因素有关,这是上下文的变化:一次中断可能会由于失去焦点和上下文切换而导致至少20分钟的损失。您的团队可能会有其他干扰源,例如其他团队生成的故障单,通过聊天和/或电子邮件收到的请求或问题。根据这些其他中断的范围,您可以考虑在执行任务时将其添加到现有的循环中,或者设置第二个循环以仅处理这些其他请求。

在计划团队将要进行的长期和短期工作时,必须考虑到这一点。如果您的团队倾向于进行相当密集的值班,则在长期计划中必须考虑到这一事实,因为您可能会遇到这样一种情况,即所有员工都可以随时有效地执勤,而没有其他工作。在短期计划中,您可能会发现值班人员由于值班职责而无法按时完成任务-这是预料之中的,团队的其他成员应准备好适应并帮助确保工作已完成并且值班人员获得支持在他们的工作任务中。不管有没有打给服务员,值班班次将影响他执行其他工作的能力-不要期望值班人员在晚上工作以完成除休班任务之外的计划项目。

团队将需要找到一种方法来处理值班产生的额外工作。这项工作可以是解决由监视和警告系统检测到的实际问题的实际工作,也可以是修复监视和警报以减少误报的数量的工作。无论创建的工作的性质如何,在团队中公平,稳定地分配此工作非常重要。并非所有的值班班次都是等效的,有些要比其他的更复杂,因此,声明收到警报的人是负责消除此警报的所有后果的人,这可能导致工作分配不均。由服务员负责安排或分配工作可能更合理,团队的其他成员将随时准备帮助完成创建的工作。

(work-life balance)


考虑一下工作以外值班的影响。当您值班时,您可能会感觉自己已连接到手机和笔记本电脑,这意味着您始终随身携带笔记本电脑和移动路由器(USB调制解调器),或者只是不离开家/办公室。值班通常意味着在轮班期间放弃与朋友或家人见面之类的事情。这意味着每个轮班的持续时间取决于团队中的人数,轮班的频率可能会给人们带来不必要的负担。您可能需要试验轮班的持续时间和时间表,以找到至少适合大多数参与人员的时间表,因为不同的团队和人员将有不同的优先级和偏好。

当务之急是要意识到责任将对人们的生活产生影响,无论是在管理层面还是在个人层面。应该指出的是,特权较少的人会感受到更多的影响。例如,如果您不得不花时间照顾孩子或其他家庭成员,或者您发现大部分家务活都落在肩上,那么与没有这些工作的人相比,您已经有更少的时间和精力了职责。这样的“第二班”或“第三班”工作往往会对人们产生不成比例的影响,并且如果您以假定参与者不在办公室之外的个人生活的时间表或强度来设置轮值,则限制了能够参加会议的人员根据您的命令。

鼓励人们尽量保持大部分固定的时间表。您应该考虑为团队提供移动路由器(usb调制解调器),以便人们可以随身携带笔记本电脑离开家,并且仍然过着充实的生活。如有必要,鼓励人们在短时间内互相交换工作时间,以便人们可以在值班时去体育馆或看医生。不要营造一种文化,在这种文化中,职责应该意味着工程师从字面上看只能做什么。在工作与个人生活之间取得平衡是任何工作的重要组成部分,但尤其是在您考虑非工作时间时,团队中的年长成员应在平衡工作与个人生活方面尽可能树立榜样,并在值班时尽量做到这一点。

在个人层面上,别忘了向您的朋友,家人,伴侣,宠物等解释职责的含义(您的猫很可能不在乎,因为当您收到警报时,它们会在凌晨4点起床,尽管他们绝不会帮助您做出他的决定)。确保轮班结束后弥补损失的时间,无论是与朋友,家人见面,还是例如做梦。如果可以,请考虑设置一个无声闹钟(例如智能手表),该闹钟可以通过嗡嗡动您的手腕来唤醒您,以免唤醒您周围的任何人。当您处于换档过程中或完成时,想办法照顾自己。您可能需要组合一个“值班救生包”,以帮助您放松身心:聆听自己喜欢的音乐的播放列表,阅读您喜欢的书或预留时间与宠物一起玩。管理人员应该鼓励自我保健,方法是让他们在一周工作后放假,并确保人们在需要时寻求帮助。


总的来说,当值不应该仅是一项艰巨的工作:作为一个当值者,您有机会和责任,以便积极工作以使他们对将来将要值班的人更好,这意味着人们收到的信息会更少,他们会更准确。同样,使用Opsweekly之类的方法来跟踪警报的价值,可以帮助您找出使您的工作烦人的原因并加以解决。对于不活动的通知,请问自己是否有摆脱这些通知的方法-也许这意味着它们仅在工作时间起作用,因为有些事情您根本不需要在深夜响应。不要害怕删除警报,更改它们或将发送方法从“通过电话和电子邮件发送”更改为“仅电子邮件”。实验和迭代是随时间推移改进看门狗的关键。

对于实际上有效的警报,您应该考虑工程师完成必要操作的难易程度。每个正常运行的警报都应随附一本Runbook-考虑使用nagios-herald之类的工具将Runbook链接添加到警报中。如果警报是如此简单,以至于不需要Runbook模块,那么它可能就足够简单了,这样您就可以使用Nagios事件处理程序之类的工具来使响应自动化,从而使人们不必为容易执行的自动化任务而醒来或打扰。 Runbook和nagios-herald均可帮助您为警报添加有价值的上下文,从而帮助人们更有效地响应它们。看您能否回答以下常见问题:上次触发该警报是什么时候?上次谁回答了他,他们最终采取了什么行动(如果有的话)?同时还会显示哪些其他警报,并且它们是否相关?这种类型的上下文信息通常仅在人们的大脑中发现,因此,促进记录和共享上下文信息的文化可以减少响应警告所需的开销。因此,鼓励记录和共享上下文信息的文化可以减少响应警告所需的开销。因此,鼓励记录和共享上下文信息的文化可以减少响应警告所需的开销。

轮班制造成的疲劳的很大一部分是它们永远不会结束-如果您的团队有轮班制,那么他们在可预见的将来不可能随时终止。责任永无止境,我们可能会感到他们将永远可怕。缺乏希望是一个巨大的心理问题,可能会导致压力和疲惫,因此(除了现实之外)转向认为值班总是很糟糕的观念是一个开始思考长远职责的好开始。

为了使人们寄希望于值班情况会不断改善,有必要建立一个可观察的系统(与我先前提到的值班跟踪和分类相同)。跟踪您有多少警告,其中多少百分比需要服务员的干预,多少警告使人们醒来,然后努力营造一种鼓励人们做得更好的文化。如果您有一支庞大的团队,可能会很诱人,一旦您的职责即将结束,就放弃并说“这是未来值班官员的问题”,而不是四处寻找解决问题的方法-谁想要比在他们身上花更多的精力在值班上是必须的?在这里,同理心的文化可以发挥很大的作用,因为您不仅关心自己的值班福利,而且也关心同事。

这都是关于同理心的。


移情是使我们能够激发工作以改善上班经历的重要部分。作为经理或参与者,您可以积极评价甚至奖励人们的行为,从而使职责更好。系统支持(运营)是工程师经常感到人们只有在出现问题时才关注他们的领域之一:当站点崩溃时,人们会在那里大喊大叫,但是他们很少他们将了解操作员工程师在余下时间使站点正常工作的屏幕外工作。无论是感谢会议上的某个人,还是在一封普通电子邮件中,他们对改进特定警报,职责的技术方面,或给某人时间更换另一位工程师一段时间。

从长远来看,鼓励人们花费时间和精力来改善值班情况。如果您的团队有责任,则应该像规划路线图上的其他任何工作一样,计划这项工作并确定其优先级。责任是90%的熵,如果您不积极努力改善它们,随着时间的流逝,它们将变得越来越糟。与您的团队合作,找出能更好地激励和鼓励人们的因素,然后使用它来鼓励人们减少警报的噪音,编写运行手册并创建能够解决其值班问题的工具。无论您做什么,都不要承担可怕的责任,因为这是局势的不变部分。

All Articles