Что нужно знать, чтобы стать DevOps инженером
Как получить одну из самых востребованных профессий в IT? С чего начать обучение, какие ключевые знания и навыки нужны девопсам? На эти вопросы ответил Senior Developer Advocate AWS Виктор Ведмич.
Кто такой DevOps-инженер
— DevOps — это методология и подходы к разработке программного обеспечения. Но, к сожалению, маркетинг и IT-бизнес сформировались таким образом, что под DevOps-специалистами сейчас подразумевают системных инженеров, — поясняет Виктор, — Это те ребята, которые не пишут код, который является частью бизнес-логики приложения, но пишут много другого вспомогательного кода.
— Продукт в IT — это не только бизнес-логика. Чтобы приложение заработало, для этого необходимо подготовить инфраструктуру, написав предварительно код, который развернет и настроит эту же инфраструктуру. Дополнительно подключить и настроить мониторинг. Не забыть, что разработчики довольно быстро доставляют новые фичи и нужен оптимизированный CI/CD процесс. И все это и делают DevOps-инженеры.
Обязанности DevOps-инженера
— Когда пишется максимально простое приложение, то, возможно, что DevOps и не нужен. Но когда мы выходим на масштабирование, нужна хорошая доступность. Когда количество пользователей не два человека, а тысячи и миллионы, то возникают совсем другие вопросы, например – где приложение будет располагаться, как мы будем обеспечивать отказоустойчивость приложения, его масштабируемость, — поясняет Виктор.
Если совсем простым языком. Вот есть GitHub, куда можно закинуть проект, и происходит магия сборки финального продукта – артефакта, который надо будет деплоить (перенести на сервер). Но у GitHub есть GitHub Actions — это тоже небольшой кусочек кода, который нужно написать. Затем уже появляется артефакт — исполняемый файл. Это как приложение на телефоне – иконка, а под ней собранный файл с большим количеством зависимостей и так далее. В нашем мире в основном это docker контейнеры. Его нужно где-то запустить. Исполняемый файл есть. Теперь нужно, чтобы к этому приложению достучались пользователи с разных уголков мира. И для всех это приложение открылось максимально быстро. Первое — это написать GitHub пайплайны и actions, чтобы собрать этот контейнер, а дальше куда-то его доставить. Сейчас в большинстве случаев — это в облака либо на свои сервера. По сути, DevOps тоже пишут код, но специфический. Чаще всего это YAML или специфические DSL.
После того, как приложение запустилось нужно понимать, как оно работает, мониторить его и поддерживать стабильность. DevOps обеспечивают максимальную стабильность приложения. Вот тогда и получается финальный продукт, которым пользователи могут пользоваться.
Что должен знать DevOps: ключевые знания и навыки
— Фундаментальные основы программы и скриптов, циклы, работа с данными, чем отличается массив от мапы и от словаря — все это нужно знать DevOps-инженеру, — делится своей практикой Виктор, – DevOps-инженеры точно не лезут во фреймворки. Но тем не менее знание даже JavaScript будет полезно. Например, работает сайт, и нужно протестировать, насколько быстро он отвечает. Это задача между тестировщиком, разработчиком и DevOps. Так как DevOps отвечает за стабильность приложения, то, как не ему написать тест, который проверит текущую работоспособность приложения. Знания языка программирования DevOps-инженеру достаточно на уровне junior-разработчика.
Софт-скиллы для DevOps-инженера
Коммуникация
— В первую очередь DevOps-инженер должен уметь разговаривать и слышать других людей. И уметь разговаривать на том языке, на котором они говорят. Существует множество подкоманд с различным функционалом: бизнес-аналитики, frontend-разработчики, backend-разработчики или ребята, которые отвечают за тестирование и т.д. В зависимости от объема команды и от того, какие есть штуки внутри этой команды, DevOps-инженерам нужно научиться разговаривать на всех этих языках. Казалось бы, мы говорим на одном языке, условно — это русский или английский, на котором мы ведем беседы, но на самом деле, разговаривая на одном и том же языке с разными специалистами, мы их не понимаем, не понимаем их проблемы, боли, возможно еще какие-то вещи, которые для нас непонятные, а для них — стандарт и бэкграунд.
Например, когда мы говорим со студентом, который учится на математическом факультете, знание принципов математики для него — это дефолт. Он думает, что все остальные знают, как работает статистический анализ, регрессия и другое. Есть некий набор стандартных определений и прочее, который кажется, что знают все. И вот когда мы разговариваем с разными функциональными командами, получается, что мы вроде говорим на одном языке, но какое-то понимание и бэкграунд у нас абсолютно разные. Из этого вытекает основной soft skill — это умение разговаривать с разными командами с разным функционалом и их понимание.
Стрессоустойчивость
— Стрессоустойчивость нужно постоянно тренировать. DevOps-инженеры часто работают с продакшеном или максимально близко к нему. Из-за высокого уровня ответственности они достаточно сильно нервничают, и действия могут привести к тому, что пользователи не смогут зайти на сайт. Или у вас миллионный бизнес, и каждую минуту теряется большая сумма денег. Важно оставлять адреналин, но при этом тренировать в себе стрессоустойчивость. Когда адреналина слишком много, то можно прийти в ступор. Но когда адреналина слишком мало — наша система не так хорошо активируется, чтобы максимально быстро решить какую-то проблему.
Умение учиться
— Этим скиллом важно обладать всем IT-специалистам. Если говорить о T-shape модели, то планка сверху — это горизонт твоих знаний и планка вниз — это глубина. Для DevOps-специалистов очень важна эта верхняя планка, нужно знать многое. DevOps-инженеру нужно хорошо учиться, впитывать информацию и выкраивать из нее то, что действительно важно и нужно для повседневной работы.
Как стать DevOps с нуля: 5 важных шагов для начинающих
- Основы программирования. Нужно научиться писать несложный код. Имеются в виду задачи на какие-то циклы, некие условия, скрипт, который имеет простую понятную логику. Я бы рекомендовал Python.
- Сети. Неважно, где строится инфраструктура — в облаке или в локальных data-центрах, все равно понимание сети и того, как оно работает, нужно. Не надо становиться сетевым сертифицированным инженером, нужно понимать, что такое сети, как они работают, как строится маршрутизация, как нарезаются сети и т.д.
- Облака. В наше время облака — это стандарт. Интро сертификации позволят сделать обзор облачных сервисов.
- Операционные системы. Может, не так сильно востребовано с точки зрения глубины, но базовые знания нужны.
- Kubernetes. В очень многих проектах, которые работают с контейнерами или микросервисными приложениями, работающими в контейнерах, чаще всего будут использовать кубернетис.
— Если человек сам составляет план обучения, то нулевым шагом я бы посоветовал посмотреть курс по Computer Science. А затем следовать шагам, описанным выше, — советует Виктор.
Насколько востребованы DevOps инженеры
— DevOps инженеры весьма востребованы. Я думаю, что еще довольно долго будут востребованы, — делится своими наблюдениями Виктор, — На текущий момент, я вижу тренд, что в некоторых компаниях переименовывают DevOps в SRE, чтобы люди больше работали с продакшеном. Я бы сказал, что так как горизонтальная планка в T-shape модели очень широкая, то DevOps инженеров все еще недостаточно на рынке, чтобы удовлетворить весь спрос. Потребность достаточно высока из-за высокого порога входа и из-за постоянно растущего объема информации и новых инструментов, которые нужно осваивать на достаточно хорошем уровне.
Советы начинающим DevOps-инженерам
— Чтобы стать профессионалом в любой сфере, нужно много учиться. DevOps тут не исключение. У многих крупных компаний есть свои курсы девопс и стажировки после них. Стоит к ним присмотреться.
Из книг я бы посоветовал Проект "Феникс". Роман о том, как DevOps меняет бизнес к лучшему от Ким Джин, Бер Кевин и Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях от Ким Джен, Дебуа Патрик.
Существует Телеграм-канал DevOpsMinsk, где люди отвечают на вопросы. А также я сам веду YouTube-канал DevOps Kitchen Talks, на котором мы освещаем новости мира DevOps, статьи, релизы и небольшие туториалы.
Подробнее о Data Science можно узнать в выпуске АйТиБорода Shorts на YouTube-канале Anywhere Club.
Хотите обсудить DevOps?