Философия SRE: Люди ненадежны
Автор: Варвара КрайвановаТретий пост об очевидном. Дисклеймер: личное мнение.
Люди ненадежны.
Это не значит, что люди плохие. Да, иногда люди целенаправленно вредят, но обычно…
Люди отвлекаются. Люди паникуют. Люди устают. Люди болеют. Люди хотят печеньку, а не вот это вот всё. У людей лапки (ой, это про котов).
Люди ошибаются. У человека может дрогнуть рука. Человек может что-то не знать или забыть.
Так устроены люди. Примите это.
Так устроены вы. Примите себя.
Так устроен мир. Это не баг, это фича.
Разрешите людям ошибаться. Разрешите себе ошибаться.
Это не значит, что на людей нельзя полагаться. Но этот аспект надо учитывать. И подходы тут не очень отличаются от работы с техническими системами. И да, то, о чем я говорю, не отменяет здравый смысл. Не впадайте в крайности. Или впадайте, но сознательно и целенаправленно :)
Дублируйте. Из ненадежных компонентов можно собирать надежные системы. Когда вероятность отказа компонента пусть немного, но меньше 100%, то вероятности отказа перемножатся, если компонент продублирован. Продублировав компонент несколько раз, вы можете достичь любого приемлемого уровня надежности.
Пример из практики SRE. SRE - это в том числе дежурные инженеры. Дежурят всегда двое, и если в случае инцидента основной дежурный недоступен (может быть миллион причин, от разрядившегося телефона или соседа с перфоратором, просверлившего силовой кабель, до внезапного цунами или того же ковида), второй будет на связи. Да, всё равно есть вероятность, что оба окажутся недоступны, но она значительно меньше, чем если бы дежурил один.
Пример из жизни. Если вы куда-то уезжаете, скажите кому-нибудь (родственнику, другу, соседке, начальнику), куда. Не полагайтесь только на себя, пусть будет во всем мире хотя бы ещё один человек, который знает, где вы. Выходите на связь пусть не часто, но регулярно. Тогда если у вас кочнатся деньги в незнакомой стране, или вы сляжете там с отравлением, или после позднего возвращения домой вы не напишете своему контакту, что добрались, ваши шансы выбраться из вероятной беды будут намного выше. При довольно небольших затратах.
Помогайте людям избегать ошибок. Второй путь - повысить отказоустойчивость самих ненадежных компонентов. Не полагайтесь на человеческую память: компы помнят лучше, используйте напоминалки. Компы также лучше в выполнении рутинных задач. Автоматизируйте. Не полагайтесь на человеческие навыки и здравый смысл в стрессовой ситуации: вам нужны простые и понятные инструкции на внешнем носителе на этот случай. Также заблокируйте действительно опасные вещи.
Это не значит, что человеческой ненадежностью можно оправдывать свою лень и некомпетентность. Мотивация и обучение также повышают надежность людей.
Примеры из практики SRE. Как я уже говорила, SRE дежурят. SRE отвечают за надежность сложных систем, а знать о сложной системе всё - невозможно. Особенно когда что-то в этой системе поломалось, и надо срочно чинить. У SRE есть плейбуки (playbooks), где просто и по пунктам написано, куда смотреть, чтобы понять, что сломалось, и как потенциально можно это починить. Это отсылка к моему предыдущему посту “Надежда - это не стратегия”. Да, с техническими системами это проще реализовать, но в жизни планировать критические ситуации заранее тоже полезно.
Другой пример: Никаких релизов в пятницу вечером. Вообще никаких :) Это должно быть заблокировано на сервере, и чтобы снять блокировку, инженер должен предоставить обоснование.
Примеры из жизни. Не тратьте время на запоминание дат, времени встречи и списков покупок. И список задач тоже :) Запишите. (Те Самые Даты запомнятся сами, рано или поздно. А если не запомнятся, то так ли важно, в какой конкретно день?) Если вы худеете, покупать низкокалорийные вкусняшки и заставлять себя считать калории - надежнее, чем тренировать силу воли в полночь перед полным холодильником. Ну а если вы всё равно обнаружили себя с котлетой/шоколадкой во рту… Не вините себя! Но об этом будет в другом посте.
А ещё, давайте себе и другим восстанавливаться. Человек не может эффективно работать, учиться, да и просто жить, если он голоден, устал или болен.
Итого: люди ненадежны. Не ждите, что они (или вы сами!) будут идеальными киборгами или супер-героями. Гораздо конструктивнее признать эту ненадежность в других и в себе, учитывать и контролировать ее
И да, этот пост не покрывает решение проблемы, что делать, если люди используют свою ненадежность как оправдание, чтобы творить всякий треш. Это уже не вопрос надежности, это - к архитекторам :)
Напоследок, немного из личного опыта. Я долгое время была перфекционистом с синдромом отличницы. Мне было легко признать, что людям свойственно ошибаться (11 лет работы в университете, там полно наглядных доказательств :) ), но разрешить себе ошибаться - это было испытание. Умение признавать свое несовершенство, свое право на ошибки и свои ошибки - это был важный шаг на пути к более стабильной и счастливой жизни.
PS: конечно же, есть соответствующий постулат в мерфологии: первый закон Джилба. Компьютеры ненадежны, но люди еще ненадежнее.
А как сильно вы полагаетесь на других людей? А на себя?