Site Reliability Engineering - заметки по ходу чтения (Часть 3)
Антон РябовПредыдущие заметки (Часть 1) - https://telegra.ph/sre-book-notes-11-19
Предыдущие заметки (Часть 2) - https://telegra.ph/sre-book-notes-05-07
#59
Вы наняли новых SR-инженеров, что теперь?
В гугле считают что самое важное для новичка - научиться дежурить, а инженерная работа сама приладится.
Для обучения новичка нужно знать ответы на вопросы:
- что он должен знать, чтобы начать дежурить?
- как можно оценить его готовность к дежурству?
- как можно воспользоваться энтузиазмом и любопытством новичков, чтобы принести пользу SRE
- какой вклад существующие инженеры могут внести в обучение новых сотрудников?
Люди разные и ни одна методика обучения не подойдет ко всем новичкам. Поэтому гугл дает "приемы" обучения SR-инженеров. Рекомендованные методы и антиметоды:
- Метод: разработка конкретных последовательных упражнений
- Антиметод: поручение низкоквалифицированной работы
- М: стимулирование к реверс-инжинирингу
- А: обучение с помощью операционных процедур, чек-листов и сценариев
- М: мотивация к анализу через чтение постмортем
- А: сокрытие информации о сбоях
- М: создание локализованных, но реалистичных сбоев для обучения системе мониторинга и инструментам
- А: предоставление возможности что-то исправить только после заступления на дежурство
- М: имитация катастроф, для тренировки работы в команде
- А: создание в команде экспертов
- М: теневое дежурство (и сравнение их заметок, с заметками дежурного)
- А: назначение новичка полноценным дежурным
- М: эксперты вместе с новичками проходят план (или его части) обучения
- А: рассмотрение планов обучения как неизменных и неприкосновенных для всех кроме экспертов
- М: обособление нестандартной работы над проектом для выполнения учениками
- А: предоставление всей работы над новыми проектами только самым опытным
#60
Постарайтесь упорядочить систему обучения.
Некоторые команды используют специальные пошаговые документы/чек-листы для новичков. В них дается описание сервиса, эксперты и разработчики и список необходимых знаний, например:
- Перед тем как двигаться дальше изучите A, B и C.
- Прочтите и проанализируйте следующий документы ...
- Вопросы для самопроверки ...
Для качественного обучения полезна целевая, а не черновая работа над проектом.
SR-инженеры должны иметь характерные особенности:
- столкнувшись с системами, которые никогда не видели - знать, как выполнять обратное проектирование (реверс-инжиниринг)
- при работе в больших масштабах будут появляться аномалии, которые трудно обнаружить, поэтому нужна способность мыслить статистически а не процедурно
- когда стандартные решения задач не работают, должны уметь импровизировать
Для тренировки дежурных, гугл использует разные игры, названия некоторых:
Важным моментом обучения новичка является его переход к самообучению. По сути, это должно быть вершиной обучения.
#61
Глава 29 - справляемся с отвлекающими факторами и прерываниями
SR инженер Фред приходит на работу, он не дежурный, делает себе кофе, надевает наушники марки "не беспокоить" и садится работать над своими проектами.
- Прилетает асап тикет
- Коллега дёргает по компоненту, в котором Фред разбирается больше
- Дёргают по тикету, который завели в его прошлое дежурство
- Релиз с кодом Фреда не собирается, надо проверить/поправить/откатить
В итоге Фред не смог сосредоточиться на своих задачах.
20 минутное прерывание это минимум два переключения контекста и потеря нескольких часов действительно продуктивной работы.
Как избежать?
Распределение времени между разными видами работы - концепция потерянного времени (это вольный перевод от Питера в русском варианте книги, советую ознакомиться с оригиналом - http://paulgraham.com/makersschedule.html)
Приходя на работу человек должен знать над чем он сегодня работает. Если человек дежурный, значит он дежурит и не может параллельно заниматься проектной работой.
#62
Операционная нагрузка - работа, которую нужно выполнять, чтобы поддерживать систему в функциональном состоянии.
В 30 главе рассказывается, что если у команды SR-инженеров становится много операционной работы, в Google могут прибегнуть к технике, когда в эту команду вводится еще один SR-инженер (в русском переводе этого нет, но я подозреваю, что для этих целей подходит более зрелый SR-инженер, хорошо знакомый с практиками компании).
Этот новый SR-инженер не берется за тикеты и не начинает дежурить, у него есть конкретный план по выявлению причин повышения операционной работы и их устранению.
Фаза 1: изучаем сервис и рабочее окружение
Фаза 2: делимся контекстом
Фаза 3: навязываем изменения
В конце, SR-инженеру, которого временно ввели в команду для улучшения ситуации, нужно написать отчет о проделанной работе и еще несколько месяцев мониторить эту команду, чтобы убедиться, что они практикуют то, чему он их научил.
Про каждую из фаз чуть подробнее в следующих заметках.
#63
Фаза 1: изучаем сервис и рабочее окружение
- знакомимся с командой и задачами
- определяем главные источники стресса
- определяем очаги возгорания:
- пробелы в знаниях
- сервисы разработанные SR-инженерами, важность которых повышается
- игнорирование проблемы из-за веры, что новое решение, которое скоро будет реализовано, устранит все недостатки
- алерты на которые не реагируют ни разработчики, ни SR-инженеры
- SLI/SLO/SLA
- сервис чей план производительности - "добавьте еще серверов, у нас ночью память кончилась"
- постмортемы, которые рекомендуют откат изменений
- любой критически важный компонент, на вопросы о котором SR-инженеры отвечают "мы ничего о нем не знаем, им владеют разработчики"
#64
Фаза 2: делимся контекстом
- Напишите для команды хороший, безобвинительный постмортем
- Сортируйте перегрузки в соответствии с их типами
два вида перегрузок:
- одни перегрузки не должны происходить, они вызывают рутину
- другие перегрузки, вызывают стресс и/или приводят к гневной переписке, на самом деле являются частью работы
Разделите перегрузки на рутину и не рутину и предоставьте этот список команде и четко объясните, в каком случае работу нужно автоматизировать, а в каком это допустимая ситуация.
#65
Фаза 3: навязываем изменения
Добиться здоровых отношений в команде непросто.
Люди всегда стремятся к поддержанию баланса, поэтому сконцентрируйтесь на создании (или восстановлении) правильных начальных условий или обучите их небольшому набору принципов, необходимых для принятия верных решений.
Начните с основ - SLO.
Не решайте проблемы самостоятельно, найдите для этого члена команды, проговорите с ним как эта работа решает проблему, сделайте ревью его изменений.
Обосновывайте свои аргументы
Задавайте наводящие вопросы (но не вопросы с подвохом)
#66
Глава 31. Общение и взаимодействие в службе SRE
Данные (информация о проектах, состоянии сервисов, систем и отдельных элементов) должны протекать через всю действующую систему, они же должны течь через команду SR-инженеров.
Потенциал службы SRE в том, что она отвечает за надежность имея те же навыки, что и команда разработчиков, что способствует повышению качества.
Специалиста, который отвечает за надежность, но не имеет полного набора навыков, будет недостаточно.
Производственные совещания:
- 1 раз в неделю
- 30-60 минут
- SR-инженеры доносят информацию о состоянии сервиса, за который отвечают
- повестка дня - грядущие изменения
- показатели
- сбои
- события по экстренным алертам
- предыдущие действия
- и т.д.
На совещания могут отправляться один или несколько представителей разработки сервиса.
Формально, команды SR-инженеров, имеют в составе:
- технического лидера - tech lead / TL
- менеджера - manager/SRM
- проектного менеджера - PM/TPM/PgM
Дальше в книге рассказывается две истории:
- как SR-инженеры сначала пилили отдельные фреймворки для мониторинга, а потом объединились и стали разрабывать Viceroy
- как Google Ads переходили с mysql на F1
в обоих историях ничего интересного не нашел
#67
Глава 32. Развитие модели вовлеченности SR-инженеров
Вовлечение SR-инженера в проект - PRR - Production Readiness Review
Обычно, на старте, на проект выделяются 1-3 SR-инженера, они начинают с совещания, на котором решают:
- установление SLO/SLA
- планирование изменений в сервисе для повышения надежности
- планирование расписания обучения (освоения сервиса командой SRE)
Чем раньше SR-инженер вовлекается в проект, тем легче потом взять его на поддержку SRE команде и тем надежнее он будет с минимальными затратами.
SR инженеры пилят фреймворки, чтобы разработчики могли сосредоточиться на бизнес логике, а фреймворк заботиться о корректном использовании инфраструктуры.
Структурный подход, основанный на фреймворках сервисов, единой производственной платформе и единой системе управления, дает множество преимуществ:
- Значительно снижена операционная нагрузка
- Универсальная поддержка по умолчанию
- Быстрое вовлечение (SR-инженера) с низкими издержками
- Общая ответственность
Последние две главы совсем вода, больше заметок нет.
Материалы блога doam.ru #SRE #Book #SRETuesday #Doamru