Что такое SRE и почему это важно?

Завершено

Лучше всего начинать с самого начала. Давайте начнем с простого вопроса: "Что такое обеспечение надежности информационных систем?" Существует несколько ответов на этот вопрос, включая часто цитируемый ответ создателя этого термина (Бена Трейнора Слосса из компании Google), но мы приведем самый практичный ответ.

Обеспечение надежности информационных систем — инженерная дисциплина, направленная на устойчивое достижение организациями необходимого уровня надежности в их системах, службах и продуктах.

Позже мы дополним картину другими определениями, но пока остановимся на этом. Существует три наиболее важных элемента этого определения, которые необходимо раскрыть, чтобы ответить на вопрос "Для чего вы создаете этот продукт?".

Надежность

В самом сердце этого подхода находится слово "надежность". В определении ничего не сказано о "необходимом уровне производительности", или "необходимом уровне эффективности", или "необходимом уровне стабильности", или даже о "достижении необходимого уровня дохода". Там сказано "необходимый уровень надежности". Почему?

Давайте рассмотрим простой пример. Ниже приведен снимок экрана. Как вы думаете, что на нем изображено? Постарайтесь не продолжать чтение статьи, пока у вас не появится какая-нибудь идея. Примечание: если вы не можете разглядеть всех деталей на картинке, то все в порядке, так и было задумано.

Пустой снимок экрана, представляющий приложение PHP, которое не удается загрузить.

На этом рисунке изображено приложение PHP (без включения других инструментов отладки) в момент возникновения сбоя. Нечто подобное можно увидеть и для приложения Java:

Снимок экрана приложения Java, в котором произошел сбой, с ошибкой состояния HTTPS 500.

Для чего мы привели эти примеры? В обоих случаях приведен пример приложений, создание которых, вероятно, отняло у бизнеса огромное количество времени, энергии и ресурсов. Но если приложение не работает, если оно недоступно заказчику в нужный момент, если оно не обеспечивает надежности, то от него никому не будет пользы, особенно бизнесу. Более того, низкая надежность может нанести бизнесу реальный ущерб (репутационный, экономический, в плане мотивации и т. д.).

Именно поэтому надежность так важна, и именно поэтому в подходе SRE этому ключевому параметру уделено основное внимание, возможно, самому ключевому параметру всей службы, системы или продукта. Надежность включает в себя несколько составных частей (мы поговорим об этом немного позже), но пока мы перейдем ко второй ключевой части определения.

Необходимый уровень надежности

Возможно, прочитав определение в первый раз, вы не обратили на это внимания, но давайте выделим еще одно важное слово:

обеспечение надежности информационных систем — инженерная дисциплина, направленная на устойчивое достижение организациями необходимого уровня надежности в их системах, службах и продуктах.

Почему это слово так важно?

Важное наблюдение, сделанное инженерами SRE состоит в том, что существует очень мало систем и служб, для которых необходима 100 % надежность. Очевидным исключением являются системы, от которых зависит жизнь людей, такие как авиация, медицина и т. д.

На самом деле существует очень мало ситуаций, когда это действительно необходимо. Усилия и ресурсы (а, следовательно, и стоимость), необходимые для достижения более высокого уровня надежности, каждый раз возрастают многократно. Другими словами, стремление к уровню надежности, в котором у вас нет потребности, является пустой тратой времени и денег. Вы хотите достичь необходимого уровня надежности в ваших системах, службах и продуктах.

Уровень должен соответствовать бизнес-потребностям и быть прагматичным. Например, если заказчик подключается к вам по сети, имеющую надежность менее 100 % (предположим,что сеть работоспособна 90 % времени), то попытка поднять уровень надежности до 95 % будет по определению пустой тратой времени и денег. Вы хотите достичь необходимого уровня надежности в ваших системах, службах и продуктах.

Подход SRE поднимает этот прагматизм еще на одну ступень вверх. Если теперь мы подумаем о желаемом уровне надежности, должны ли мы еще что-то предпринять после того, как нам удалось достигнуть или превзойти этот уровень? Аналогичным образом, что делать, если мы не достигнем этого уровня? Мы ответим на эти вопросы далее в модуле.

Устойчивое достижение

Последнее слово из нашего определения, которое нужно выделить перед тем, как мы перейдем далее, — устойчивое. Устойчивость относится к роли людей во всем этом. Очень важно создать стабильную операционную среду. Надежные системы, службы и продукты создаются именно людьми. Если мы не делаем ничего, чтобы обеспечить устойчивую работу, если мы будим сотрудников в 3 часа ночи сообщениями, если у них нет возможности спокойно заниматься семейными делами и собой, то у них не будет возможности создавать надежные системы. В SRE считается, что крайне важно внедрить рабочие методы, которые окажутся стабильными с течением времени, чтобы сотрудники могли максимально эффективно выполнять свою работу.

Проверьте свои знания

1.

Какое свойство службы, системы или продукта имеет наибольшее значение в SRE?

2.

К какому уровню надежности стремится SRE для подавляющего большинства служб, систем и продуктов?