Колонки

SRE-инженер: чем он занимается и как им стать

Колонки
Дмитрий Масленников
Дмитрий Масленников

Руководитель центра надежности информационных систем в «Тинькофф»

Екатерина Алипова

Что скрывается за аббревиатурой SRE? Чем занимается специалист по надежности? Какие у профессии перспективы и без какого качества не стать хорошим SRE-инженером? О тонкостях профессии рассказывает руководитель центра надежности информационных систем в «Тинькофф» Дмитрий Масленников.

SRE-инженер: чем он занимается и как им стать

Содержание


SRE-инженер: что это за профессия

Site Reliability Engineering — это инженерная специальность, цель которой обеспечивать надежность и безотказность разрабатываемых сервисов.

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

Это, например, соцсети, почта, поисковые системы, телефония, а постепенно подключились банки и такси. Люди привыкли, что такие сервисы доступны 24/7, это незаметно стало частью нашей жизни.

Если пять лет назад межбанковские переводы могли идти 2—3 дня, и никто не ожидал от них более высокой скорости, то сейчас деньги зачисляются мгновенно через приложение. Чтобы обеспечивать и поддерживать такой уровень бесперебойной работы, и нужны SRE-инженеры.

 

Когда в компании возникает потребность в SRE

Есть мнение, что отдельные SRE-специалисты и тем более целые команды востребованы только в крупных компаниях.

Начни карьеру HR-менеджера с нуля – сравнивай лучшие программы обучения и читай отзывы в каталоге курсов управления персоналом.

С одной стороны, это действительно так: небольшому проекту не требуется такой же уровень надежности, как, например, банку.

Минимальный уровень надежности легко получить, почти ничего не делая. В простом интернет-магазине не нужен SRE-инженер: задач для него нет, со всем справятся программисты, которые разрабатывают сайт.

Отталкиваться нужно от потребностей и возможностей бизнеса, поскольку SRE — это дорогостоящая история.

В какой-то момент бизнес начинает больше дорожить своей репутацией: например, у интернет-магазина появляется очень много покупателей, он растет и становится популярным.

Другие же проекты изначально нельзя создавать без специалистов по надежности: скажем, атомную станцию или банковское приложение.

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

Любой разработчик может заниматься SRE, если работает в ИТ достаточно долго, чтобы разбираться в архитектуре приложения. Идеально, если он это приложение и проектировал. А отдельная специализация нужна в больших командах от 20—30 человек.


Читайте также: Надежно, как у Google: почему SRE-подход поможет вашим сайтам работать без перебоев


 

Чем занимается SRE-инженер

SRE-специалист обеспечивает нормальное использование сервиса и его бесперебойную работу. Все его обязанности исходят из этой главной цели — обеспечения устойчивости.

  • Определение и контроль SLA, SLO, SLI (соглашение об уровне услуг) и бюджета на ошибки.

Это начало работы SRE: ответ на вопрос, что для конкретной компании означает «нормальная работа». Сбои все равно будут, но нужно понять, что такое «не слишком много сбоев».

Например, если пользователь в соцсетях не может редактировать свои настройки или просматривать сторис — соцсеть все еще работает или уже нет?

Об этом нужно договориться с бизнесом, а затем — с командой бэкенда и всех внутренних сервисов.

После того как поняли, что значит «работает», нужно определить, сколько мы хотим, чтобы сервис работал. Определить индикаторы работоспособности и показатели, которых хотим достичь.

Если соцсеть не показывает сторис только 0,1% пользователей — она работает или нет? Здесь нужно договориться о каких-то разумных цифрах, потому что поддерживать систему всегда работающей на 100% трудозатратно и неоправданно дорого.

  • Бюджет ошибок — это SLA наоборот.

SRE-инженеры договариваются о том, сколько процентов времени нужно обязательно предоставлять доступ. Все оставшееся время — это наш бюджет ошибок. Его принято расходовать, поэтому и называют бюджетом.

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

  • Настройка мониторинга и алертов, постмортемы.

SRE-инженеры настраивают мониторинг и алерты, чтобы проверить, укладываются ли они в оговоренные показатели или нет.

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

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

  • Проактивное реагирование — это то, чем занимается SRE-инженер все оставшееся время.

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

  • Дежурство, реагирование на инциденты.

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

У него есть договоренности на дежурство. Они выглядят так: «От момента начала инцидента до начала работы SRE должно пройти пять минут».

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

 

Какими навыками обладает SRE-инженер

Hard skills

Я опишу портрет условного сеньора. Любой SRE-инженер — это очень широкий T-shaped-специалист (то есть эксперт в одной сфере, который разбирается на среднем или минимальном уровне во многих других сферах).

Навыков у SRE-инженера очень много:

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

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

 

Soft skills

  • Первое и главное — это стрессоустойчивость.

Работа в SRE очень стрессовая. Много стресса вызывает дежурство, особенно в начале, если ты сам не разрабатывал эту систему.

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

  • Второе — это навыки коммуникации.

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

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

 

Кто может стать SRE-инженером

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

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

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

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


Читайте также: Необходимые навыки для работы в сфере eCommerce — каким специалистам из IT она подойдет?


 

Чем SRE-инженер отличается от DevOps

SRE и DevOps отличаются системой ценностей, поэтому в одних и тех же ситуациях они принимают разные решения.

Основные ценности в DevOps — это автоматизация и быстрый time to market, то есть скорость поставки. Их задача — как можно больше релизить и больше автоматизировать, сокращая рутинные действия.

Грубо говоря, их KPI — это то, как быстро мы можем релизиться. А KPI SRE — это то, как хорошо мы укладываемся в оговоренные условия обслуживания.

Если у нас много человеческого фактора и нужна высокая степень надежности, то автоматизация помогает этого достичь. В этом случае мы похожи на DevOps.

Но иногда автоматизация мешает. Бывают сложные нетривиальные решения, где автоматика ошибается и вредит главной цели.

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

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

SRE интересует, тестируют ли они код вообще. А насколько хорошо это настроено — как раз зона ответственности DevOps. SRE затрагивает все, что касается продакшена, — это приоритет.

 

Как стать SRE-инженером и какие у него перспективы

  • Где искать работу

Тому, кто хочет стать SRE, нужно недолго поработать в бэкенде — получить уровень мидла. Затем перейти в DevOps и тоже стать мидл-специалистом. После этого он уже готовый SRE-инженер. Если сразу не берут в SRE, то можно прийти в компанию на позицию мидл-бэкенд-разработчика или DevOps, поработать какое-то время и перейти в SRE. Главное — помнить, что надо широко развиваться. Делать это можно либо в своей компании, либо искать варианты на открытом рынке. Вакансий именно SRE-инженера не слишком много, поэтому начать можно с бэкенда или DevOps.

  • Зарплаты и перспективы

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


владимир скляренко

Владимир Скляренко, руководитель ИТ-подбора в «Тинькофф»

Кандидаты на позицию SRE-инженера выдвигают такие зарплатные ожидания (cуммы после вычета налогов):

мидл — 180—300 тыс. рублей;
сеньор — 250—400 тыс. рублей.
  • Плюсы и минусы профессии

Плюсы:

  1. высокие зарплаты и большие перспективы;
  2. приобретение уникальных навыков, которые всегда востребованы на рынке;
  3. отсутствие бюрократии и долгих согласований: придумываешь и приоритезируешь задачи сам.

Минусы:

  1. стрессовая работа;
  2. большая ответственность за весь проект.

Читайте также: Российские разработчики назвали наиболее значимые для бизнеса IT-специальности
  • Где учиться

Лучший способ научиться — это личный опыт, приобретаемый в разных сферах разработки и в разных компаниях. Если же хочется первоначально получить теоретическую базу о методиках SRE, то сегодня рынок предлагает варианты обучения:

  1. Site Reliability Engineering: Measuring and Managing Reliability от Coursera;
  2. «SRE практики и инструменты» от Otus;
  3. Интенсив «SRE: внедряем DevOps от Google» от Слёрм.

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

SRE-инженер обнаруживает проблему, придумывает ее решение, сам ее решает вместе с командой — и сервис становится лучше.

Как правило, надежностью аналитики и бизнес озадачиваются, только когда все совсем плохо. Задача SRE — сделать так, чтобы ни аналитики, ни продакты, ни бизнес-владельцы не вспоминали про надежность. Для этого нужно много чего делать, но что конкретно, вам не скажет никто.

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

Фото на обложке: khwanchai / Adobe Stock

Подписывайтесь на наш Telegram-канал, чтобы быть в курсе последних новостей и событий!

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Минцифры предложило снизить ставку по ипотеке для IT-специалистов с 5% до 3%
  2. 2 Минцифры cформирует кадровый резерв IT-профессионалов
  3. 3 Власти потратят 2,7 млрд рублей на платформу для импортозамещения промышленного софта
  4. 4 Минфин предложил ввести налоговые льготы для разработчиков технологий военного назначения
  5. 5 Гайд для юных программистов: с чего начать знакомство со сферой?