实施轮班时要考虑什么

《高效 DevOps》作者 Ryn Daniels 分享了任何人都可以用来创建更好、更少令人沮丧且更可持续的 Oncall 轮换的策略。

实施轮班时要考虑什么

随着 DevOps 的出现,如今许多工程师都以这种或那种方式组织轮班,这曾经是系统管理员或运营工程师的唯一责任。 值班,尤其是在非工作时间,并不是大多数人喜欢的任务。 值班会扰乱我们的睡眠,干扰我们白天想做的正常工作,并干扰我们的整体生活。 随着越来越多的团队参与守夜活动,我们提出了这样的问题:“作为个人、团队和组织,我们可以做些什么来使守夜活动更加人性化和可持续?”

拯救你的睡眠

通常,当人们想到值班时首先想到的就是这会对他们的睡眠产生负面影响; 没有人希望半夜被警报吵醒。 如果您的组织或团队规模足够大,您可以使用“跟随太阳”轮换,即多个时区的团队参与同一轮换,轮班时间较短,因此每个时区仅在其业务期间值班(或至少醒来)小时。 建立这样的轮换可以创造奇迹,减少服务员承担的夜间工作量。

如果您没有足够的工程师和地理分布来支持跟随太阳轮换,您仍然可以采取一些措施来减少人们在半夜被不必要地吵醒的可能性。 毕竟,凌晨 4 点起床解决客户面临的紧迫问题是一回事; 醒来却发现自己正在处理一场虚惊则是另一回事。 它可以帮助您检查您设置的所有警报,并询问您的团队实际上需要哪些警报来在下班后叫醒某人,以及这些警报是否可以等到早上。 让人们同意关闭一些非工作警报可能很困难,特别是如果过去错过的问题已经导致了问题,但重要的是要记住,睡眠不足的工程师并不是最高效的工程师。 在真正重要的工作时间设置这些警报。 如今,大多数警报工具都允许您为下班后通知设置不同的规则,无论是 Nagios 通知周期还是在 PagerDuty 中设置不同的时间表。

睡眠、职责和团队文化

睡眠中断的其他解决方案涉及更大的文化变革。 解决此问题的一种方法是监控警报,特别注意警报何时到达以及它们是否可采取行动。 行动周刊 是由 Etsy 创建和发布的工具,允许团队跟踪和分类他们收到的警报。 它可以生成图表,显示有多少警报唤醒了人们(使用健身追踪器的睡眠数据),以及有多少警报实际上需要人类采取行动。 使用这些技术,您可以跟踪随叫随到轮换的有效性及其对睡眠的影响。

团队可以发挥作用,确保每个值班人员得到充分的休息。 创造一种鼓励人们照顾自己的文化:如果你因为晚上被叫而失眠,你可以在早上多睡一会儿,以弥补失去的睡眠时间。 团队成员可以互相照顾:当团队通过 Opsweekly 之类的工具相互分享睡眠数据时,他们可以去找值班的同事说:“嘿,看起来你昨晚与 PagerDuty 度过了一个艰难的夜晚。” “今晚要不要我给你盖被子,让你好好休息一下?” 鼓励人们以这种方式互相支持,并阻止人们将自己推向极限并避免寻求帮助的“英雄文化”。

减少上班时的影响

当工程师因为在值班时被吵醒而感到疲倦时,他们显然不会以 100% 的能力工作,但即使不考虑睡眠不足,值班也会对工作产生其他影响。 执勤期间最严重的损失之一是由于干扰因素、环境变化造成的:由于注意力不集中和环境切换,一次中断可能会导致至少 20 分钟的损失。 您的团队可能会有其他干扰源,例如其他团队生成的票证、通过聊天和/或电子邮件提出的请求或问题。 根据这些其他中断的数量,您可以考虑将它们添加到值班时的现有轮换中,或者设置第二个轮换来处理这些其他请求。

当您规划团队将要做的工作(长期和短期)时,考虑到这一点很重要。 如果您的团队往往有相当密集的轮班,则需要在长期规划中考虑到这一事实,因为您可能会遇到这样的情况:全体员工在任何给定时间都有效地值班,而不是做其他工作。 在短期规划中,您可能会发现待命人员由于其待命职责而无法按时完成任务 - 这应该是预料之中的,团队的其他成员应该愿意适应并帮助确保工作顺利完成完成工作,并为待命人员的工作任务提供支持。 无论值班人员是否被叫来,值班人员轮班都会影响值班人员执行其他工作的能力——不要指望值班人员除了下班后值班。

团队必须找到一种方法来应对值班时产生的额外工作。 这项工作可能是解决监控和警报系统检测到的实际问题的实际工作,也可能是修复监控和警报以减少误报警报数量的工作。 无论所创建的工作性质如何,在整个团队中公平且可持续地分配工作非常重要。 并非所有待命轮班都是一样的,有些轮班比其他轮班更复杂,因此,如果指定接收警报的人是负责处理该警报所有后果的人,可能会导致工作分配不均。 让值班人员负责安排或分配工作可能更有意义,并期望团队的其他成员愿意帮助完成所创建的工作。

创造并保持工作与生活的平衡

想想值班对您工作之外的生活有何影响。 当您值班时,您可能会感到与手机和笔记本电脑捆绑在一起,这意味着您总是随身携带笔记本电脑和移动路由器(USB 调制解调器),或者干脆不离开家/办公室。 随叫随到通常意味着放弃轮班期间见朋友或家人等事情。 这意味着每次轮班的时间长短取决于团队中的人数,而轮班的频率会给人们带来过度的负担。 您可能需要尝试轮班的长度和时间安排,以找到至少适合大多数相关人员的时间表,因为不同的团队和人员会有不同的优先事项和偏好。

认识到值班对人们生活的影响至关重要,无论是在管理层面还是在个人层面。 应该指出的是,特权较少的人会不成比例地感受到这种影响。 例如,如果你必须花时间照顾孩子或其他家庭成员,或者如果你发现大部分家务都落在你的肩上,那么你已经比那些不承担责任的人拥有更少的时间和精力。 这种类型的“二班制”或“三班制”工作往往会对人员产生不成比例的影响,如果您建立的值班轮换时间表或强度假设参与者在办公室之外没有个人生活,那么您就限制了参与工作的人员。可以加入你的团队。

鼓励人们尽量保持正常的作息时间。 您应该考虑为团队提供移动路由器(USB 调制解调器),以便人们可以带着笔记本电脑离开家,但仍然可以过上正常的生活。 如有必要,鼓励人们互相交换值班时间,以便人们可以在值班时去健身房或看医生。 不要创造一种随叫随到的文化,即工程师除了随叫随到之外什么都不做。 工作与生活的平衡是任何工作的重要组成部分,但特别是当您考虑下班时间时,团队中的高级成员应该在工作与生活的平衡方面为其他人树立榜样,在值班期间尽可能做到这一点。

在个人层面上,不要忘记向你的朋友、家人、伴侣、宠物等解释值班意味着什么(你的猫可能不会在意,因为当你收到警报时,它们已经在凌晨 4 点起床了) ,尽管他们绝不会想帮助你解决这个问题)。 确保在轮班结束后弥补损失的时间,例如,无论是去看望朋友、家人还是睡觉。 如果可以的话,考虑设置一个无声闹钟(例如智能手表),它可以通过手腕的嗡嗡声唤醒您,这样您就不会吵醒周围的任何人。 当您值班期间和结束时,想办法照顾好自己。 您可能想要准备一个“随叫随到的生存工具包”来帮助您放松:听您最喜欢的音乐的播放列表,阅读您最喜欢的书,或者花时间与您的宠物玩耍。 管理者应该鼓励员工自我保健,在员工值班一周后休息一天,并确保员工在需要时寻求(并获得)帮助。

提升执勤体验

总的来说,值班不应该仅仅被视为一项糟糕的工作:作为值班者,你有机会也有责任积极工作,让未来值班的人过得更好,这意味着人们收到的消息会更少,而且会更准确。 同样,使用 Opsweekly 之类的工具跟踪警报的价值可以帮助您找出是什么让您的 on-call 烦人并解决它。 对于不活动的警报,问问自己是否有办法消除这些警报 - 也许这意味着它们只会在工作时间内响起,因为有些事情您不需要在半夜做出响应。 不要害怕删除警报、更改警报或将发送方式从“发送到电话和电子邮件”更改为“仅电子邮件”。 实验和迭代是随着时间的推移提高职责的关键。

对于实际上可操作的警报,您应该考虑工程师采取必要操作的难易程度。 每个正在运行的警报都应该有一个与之配套的运行手册 - 考虑使用 nagios-herald 等工具将运行手册链接添加到警报中。 如果警报足够简单,不需要运行手册,那么它可能足够简单,您可以使用 Nagios 事件处理程序之类的东西自动响应,这样人们就不必为了轻松自动化的任务而醒来或中断自己。 Runbook 和 nagios-herald 都可以帮助您为警报添加有价值的上下文,这将帮助人们更有效地响应警报。 看看您是否可以回答常见问题,例如:此警报上次响起是什么时候? 上次谁回答了这个问题,他们最终采取了哪些行动(如果有)? 与此同时出现的其他警报有哪些?它们是否相关? 这种类型的上下文信息通常只存在于人们的大脑中,因此鼓励记录和共享上下文信息的文化可以减少响应警报所需的开销。

随叫随到带来的疲劳很大一部分原因在于它们永远不会结束——如果你的团队有随叫随到,那么在可预见的未来,它们不太可能随时结束。 转变永远不会结束,我们可能会觉得它们总是很糟糕。 这种缺乏希望是一个很大的心理问题,可能会导致压力和疲惫,因此解决责任永远是可怕的观念(除了现实之外)是开始长期思考你的责任的好地方。

为了让人们看到值班情况不断改善的希望,系统必须具有可观察性(与我之前提到的值班跟踪和分类相同)。 跟踪您有多少警报、其中需要人工干预的百分比、有多少警报唤醒人们,然后努力创建一种鼓励人们做得更好的文化。 如果你有一个庞大的团队,当你的值班时间结束时,你可能会很容易举起双手说“这是未来值班人员的问题”,而不是埋头苦干去解决问题——谁愿意花更多钱呢?执勤所付出的努力比他们所需付出的努力还要多吗? 这就是同理心文化可以发挥巨大作用的地方,因为你不仅要关心自己在值班时的福祉,还要关心你的同事。

这都是关于同理心

同理心是我们提高绩效、改善待命体验的重要组成部分。 作为经理或成员,您可以积极评估甚至奖励那些使转变更好的行为。 运营支持是工程师经常觉得人们只在出现问题时才关注他们的领域之一:当站点崩溃时,人们会在那里对他们大喊大叫,但他们很少了解运营支持的幕后工作工程师们致力于保持网站在其余时间保持运行。 认可工作可以大有帮助,无论是在会议或一般电子邮件中感谢某人改进了特定警报、值班的技术方面,还是给某人时间代替另一位轮班工程师一段时间。

鼓励人们花时间和精力来长期改善他们的待命状况。 如果您的团队有待命人员,您应该像路线图上的任何其他工作一样规划这项工作并确定其优先级。 On-call 是 90% 的熵,除非你积极努力改进它们,否则随着时间的推移,它们会变得越来越糟。 与您的团队合作找出最能激励和奖励人们的因素,然后利用它来鼓励人们减少警报噪音、编写操作手册并创建解决随叫随到问题的工具。 无论你做什么,都不要满足于将可怕的责任作为事态的永久组成部分。

来源: habr.com

添加评论