Что такое SRE и почему это важно?
Лучше всего начинать с самого начала. Давайте начнем с простого вопроса: "Что такое обеспечение надежности информационных систем?" Есть много ответов на этот вопрос, плавающий вокруг, в том числе один часто цитируется человеком, который придумал термин (Бен Трейнор Слосс в Google), но самый практический ответ, который мы можем предложить:
Обеспечение надежности информационных систем — инженерная дисциплина, направленная на устойчивое достижение организациями необходимого уровня надежности в их системах, службах и продуктах.
Позже мы дополним картину другими определениями, но пока остановимся на этом. Существует три важных части этого определения, которые должны распаковывать, что приводит нас к "Почему это имеет значение?" "как это все работает".
Надежность
В самом сердце этого подхода находится слово "надежность". В определении ничего не сказано о "необходимом уровне производительности", или "необходимом уровне эффективности", или "необходимом уровне стабильности", или даже о "достижении необходимого уровня дохода". Там сказано "необходимый уровень надежности". Почему?
Давайте рассмотрим простой пример. Ниже приведен снимок экрана. Что вы думаете, что это показывает? Постарайтесь не продолжать чтение статьи, пока у вас не появится какая-нибудь идея. Примечание. Если трудно обнаружить очень много деталей в этом рисунке, это хорошо, это отрисовка идеально в браузере.
На этом рисунке изображено приложение PHP (без включения других инструментов отладки) в момент возникновения сбоя. Нечто подобное можно увидеть и для приложения Java:
Для чего мы привели эти примеры? В обоих случаях приведен пример приложений, создание которых, вероятно, отняло у бизнеса огромное количество времени, энергии и ресурсов. Но если приложение не работает, если оно недоступно заказчику в нужный момент, если оно не обеспечивает надежности, то от него никому не будет пользы, особенно бизнесу. На самом деле недостаток надежности может принести реальный вред (репутационный, экономический, мотивационный и т. д.) для бизнеса.
Эта важность заключается в том, что SRE решает сосредоточиться на надежности в качестве основного свойства, возможно, основного свойства службы, системы или продукта. Надежность может охватывать много вещей (как мы обсудим позже), но давайте перейдем к второй важной части определения.
Необходимый уровень надежности
Возможно, прочитав определение в первый раз, вы не обратили на это внимания, но давайте выделим еще одно важное слово:
обеспечение надежности информационных систем — инженерная дисциплина, направленная на устойчивое достижение организациями необходимого уровня надежности в их системах, службах и продуктах.
Почему это слово так важно?
Важное наблюдение, сделанное в мире SRE, заключается в том, что существует несколько систем и служб, которые должны быть надежными на 100 %. Очевидным исключением являются системы, от которых зависит жизнь людей, такие как авиация, медицина и т. д.
На самом деле, есть несколько ситуаций, когда это даже желательно. Усилия и ресурсы (а, следовательно, и стоимость), необходимые для достижения более высокого уровня надежности, каждый раз возрастают многократно. Положите еще один способ, гоняясь после надежности, вам не нужна трата времени и денег. Вы хотите достичь необходимого уровня надежности в ваших системах, службах и продуктах.
Уровень должен соответствовать бизнес-потребностям и быть прагматичным. Например, наши клиенты могут подключаться к вам через сеть, которая не является 100% надежной (предположим, что это до 90% времени). Тратить усилия и деньги, чтобы убедиться, что ваша служба является 95% надежной является по определению пустая трата времени и денег. Вы хотите достичь необходимого уровня надежности в ваших системах, службах и продуктах.
Подход SRE поднимает этот прагматизм еще на одну ступень вверх. Если теперь мы можем подумать о том, что есть желательный уровень надежности, есть ли что-то, что мы должны сделать, если мы успешны на собрании или превышении этого уровня? Аналогичным образом, что делать, если мы не достигнем этого уровня? Мы ответим на эти вопросы позже в модуле.
Устойчивое достижение
Последнее слово из нашего определения, которое нужно выделить перед тем, как мы перейдем далее, — устойчивое. Устойчиво относится к роли людей. Важно создать устойчивую практику работы. Люди создавать надежные системы, службы и продукты. Если мы не делаем вещи, чтобы убедиться, что наша работа устойчива. Если мы просим наших людей в 3:00 каждую ночь с страницей, и не дайте им время со своей семьей. Если у них нет возможности провести время, заботясь о себе. Тогда они не смогут создавать надежные системы. SRE считает, что это ключ, который мы реализуем практику операций, которая является устойчивой с течением времени, поэтому наши люди могут принести свои лучшие путь к работе.