Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Традиционным ИТ-командам трудно успеть за быстрым ростом масштабов и сложности приложений. Растут и требования, которые предъявляют к приложениям пользователи. В этих условиях крайне важно поддерживать бесперебойную работу инфраструктуры.
На помощь приходят SRE-инженеры. SRE (Site Reliability Engineering) фокусируется на создании высоконадежных систем и их поддержке. Главная задача SRE-инженеров — поддерживать высокую доступность приложений и быстрое реагировать на проблемы в производственной среде.
Сегодня мы разберемся, насколько востребована и перспективна эта специализация, какие навыки потребуются, чтобы освоить ее с начального уровня.
Чем занимается SRE
Ключевая задача SRE-специалиста заключается в обеспечении доступности и надежности разрабатываемых ИТ-систем и сервисов.
Исторически инженеры-программисты создавали код, затем передавали его в ИТ-подразделения для дальнейшего развертывания и обслуживания. Роль SRE позволяет инженерам-программистам участвовать в процессе развертывания и поддержки ПО, улучшать надежность и производительность системы.
SRE-инженер отвечает за все эти области:
общее время безотказной работы систем;
производительность систем;
простой;
управление инцидентами и отключениями;
мониторинг систем и приложений;
управление изменениями;
планирование производительности.
SRE-инженеры контролируют ПО и производительность всего технологического стека. Это означает, что они могут выявлять и устранять проблемы проще и эффективнее, чем традиционная команда разработчиков и эксплуатации. Роль SRE состоит в поддержании безотказности и надежности системы.
Какой спрос на SRE-инженеров
SRE фигурирует в ежегодном отчете LinkedIn с 2020 года. По запросу «Site Reliability Engineer» в октябре 2023 года на Хедхантере было 59 вакансий. При этом на том же Хедхантере по запросу «DevOps» уже 4 221 вакансия.
В России граница между DevOps и SRE настолько размыта, что в вакансиях иногда эти роли идут через слеш. Разница часто заключается в следующем:
автоматизация сборки, настройки и развертывания ПО — работодатель ищет DevOps;
обеспечить отказоустойчивую работу инфраструктуры — работодателю нужен SRE.
Чем крупнее бизнес, тем более четкое разделение зон ответственности он может себе позволить.
По мнению главного директора по исследованиям в DevOps Institute Эвелины Эрлих, настоящее и будущее цифрового бизнеса обусловливают широкий спектр приложений, бизнес-услуг и источников данных, развернутых на различных платформах, включая локальные, частные облака, гибридные, публичные облака и мультиоблачные среды.
Внедрение новых технологий в сочетании с увеличением скорости доставки приложений вызвало спрос на специалистов по ИТ-операциям. Результаты отчета «2021 Upskilling Report» (DevOps Institute) говорят о том, что в 2023 году глобальный уровень внедрения технологий обеспечения надежности объектов по прогнозам станет в два раза больше в сравнении с предыдущим годом, а в 2024 году продолжит свой рост.
Поскольку SRE — высокоуровневая деятельность, то позиций для джунов в этой области нет. Обычно инженеры переходят в SRE из DevOps, реже из разработки или администрирования. И с увеличением спроса на надежность проектов и уменьшение риска технических сбоев, компании все больше интересуются SRE.
Какие навыки нужны SRE-инженеру
Разберем, что конкретно нужно знать и с чем уметь работать:
1. Научитесь программировать
SRE-инженер, должен владеть хотя бы одним языком программирования. Это связано с тем, что придется часто писать код для автоматизации задач или создания инструментов. Самые популярные языки — Python, Java и Go.
2. Разберитесь в конвейерах CI/CD
Чтобы нормально публиковать изменения кода, нужно разбираться в конвейерах непрерывной интеграции (CI) и непрерывного развертывания (CD).
3. Освойте распределенные вычисления
Сегодня много компаний используют распределенные системы, чтобы достичь высокой доступности и масштабируемости. Еще полезно иметь представление о концепции микросервисов. Разделяя системную архитектуру на микросервисы, инженер упрощает обслуживание и надзор за системой, плюс независимо тестирует ее и развертывает компоненты.
4. Изучите инструменты мониторинга
Мониторинг нужен, чтобы в режиме реального времени следить за «состоянием здоровья» рабочей ИТ-среды, автоматизировано оповещая внешних и внутренних пользователей. Мониторинг состояния ИТ-инфраструктуры и услуг, а также собираемые данные позволяют предпринимать проактивные действия до того, как что-то выйдет из строя. Поэтому SRE должен быть знаком с разными инструментами мониторинга. Например, Prometheus, Grafana.
5. Изучите инструменты контроля версий
Частью роли SRE является разработка ПО, поскольку инженер автоматизирует системы и процессы. Работая над кодом, SRE-инженер, скорее всего, использует Git или аналогичные инструменты контроля версий. И если что-то пойдет не так, то с инструментами контроля версий будет легче проводить сравнения и возвращаться к более ранним версиям.
6. Изучите операционные системы
SRE-инженер регулярно работает с крупномасштабными серверами. Работа на этих серверах требует глубокого понимания операционных систем. Для управления инфраструктурой нужно знать — Linux, Windows.
7. Получите глубокое понимание баз данных
Серверная разработка включает в себя работу с рядом баз данных NoSQL. У каждого типа есть определенный сценарий, в котором они чаще всего используются и где они обеспечивают наибольшие преимущества. SRE-инженер должен понимать различия при использовании баз данных и уметь дифференцировать их с помощью реляционных баз данных, таких как MySQL.
8. Освойте навыки автоматизации
Автоматизация помогает сократить ручную работу, которая нужна для поддержания инфраструктуры, и SRE-инженер, должен владеть разными инструментами автоматизации. Например, ACCELQ и Avo Assure.
9. Познакомьтесь с облачными приложениями
Нативные облачные технологии позволяют создавать и запускать масштабируемые приложения в современных и динамичных средах, таких как публичные, частные и гибридные облака. Этот подход помогает создавать тесно связанные системы, отличающиеся устойчивостью, управляемостью и наблюдаемостью. В сочетании с надежной автоматизацией в такие системы инженеры могут часто и с минимальными трудозатратами вносить большие изменения.
10. Развивайте софт-скилы
Один из важных навыков SRE-инженера уметь общаться четко и лаконично. Это связано с тем, что специалисту часто приходится работать в связке с другими разработчиками или DevOps-командами, быстро передавать важную информацию о системных предупреждениях или сбоях в работе другим членам команды.
Куда пойти учиться на SRE-инженера
Если есть опыт в системном администрировании, разработке, то шанс залететь на должность джуниора SRE-инженера возрастает. Даже у коммерческих курсов есть минимальные требования к студентам: знания Linux, компьютерных сетей, Python, навыки работы в кластере Kubernetes, пройденные курсы по разработке, DevOps. Альтернативный вариант — пойти в DevOps и потом уже плавно перейти в SRE.
Карьерный путь SRE-инженера обычно начинается с нескольких лет опыта в системном администрировании и разработке. Чтобы повысить свою конкурентоспособность, DevOps-инженеры могут рассматривать переход в категорию SRE. Неплохая идея — получить дополнительные знания и навыки, которые помогут выиграть конкурентную борьбу, избежать сокращения или быстро найти новую работу.
Вы можете использовать наш видеокурс, состоящего из восьми тематических модулей. В курсе знакомят со способами построения программных архитектур, особенностями контейнерного подхода, стеком технологий для запуска микросервисных приложений, DevSecOps, инструментами CI/CD и современными облачными решениями.
Кроме того, сейчас ресурсами облаками легко воспользоваться стартапам. Для них запущена грантовая программа.