О чем стоит задуматься при внедрении дежурств
Автор статьи «Effective DevOps» Райн Дэниелс (Ryn Daniels) делится стратегиями, которые каждый может использовать для создания более качественных, не раздражающих и устойчивых ротаций дежурных Oncall.
С появлением Devops, многие инженеры в наши дни так или иначе организуют дежурства, что когда-то было исключительно обязанностью сисадминов или инженеров по эксплуатации. Дежурство, особенно проходящее в нерабочие часы, не является задачей, которая нравится большинству людей. Дежурство Oncall может нарушать наш сон, мешать обычной работе, которую мы пытаемся сделать в течение дня и мешать нашей жизни в целом. Поскольку все больше и больше команд участвуют в дежурствах, мы задались вопросом — «Что мы как отдельные люди, команды и организации, можем сделать для того, чтобы дежурства стали более человечными и стабильными?».
Сохраняем сон
Часто первое, о чем думают люди, когда вспоминают о дежурстве, это то что, оно негативно повлияет на их сон; никто не хочет, чтобы алерт разбудил их посреди ночи. Если ваша организация или команда станет достаточно большой, вы можете использовать ротацию «вслед за солнцем (follow-the-sun)», когда команды, находящиеся в нескольких часовых поясах, участвуют в одной и той же ротации, при этом дежурные смены будут короче, так что каждый часовой пояс будет дежурить только во время своих рабочих (или, по крайней мере, просыпаться) часов. Установка такой ротации может чудесно помочь со снижением ночной нагрузки, которую берет на себя дежурный.
Если у вас не хватает инженеров и их географического распределения для обеспечения ротации «вслед за солнцем (follow-the-sun)», все еще есть то, что можно сделать, чтобы уменьшить вероятность того, что людей будут будить посреди ночи без необходимости. В конце концов, одно дело — встать с постели в 4 часа утра, чтобы решить актуальную, обращенную к клиенту проблему; совсем другое — проснуться только для того, чтобы обнаружить, что имеешь дело с ложной тревогой. Это может помочь проверить все оповещения, которые вы настроили, и спросить вашу команду, какие из них действительно нужны, чтобы разбудить кого-то в нерабочее время, и могут ли эти оповещения подождать до утра. Может быть трудно заставить людей согласиться отключить некоторые нерабочие оповещения, особенно если пропущенные проблемы вызывали проблемы в прошлом, но важно помнить, что инженер, лишенный сна, не является самым эффективным инженером. Установите эти оповещения на рабочее время, когда они действительно важны. Большинство инструментов оповещений в наши дни позволяют настраивать различные правила для уведомлений в нерабочее время, будь то периоды уведомлений Nagios или настройка различных расписаний в PagerDuty.
Сон, дежурство и командная культура.
Другие способы решения проблемы нарушения сна связаны с более значительными культурными изменениями. Один из способов решения этой проблемы заключается в отслеживании алертов, уделяя особое внимание тому, когда они поступают и являются ли они действенными. Opsweekly — это инструмент, созданный и опубликованный компанией Etsy, который позволяет командам отслеживать и классифицировать получаемые предупреждения. Он может генерировать графики, показывающие сколько предупреждений разбудили людей (с помощью данных «О сне» от фитнес-трекеров), а также сколько предупреждений на самом деле нуждались в действиях со стороны человека. Используя эти технологии, вы можете отслеживать эффективность вашей ротации дежурных и ее влияние на сон с течением времени.
Команда может играть определенную роль в обеспечении достаточного отдыха каждого дежурного. Создайте культуру, которая поощряет людей заботиться о себе: если вы теряете сон из-за того, что вас вызвали ночью, вы можете поспать немного дольше с утра, чтобы попытаться наверстать упущенное время сна. Члены команды могут присматривать друг за другом: когда команды делятся друг с другом данными о своем сне через что-то вроде Opsweekly, они могут пойти к своим коллегам по дежурству и сказать: «Эй, похоже, у тебя была тяжелая ночь с PagerDuty прошлой ночью — хочешь, чтобы я прикрыл тебя сегодня вечером, чтобы ты мог немного отдохнуть»? Призывайте людей поддерживать друг друга таким образом и не одобряйте «культуру героев», где люди будут дотягивать до предела, избегая просьб о помощи.
Сокращение влияния дежурств на работе
Когда инженеры устали, потому что их разбудили во время дежурства, они, очевидно, не будут работать со 100% силой в течение дня, но даже без учета недосыпа, дежурство может также иметь другие последствия для работы. Одна из самых значительных потерь во время дежурства связана с фактором прерывания, изменением контекста: одно прерывание может привести к потере не менее 20 минут из-за потери фокуса и переключения контекста. Вполне вероятно, что у ваших команд будут другие источники прерываний, такие как тикеты, генерируемые другими командами, запросы или вопросы, поступающие через чат и/или по электронной почте. В зависимости от объема этих других прерываний, вы можете рассмотреть возможность добавления их к существующей ротации во время дежурства или настройки второй ротации только для обработки этих других запросов.
Важно принимать это во внимание, когда вы планируете работу, которую будет выполнять команда, как на долгосрочной, так и на краткосрочной основе. Если в вашей команде есть тенденция к довольно интенсивным дежурным сменам, этот факт необходимо учитывать при долгосрочном планировании, так как у вас, возможна ситуация, когда весь персонал, эффективно занимается дежурством в любой момент времени, а не другой работой. В краткосрочном планировании вы можете обнаружить, что дежурный не в состоянии уложиться в установленные сроки из-за его обязанностей по дежурству — этого следует ожидать, а остальные члены команды должны быть готовы приспособиться и помочь, чтобы убедиться, что работа будет выполнена и дежурный получит поддержку в своих рабочих задачах. В независимости от того будет ли дежурный вызван, дежурная смена повлияет на его способность выполнять другую работу — не ожидайте, что дежурный будет работать по ночам, чтобы завершить запланированные проекты в дополнение к дежурству в нерабочее время.
Команды должны будут найти способ справиться с дополнительной работой, генерируемой на дежурствах. Эта работа может быть реальной работой по исправлению реальных проблем, обнаруженных с помощью систем мониторинга и оповещения, или это может быть работа по исправлению мониторинга и предупреждений, чтобы уменьшить количество ложноположительных оповещений. Каким бы ни был характер создаваемой работы, важно справедливо и устойчиво распределить эту работу по команде. Не все дежурные смены равнозначны, некоторые сложнее других, поэтому утверждение о том, что человек, получивший алерт, является лицом, ответственным за устранение всех последствий этого оповещения, может привести к неравномерному распределению работы. Возможно, для дежурного более разумно быть ответственным за планирование или распределение работы, ожидая, что остальная часть команды будет готова помочь с завершением созданной работы.
Создание и поддержание баланса между работой и личной жизнью (work-life balance)
Подумайте о влиянии, оказываемом дежурством на жизнь вне работы. Когда вы на дежурстве, вероятно, вы будете чувствовать себя привязанным к вашему мобильному телефону и ноутбуку, это значит, что вы всегда носите с собой ноутбук и мобильный роутер (usb модем) или просто не выходите из дома/офиса. Быть дежурным обычно означает отказаться от таких вещей, как встречи с друзьями или семьей во время вашей смены. Это означает, что продолжительность каждой смены зависит от количества людей в вашей команде, и частота смен может стать чрезмерным бременем для людей. Возможно, вам придется поэкспериментировать с продолжительностью и графиком ваших смен, чтобы найти расписание, подходящее как минимум для большинства вовлеченных людей, поскольку разные команды и люди будут иметь разные приоритеты и предпочтения.
Крайне важно осознавать влияние, которое дежурство окажет на жизнь людей, как на уровне управления, так и на индивидуальном уровне. Следует отметить, что воздействие будет ощущаться в большей степени людьми с меньшими привилегиями. Например, если вам приходится тратить время на уход за детьми или другими членами семьи или если вы обнаружите, что большая часть работы по дому ложится на ваши плечи, у вас уже есть меньше времени и энергии, чем у кого-то, у кого нет этих обязанностей. Такая работа «второй смены» или «третьей смены» имеет тенденцию непропорционально влиять на людей, и если вы установите ротацию по дежурству с графиком или интенсивностью, которая предполагает, что у участников нет личной жизни за пределами офиса, вы ограничиваете людей, которые смогут участвовать в вашей команде.
Поощряйте людей в попытках сохранить большую часть своего обычного графика. Вы должны подумать о том, чтобы предоставить команде мобильные роутеры (usb модемы), чтобы люди могли покинуть дом со своим ноутбуком и при этом иметь некоторое подобие жизни. Поощряйте людей обмениваться часами дежурства друг с другом, если это необходимо, в течение коротких периодов времени, чтобы люди могли ходить в спортзал или посещать врача во время дежурства. Не создавайте культуру, где дежурство должно означать, что инженеры в буквальном смысле ничего не делают, кроме как дежурят. Баланс между работой и личной жизнью является важной частью любой работы, но особенно, если учесть нерабочее время, более старшие члены вашей команды должны показывать пример остальным в плане баланса работы и личной жизни, настолько, насколько это возможно во время дежурства.
На индивидуальном уровне не забудьте объяснить что означает дежурство своим друзьям, членам семьи, партнерам, домашним животным и т. д. (вашим кошкам, скорее всего, будет все равно, так как они и так встают в 4 утра, когда вам приходит алерт, хотя они ни в коем случае не захотят помогать вам с его решением). Убедитесь, что вы наверстали упущенное время после того, как ваша смена закончилась, будь то встречи с друзьями, родными или например, сон. Если можете, подумайте о настройке бесшумного будильника (например, умных часов), которые могут разбудить вас, жужжа у вас запястье, чтобы не разбудить никого вокруг вас. Найдите способы позаботиться о себе, когда вы находитесь в разгар дежурной смены и когда она закончена. Возможно, вы захотите собрать «набор для выживания на дежурстве», который поможет вам расслабиться: послушать плейлист любимой музыки, почитать любимую книгу или выделить время, чтобы поиграть с домашним животным. Менеджеры должны поощрять заботу о себе, давая людям выходной день после недели дежурства и следя за тем, чтобы люди просили (и получали) помощь, когда она им нужна.
Улучшение опыта дежурства
В целом, нахождение на дежурстве не должно восприниматься только как ужасная работа: у вас есть возможность и ответственность как человека, участвующего в дежурствах для того, чтобы активно работать с целью сделать их лучше для людей, которые будут дежурить в будущем, а это означает, что люди будут получать меньше сообщений и они будут более точными. Опять же, отслеживание ценности ваших оповещений, используя что-то вроде Opsweekly, может способствовать выяснению того, что делает ваше дежурство раздражающим и исправить это. Для неактивных оповещений спросите себя, есть ли способы избавиться от этих оповещений — возможно, это означает, что они будут срабатывать только в рабочее время, потому что есть некоторые вещи, на которые вам просто не нужно реагировать посреди ночи. Не бойтесь удалять оповещения, менять их или изменять способ отправки с «присылать на телефон и на электронную почту» на «только на электронную почту». Экспериментирование и итерация являются ключом к улучшению дежурств с течением времени.
Для оповещений, которые на самом деле являются действующими, вы должны подумать о том, насколько просто для инженера выполнить необходимые действия. Каждое работающее оповещение, должно иметь runbook, который идет вместе с ним — рассмотрите возможность использования такого инструмента, как nagios-herald, чтобы добавить ссылки на Runbook к вашим оповещениям. Если оповещение настолько простое, что ему не нужен модуль Runbook, оно, вероятно, и достаточно простое, чтобы вы могли автоматизировать ответ, используя что-то вроде обработчиков событий Nagios, что избавляет людей от необходимости просыпаться или прерываться для легко автоматизируемых задач. И runbooks, и nagios-herald могут помочь вам добавить ценный контекст в ваши оповещения, что поможет людям более эффективно реагировать на них. Посмотрите, сможете ли вы ответить на такие распространенные вопросы, как: Когда в последний раз срабатывал этот алерт? Кто ответил на него в прошлый раз, и какие действия они в конечном итоге предприняли (если таковые имеются)? Какие другие оповещения появляются одновременно с этим и связаны ли они? Этот вид контекстной информации часто оказывается только в мозгах людей, поэтому поощрение культуры документирования и обмена контекстной информацией может сократить объем накладных расходов, необходимых для реагирования на предупреждения.
Существенная часть усталости, которая возникает из-за дежурств, заключается в том, что они никогда не заканчиваются — если в вашей команде есть дежурства, маловероятно, что они закончатся когда угодно в обозримом будущем. Дежурства никогда не кончаются, и мы можем испытывать чувство, что они всегда будут ужасными. Это отсутствие надежды является большой ментальной проблемой, которая может способствовать стрессу и истощению, поэтому обращение к восприятию (в дополнение к реальности) того, что дежурства всегда будут ужасны — это хороший старт, чтобы начать думать о своих дежурствах в долгосрочной перспективе.
Для того, чтобы дать людям надежду на то, что ситуация на дежурствах когда-либо улучшится, необходимо иметь наблюдаемость системы (то же самое отслеживание и категоризация дежурств, о которой я упоминал ранее). Следите за тем, сколько предупреждений у вас есть, какой процент из них требуют вмешательства дежурного, сколько из них будят людей, а затем работайте над созданием культуры, которая побуждает людей делать вещи лучше. Если у вас большая команда, может быть заманчиво, как только ваше дежурство подходит к концу, опустить руки и сказать «это проблема будущего дежурного», а не копаться, чтобы что-то исправить — кто хочет потратить больше усилий на дежурства, чем от них требуется? Вот где культура эмпатии может иметь большое значение, потому что вы заботитесь не только о своем благополучии на дежурстве, но и о своих коллегах.
Это все об эмпатии
Эмпатия — важная часть того, что позволяет нам стимулировать работу, которая улучшает опыт дежурств. Будучи менеджером или участником, вы можете положительно оценить или даже вознаградить людей за их поведение, которое делает дежурства лучше. Поддержка систем (operations) — это одна из тех областей, где инженеры часто чувствуют, что люди обращают на них внимание только тогда, когда что-то идет не так: люди будут рядом, чтобы кричать на них, когда сайт падает, но они редко узнают о тех «закадровых» усилиях, которые инженеры-операторы вкладывают в то, чтобы сайт работал на протяжении всего остального времени. Признание работы может иметь большое значение, будь то благодарность кому-либо на собрании или в общей электронной почте за улучшение конкретного алерта, технического аспекта дежурства, или предоставление кому-то времени для подмены другого инженера на смене на некоторое время.
Поощряйте людей тратить время и усилия на то, чтобы улучшить ситуацию на дежурствах в долгосрочной перспективе. Если в вашей команде есть дежурства, вы должны планировать и расставлять приоритеты для этой работы так же, как и для любой другой работы в вашей дорожной карте (roadmap). Дежурства — это на 90% энтропия, и если вы не будете активно работать над их улучшением, со временем они будут становиться все хуже и хуже. Поработайте с вашей командой, чтобы выяснить, что лучше мотивирует и поощряет людей, а затем используйте это, чтобы побудить людей уменьшить шум оповещений, написать runbooks и создать инструменты, которые решат их проблемы на дежурствах. Что бы вы ни делали, не соглашайтесь на ужасные дежурства, как на неизменную часть положения дел.