DevOps‐инженер — запускаем новые шестимесячные курсы

Что должен знать и уметь специалист по Development Operations
5 минут6718

Применение различных практик для повышения эффективности в бизнесе — привычное дело. Если говорить про IT‐сферу, то DevOps, пожалуй, первое, что приходит на ум. Специалисты этого направления уже много лет пользуются спросом на рынке, медиана их зарплат высока, а навыки широко востребованы.

В связи с этим GeekBrains запускает курс подготовки DevOps-инженеров. Чем сейчас живёт отрасль и её специалисты, а также что будет входить в программу обучения, мы узнали у эксперта и разработчика курса — Дмитрия Бурковского.

— Дмитрий, начнём с фундаментального. Что же такое DevOps?

Сам термин DevOps расшифровывается как Development Operations. То есть это просто набор практик, формирование определённого подхода при разработке и выпуске продукта, чтобы сделать работу максимально эффективной.

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

— Что должны уметь делать DevOps-инженеры?

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

ОС Windows, GNU/Linux, командные оболочки bash и PowerShell. Так как речь в DevOps идёт об организации взаимодействия разных служб внутри IT-компании, на первый план выходят навыки компьютерного администрирования. И тут фундамент — отличное знание операционных систем и умение управлять ими через командные строки.

Язык программирования. В идеале DevOps-инженер должен хорошо разбираться в коде, который создаёт разработчик. Но, разумеется, выучить все языки программирования невозможно. Поэтому надо знать хотя бы один (Python, Ruby, Go, Java) и иметь опыт разработки на нём. Это обеспечит как минимум общее понимание, что и в каком месте выполняет код, даже если он написан на другом языке.

Система контроля версий. Сейчас большинство использует Git, поэтому начинать лучше с него. В дальнейшем, если потребуется, освоить SVN или Mercurial будет просто. Git для DevOps-инженеров интереснее, так как позволяет работать с CI/CD (непрерывная интеграция, непрерывная доставка и развёртывание). Это встроенный сервис для настройки контейнеров и их сопровождения в непрерывных методологиях (DevOps).

Системы управления конфигурацией — Chef, Puppet, Ansible. Представить современные DevOps-процессы или процессы эксплуатации без них очень тяжело. DevOps-инженер ничего не делает вручную и любые регулярные действия стремится автоматизировать. Использование систем управления конфигурациями позволяет удалённо автоматически развёртывать и настраивать программное обеспечение. Плюс очень удобно иметь полное описание всех настроек в одном месте. Это упрощает поддержку и обслуживание серверов.

Облачные сервисы и провайдеры — Azure, AWS, GCP и другие. Сегодня работать с ними — правило хорошего тона, это помогает DevOps-инженеру в автоматизации процессов разработки и деплоя: можно абстрагироваться и не думать о том, как развернуть новое железо.

Платформы для оркестрации контейнеров — Docker Swarm, Microsoft Azure Container Service, Kubernetes и другие. Разумеется, для начала хватит знания одной из них. Необходимость использовать платформы — следствие общей тенденции, перехода компаний от больших монолитных структур к микросервисным. Иначе говоря, приложение делится на автономные компоненты, у каждой из которых свой интерфейс. Это значительно повышает эффективность разработки с точки зрения всего цикла. Организовать структуры микросервисов и их взаимодействий удобнее всего как раз с помощью перечисленных платформ.

Сервисы для мониторинга, сбора, обработки и представления информации. Это довольно большой пласт вспомогательных программ. Системы мониторинга Zabbix и Prometheus, сбор логов — Elastic stack и Sentry, сбор и отображение трейсов — Jaeger/Zipkin, визуализации метрик мониторинга — Grafana, и много другое.

— Изучение всего этого заложено в программу подготовки DevOps-специалистов?

Всё кроме изучения языков программирования — это всё-таки немного другой курс. Обучение начнётся с общего введения в основы современного подхода к организации эффективных команд и работе с динамично возникающими бизнес-задачами. Этот модуль даст всё необходимое, чтобы студенты могли сами организовать эффективную команду, спланировать её процессы/нагрузку и оценить результативность. А потом мы будем погружаться в практические задачи DevOps-инженера, наращивая инструментарий.

— Что будет у студентов в портфолио по итогам курса?

Наш курс базируется на практическом подходе, так что все новые знания студенты отточат в деле на реальных задачах. К примеру, у нас будет сборка контейнера Docker с приложением, автоматизация развёртывания сервисов, создание структуры с использованием модели IaC (интерфейс как код), создание кластера k8s, разворачивание в кластере системы мониторинга Prometheus и многое другое. Наша задача — чтобы студенты не просто нажали пару кнопок и поняли что-то абстрактно, а могли, устроившись на работу, сразу применять новые навыки в деле.

— Нужен ли бэкграунд в IT или другой минимальный набор знаний для начала курса?

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

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

— Поговорим о рынке. Какие компании в основном заинтересованы в DevOps-специалистах?

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

Но вообще ограничений нет. Там, где высокая конкуренция, встаёт вопрос об организации эффективного непрерывного цикла. А это как раз вотчина DevOps-специалистов.

— Как обстоят дела с зарплатой?

Чем больше компания и больше потребностей в DevOps-специалистах, тем выше зарплата. Для Москвы 150–200 тысяч рублей в месяц — не заоблачная планка. Однако, как мне кажется, на старте, после испытательного срока, лучше ориентироваться на 80–120 тысяч рублей, если вы будете хорошим специалистом.

Лучше сначала получать чуть меньше среднего по рынку, но отточить навыки и через год-два уверенно шагнуть наверх, чем сразу прыгнуть выше головы, потерять профессиональную мотивацию и подпортить резюме.

Спрос в этой сфере устойчиво высокий, потребность в квалифицированных специалистах превышает их количество. Так что задача тех, кто хочет найти себя в DevOps, очень простая — учиться, развиваться, оттачивать навыки. И в этом случае у вас не будет проблем ни с трудоустройством, ни с зарплатой.

программированиеdevops-engineer
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!