Что такое Site Reliability Engineering (SRE)?

Термин «Инженерия надежности сайта» (Site Reliability Engineering или сокращенно SRE) встречается во многих местах во времена совместных моделей сотрудничества и повсеместной гибкости в ИТ. Но что означает такой подход к эксплуатации ИТ-систем?

Происхождение Site Reliability Engineering

Как это часто бывает с современными моделями и методами процессов, истоки проектирования надежности объектов лежат в одной из крупных американских технологических компаний. В случае SRE все началось в Google в 2003 году. Ядро бизнес-моделей Google и, следовательно, ключ к успеху компании тесно связан с внутренними ИТ. Google всегда искал методы и модели процессов в своей ИТ-организации, чтобы справиться с быстрым ростом.

Хотя в 2003 году в Google повсеместно существовало строгое разделение между разработкой программного обеспечения и ИТ-операциями, в то время в отношении ИТ-операций задавались следующие вопросы: Насколько тесно должны быть связаны команды разработки и эксплуатации и какие процессы необходимы для успешного сотрудничества? Эти вопросы и полученные ответы привели к созданию Site Reliability Engineering как новой модели эксплуатации ИТ-систем в Google. Но что такое SRE?

Что такое Site Reliability Engineering (SRE)?

Проектирование надежности сайта объединяет различные методы, которые также используются при разработке программного обеспечения или DevOps. Прежде всего, SRE рассматривает ИТ-операции как задачу, которую можно решить с помощью разработки программного обеспечения. В частности, системы предоставляются и управляются с использованием кода. Другими словами: инфраструктура, рабочие процессы и ручная деятельность автоматизируются с помощью программного обеспечения и, следовательно, становятся более надежными.

Помимо автоматизации, системы мониторинга играют центральную роль в обеспечении надежности объекта. Важные системные показатели постоянно отслеживаются и визуализируются с помощью информационных панелей. Собранные данные не только просматриваются, но и постоянно анализируются, что позволяет заблаговременно выявлять и устранять системные ошибки и уязвимости.

Идеальный инженер по надежности объекта имеет опыт разработки программного обеспечения, значительный опыт работы в ИТ-операциях и склонность к анализу системных данных. Обладая этим набором навыков, он/она фокусируется на автоматизации операций, концентрируется на планировании и проектировании необходимой инфраструктуры, контролирует системы в реальном времени и анализирует их производительность, всегда с целью выявления потенциала для улучшения.

Инженеры по надежности объектов делят свое время между эксплуатационными задачами и разработкой программного обеспечения и инструментов для целей оптимизации. В случае неисправности они ее устраняют, а затем обычно проводят подробные обсуждения с участниками, чтобы выяснить, что сработало хорошо, а что необходимо улучшить. Инженеры по надежности объектов также собирают важные, недокументированные знания. Благодаря их пониманию вопросов разработки и поддержки, эти знания больше не остаются скрытыми в командах, а могут использоваться повсюду.

В дополнение к уже описанным ключевым технологическим элементам проектирования надежности объекта, модель процесса также основана на ряде основных методологических принципов, которые будут обсуждаться более подробно ниже.

Проектирование надежности сайта опирается на набор методов, которые уже используются в разработке программного обеспечения. Кроме того, SRE имеет множество параллелей с методами, используемыми в DevOps. Два наиболее явных отличия от DevOps заключаются в том, что при проектировании надежности сайта надежность (системы) является главным приоритетом в центре действий, и рекомендации должны соблюдаться гораздо более строго.

Наибольшие сходства с DevOps заключаются в основных видах деятельности, таких как непрерывный мониторинг и последовательная автоматизация процессов и рабочих процессов. Основным методом, который использует SRE, являются так называемые положительные циклы. Определены цели и определены меры по их измерению. Часть позитивных циклов также включает в себя работу над ошибками. Принцип положительных циклов описан ниже в отдельных элементах.

SLO и SLI

Проектирование надежности объекта точно определяет, как должна выглядеть соответствующая надежность для каждой системы. «Цель уровня обслуживания» (SLO) указывает, насколько надежно должна функционировать система, чтобы она соответствовала внутренним спецификациям или требованиям клиентов. Это может означать, например, что система должна давать 90 процентов успешных результатов в течение определенного периода времени.

Чтобы определить, достигнута ли эта цель и, следовательно, заданная надежность, SRE использует «Индикатор уровня обслуживания» (SLI). SLI — это точки измерения, которые предоставляют информацию, например, о том, сколько запросов было успешным и сколько из этих запросов соответствовало указанному периоду времени. Используя SLI, можно затем сделать квалифицированное заключение о том, достигнут ли SLO, а если нет, то существует ли необходимость в оптимизации.

Бюджеты ошибок

Обновления и новые выпуски предоставляют новые функции, улучшают существующие функции и устраняют бреши в безопасности. Основная проблема разработки программного обеспечения заключается в том, что невозможно запланировать бесконечное количество времени для полного тестирования всех мыслимых сценариев перед каждым выпуском. Кроме того, в этом контексте возникает вопрос о том, уместна ли и когда идеальная надежность системы.

Проектирование надежности объекта работает по основному принципу: в каждой системе существует бюджет ошибок. Этот бюджет рассчитывается на основе теоретически возможной надежности 100% минус фактически применяемая надежность и относится к определенному периоду времени, например, одному месяцу. Если использовать приведенный выше пример, бюджет ошибок составит 10 процентов (100 процентов минус 90 процентов). Поэтому было бы приемлемо, если бы соответствующая функциональность имела уровень ошибок до 10 процентов.

Важно отметить также, что надо учитывать насколько важна та или иная ошибка. Как ошибка влияет на работу пользователя с информационной системой. Например, изображение ниже демонстрирует как выглядит веб-приложение Telegram, в котором не отображаются сообщения в канале. Веб-приложение Telegram открыто в браузере Google Chrome.

Ошибка в веб-приложении Telegram

Поэтому, пока SLO находится в зеленой зоне, этот метод не требует траты времени или бюджета на погоню за теоретическим идеальным состоянием идеальной надежности. Только когда бюджет ошибок исчерпан, возникает необходимость в действиях и улучшениях, например, путем приостановки выпуска для повышения надежности.

Учитесь на ошибках – не возлагая вину

В случае серьезных системных ошибок или серьезных сбоев, как правило, имеет смысл впоследствии тщательно проанализировать причины этих ошибок. Это единственный способ извлечь уроки из этих ошибок и, в идеале, избежать подобных случаев в будущем.

Особенность проектирования надежности объекта заключается в том, что этот анализ ошибок должен сознательно проводиться в позитивной среде. Вместо того, чтобы обвинять отдельных лиц или команды в ошибке, SRE сосредотачивается на проблеме и ее причинах. Вопрос не в том, «кто виноват в этой ошибке?», а в том, «какие обстоятельства привели к тому, что эта ошибка произошла?».

Этот подход можно использовать для выявления таких причин, как отсутствие информации или плохие операционные процессы, которые могли вызвать эту ошибку. SRE ставит перед собой задачу никого не наказывать за допущенную ошибку. Скорее, следует найти способ избежать этой ошибки в будущем, приняв соответствующие меры. Таким образом, вся организация может расти, преодолевая ошибки, и устойчиво повышать надежность систем.

Преимущества проектирования надежности объекта

Что остается ясным, так это то, что проектирование надежности объекта основано на наборе технических инструментов и четких принципах. Но каковы преимущества SRE по сравнению с соответствующими операционными моделями? Ниже приведены шесть наиболее важных аргументов в пользу введения SRE:

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

Упреждающее устранение неполадок: многие ИТ-организации сосредоточены в первую очередь на развертывании новых функций. Однако более быстрая разработка и развертывание несут в себе риск возникновения ошибок и уязвимостей. SRE противодействует этому, активно выявляя ошибки и проблемы и исправляя их до того, как они достигнут пользователя.

Добавленная стоимость: надежные ИТ-системы означают, что на исправление ошибок приходится вкладывать меньше ресурсов. У команд разработчиков автоматически появляется больше времени для разработки новых функций. SRE обнаруживает потенциальные проблемы еще до развертывания.

Культурные изменения: проектирование надежности объектов приносит новое понимание работоспособности систем в ИТ-организациях. Постоянный поиск потенциала оптимизации положительно влияет на все участвующие команды и способствует взаимному сотрудничеству. Общее чувство ответственности, которое создает SRE, активно разрушает знаменитую командную разобщенность.

Более высокий уровень автоматизации: инженеры по надежности объектов постоянно пытаются автоматизировать соответствующие рабочие процессы. Они также применяют это отношение к своей работе. Используя современную цепочку инструментов, вы можете постоянно оптимизировать свои рабочие процессы. Это постепенно снижает подверженность ошибкам, вызванным «человеческой» составляющей.

Удовлетворенные клиенты: в отличие от других операционных моделей, SRE фокусируется на улучшении качества обслуживания клиентов, при этом «клиентом» здесь может быть как внутренний, так и внешний клиент или пользователь системы. Используя SLO и SLI, SRE определяет четкие цели по обеспечению надежности системы и, следовательно, удовлетворенности клиентов.

Эпилог

Проектирование надежности объекта – это нечто большее, чем просто еще один метод. Этот подход обогащает современную ИТ-культуру, поскольку он очень прагматично закрывает разрыв между разработкой и ИТ-операциями. Там, где другие подходы остаются более теоретическими или в лучшем случае обеспечивают основу для действий, SRE предоставляет конкретность.

Благодаря постоянному мониторингу и анализу производительности системы проблемы выявляются на ранней стадии и способствуют оптимизации и надежности. Вопрос индивидуальной адаптации подхода в компании и ИТ-организации остается актуальным.

Принципы проектирования надежности сайтов масштабируются от модных стартапов до мировых технологических держав таких, как Google, Microsoft и других. Для введения рекомендуется принцип сосредоточения внимания на отдельных артефактах SRE (например, сначала внедрить решение для мониторинга). Что остается очевидным, так это то, что проектирование надежности объектов может значительно улучшить ИТ-организации, поскольку этот подход гораздо теснее связывает их с созданием ценности компании.

Простой, надежный и недорогой сервис BAILRY поможет контролировать доступность сайта. Важно чтобы сайт открывался в браузере посетителя!

Компания Mainton - разработка и тестирование программного обеспечения под заказ, DevOps и SRE, SEO и реклама в интернете с 2004 года.

ПЕНТЕСТ БЕЗОПАСНОСТЬ ВЗЛОМАЛИ? МОНИТОРИНГ ВАКАНСИИ