Какой из следующих трех сценариев вы испытываете больше всего, когда происходит новый инцидент?
• удивлен: Вы не видели проблему, и это очень удача, вы вернете систему в Интернете.
• Подготовлен: вы видели подобные инциденты, которые случались достаточно раз, чтобы вы не удивлены, поэтому вы знаете, где проблема и как ее исправить.
• Упреждающий: Инцидент новой. Вы немедленно обнаруживаете его, быстро исправляете его и предотвращаете его снова.
Для многих команд инциденты, к сожалению, попадают в сценарий 1, с некоторыми классами инцидентов застать их врасплох. Удивительно, что, несмотря на огромное количество времени, над которым мы проводим, работая и думая о наших системах, мы, кажется, очень мало контролируем их. Если мы не сможем предсказать, откуда придут следующие инциденты, то мы навсегда застрям в реактивном цикле ремонта.
Аналогичным примером является знаменитая басня из трех маленьких свиней. Мы можем представить различные композиции трех сценариев выше как дома соломы, палок и кирпичи. В каком доме вы сейчас живете? В каком доме вы бы хотели жить?
«Соломенный дом» : Перед лицом инцидентов вы чаще всего удивляетесь, иногда приготовленные, редко активные. Это система, легко сбитая инцидентами. Вы застряли, чтобы построить дом обратно после каждого дождевого шторма или взорвать волка. Вы чувствуете стресс и увязанный в аду пейджера.
«Палочный дом» : Перед лицом инцидентов вы часто готовите, иногда удивляются, редко проактивны. Вы видите, как дом скрипится и протекает, когда идет дождь, так что вы знаете, какие патчи слабы. Вы заменяете каждую палку, когда она ломается — исправляя каждый инцидент, как это происходит. Но ураганы по -прежнему застают вас врасплох, разрушая дом, потому что у вас не было времени, денег или партнеров, чтобы укрепить структуру в целом. Вы чувствуете себя застрявшим, делая повторяющуюся работу.
«Кирпичный дом» : Вы в основном упреждаете профилактику инцидентов, часто подготовленные к инцидентам и редко удивляются. Вы разработали структуру этого дома, чтобы противостоять волкам и ураганам. Еще до того, как дом был построен, в черниле не было не одного, а два слоя кирпича, крепких колонн и арки, которая была бы сложно установить. Ваша команда предназначена с дизайном, чтобы быть крепким и масштабируемым. Вы предотвращаете классы проблем и быстро смягчаете неожиданные инциденты. Вы чувствуете себя спокойным и контролируем.
Переезд в кирпичный дом никогда не случайно. Строгие практики культуры — это кирпичи, которые составляют прочный дом. Написание Postmortems Well-одна из таких культурных практик (она была в значительной степени, в части 1 этой серии из двух частей). Здесь мы рассмотрим 4 дополнительных практики культуры, которые укрепит надежность компании.
Это часть 2 интервью с 10+ годами ветерана Google SRE, Стивом МакГи. Приведенная ниже практика потребуется больше усилий для реализации, чем посмертные практики, представленные в части 1. Как и при наборе персонала, краткосрочная потеря производительности является необходимой жертвой для долгосрочной выгоды для исполнения.
(Отказ от ответственности: Обратите внимание, что Стив дал это интервью до повторного присоединения Google, поэтому это интервью не является заявлением Google, и он не представляет представление Google.)
Как упоминалось в первой части статьи, ведущие команды из ада пейджера в крепкий дом кирпичей возможны только с тщательными и строгими процессами. Одним из таких процессов является приоритетность ошибок, вызывающих инциденты. Любая существующая ошибка, которая «касается» посмертной, должна иметь значение +1 (например, P2-> P1). Конечно, это должно быть согласовано с помощью руководства в первую очередь, поскольку приоритетная инфляция, оставленная без контроля, может привести к значительному влиянию на существующие графики. Помните, что если все P1, ничего нет.
Эта практика вписывается в культуру сортировки жуков и гигиены. Вы можете принять отдельный периодический обзор «посмертных ошибок», чтобы оценить скорость их разрешения. Один из способов отслеживать скорость — установить SLO, внутреннюю цель. Например, «все ошибки, вызывающие инциденты, будут разрешены в течение 30 дней».
Хорошая система мониторинга может изменить правила игры для ускорения разрешения инцидентов. Представьте себе систему мониторинга мониторинга, которая может быть легко настроена по требованию командой для каждого инцидента. Когда происходит инцидент, вы можете нарезать данные по -разному, чтобы сравнить полученные графики на одном и том же интерфейсе. Хорошим примером является консольная система Google Viceroy, которая обеспечивает постоянный интерфейс для определения, просмотра и сверления в наборы графиков.
Тем не менее, избегайте попыток предварительно создать «идеальную консоль». Вместо этого создайте гибкую консольную систему, которая позволяет быстро развивать эфемерную консоль для определенного предупреждения. В идеальном мире все соответствующие члены команды могут сотрудничать в режиме реального времени в консоли для инцидента. Графики из консоли включены в посмертную помощь, чтобы помочь читателям понять, что произошло.
Какие самые сложные инциденты для обнаружения?
Распространенные медленные ожоги. Эти проблемы часто начинаются медленно, но попадают в переломный момент, который наносит удар по системе. Мы часто видим это с мониторингом емкости. Несмотря на то, что мы не способны к метрике, о которой мы заботимся (например, ОЗУ), существует другой ресурс (например, потоки), который ограничивает нас. Таким образом, у нас неожиданно кончились потоки, прежде чем у нас закончится оперативная память. Подобные проблемы могут быть обнаружены только глубоким мониторингом. Но глубокого мониторинга недостаточно, высокие сигнальные и низкие шумовые сланцы имеют решающее значение для максимизации полезности глубокого мониторинга. Но мониторинг и улучшения SLO не могут быть достигнуты только SRES.
SRES и команда разработчиков должны работать вместе, чтобы постоянно обновлять и заполнять пробелы в мониторинге, как это было раскрыто посмертными, чтобы создать цикл непрерывного обучения и роста.
SRE хороши в обнаружении и выделении хороших показателей на основе инфраструктуры (как оборудования, так и программного обеспечения), но, возможно, не сразу знать, что искать в данном куске программного обеспечения приложения. Например, разоблачение счетчика, который отслеживает количество раз, когда вы пересматриваете внутреннюю структуру данных, — это то, что разработчик услуги легко определит, является хорошей идеей. SRE, который является новым для продукта, может придется прочитать и понять каждую строку кода, прежде чем осознать, что счетчик является важной метрикой для отслеживания.
Наличие команды разработчиков разоблачает показатели, специфичные для обслуживания, а также команда инфраструктуры/платформы/SRE, разоблачающая сервисные метрики, даст вам наилучшие шансы на наличие правильных показателей на месте, которые можно найти во время отключения.
Наконец, любимой аналогией Стива для процесса разрешения инцидентов является «Обрезка дерева причины». В поисках причины инцидента — это все равно, что управлять алгоритмом обхода дерева. Вы не хотите выполнять поиск в глубине глубины, вместо этого вы хотите найти способы обрезать целые подделки причины как можно раньше, поэтому выполнение первого подхода с широкой пространство.
Это очень похоже на мониторинг на основе симптомов, а не на основе причин. Не угадайте по причине и ищите доказательства. Вместо этого начните с пайна пользователя и следуйте по следам доказательств. От поиска в группе микросервисов до поиска ошибки в определенной функции, каждый шаг сужает пространство поиска проблемы.
Обязательно пройдите процесс сужения на открытом воздухе, чтобы другие выиграли от вашей обрезки. Например, в рабочем посмертном документе в эфире может сказать: «Я изучил, и я знаю, что его нет». Таким образом, другие наборы не тратят время (потенциально параллельно) на поиск того же пути.
Начать ваш анализ с предложенной причины для отключения — это все равно, что пройти дерево из произвольных листьев. Вместо этого вы должны начать с симптомов (SLO), в корне и обрезать дерево, пока не достигнете реальной причины. Наука!
Даже с исключительной надежностью и строгой практикой культуры, жизненно важно отметить, что не каждый инцидент можно предотвратить. Правда в том, что иногда вы всегда будете недоступны. Тем не менее, вы можете либо разрешить инциденты и забыть о них, либо вы можете попытаться понять, почему дом упал и систематически устанавливает более глубокие причины.
Наша конечная цель не связана с максимизацией надежности, но больше о повышении контроля над нашей надежностью. Мы хотим глубоко понять, почему мы недоступны в результате посмерти. Только тогда мы можем предотвратить некоторые инциденты и построить более сильный дом посредством культурной практики, кирпича от кирпича.
Это вторая статья серии из двух частей. Нажмите Здесь Для части 1 интервью со Стивом МакГи.
Отредактировано: Чарли Тейлор
Написано: Стив МакГи, Руи Су
Оригинал: «https://dev.to/blameless/building-reliability-through-culture-with-veteran-google-sre-steve-mcghee-3m20»