Термин DevOps происходит от английского Development & Operations (разработка и операции). Это особая методология, которая позволяет автоматически разворачивать и настраивать программное обеспечение. Соответственно, не могла не появиться специальность DevOps-инженера, и в данный момент это чуть ли не самое передовое и перспективное направление в IT-среде.
Designed by yanalya/freepik
На самом деле под термином DevOps скрывается целая когорта разнородных специалистов. На западе их вообще принято называть DevOps Managers (в России как-то привычнее инженеры).
Так чем же конкретно занимаются девопс-инженеры? В двух словах не расскажешь. Начать нужно с того, что DevOps – это не программы и не язык программирования, а методологический подход к созданию программного продукта. Основная цель – сделать так, чтобы на разработку конечного продукта ушло как можно меньше времени и денег.
Ключевые затраты в IT – это время на создание кода, тестирование, настройку и прочие операции. Методика DevOps помогает упростить все эти манипуляции:
Сократить время от релиза до выхода на рынок;
Снизить количество багов, ошибок и «заплаток» в коде;
Сократить время на внесение исправлений и тестирование;
Уменьшить трудозатраты и время на восстановление системы при возможных сбоях (например, когда накатывают новую версию продукта).
Как это достигается? Очень просто: к команде разработчиков приставляют специально обученного человека, который отслеживает все процессы на каждом этапе. Это и есть DevOps-инженер в широком понимании. В чем его задача? Опять-таки, если упрощать: задача девопса «подружить» группу разработки, которая пишет код, с группой инфраструктуры, которые занимаются серверной поддержкой.
Представим, что перед нами сборочный автомобильный конвейер. Одна группа работников прикручивает колеса, другая ставит двигатель и трансмиссию, третья навешивает двери, вклеивает окна и так далее. Теоретически можно заставить первых выполнять работу вторых, а вторых - присматривать за работой третьих. Но так быстро начнется бардак и неразбериха. К тому же у работников разная специализация и вряд ли хватит опыта, чтобы полноценно заменять друг друга.
Вот и при разработке ПО та же самая ситуация: одни пишут код, другие отвечают за деплой - то есть разворачивание программы на сервере, третьи всё это тестируют. И между этими группами неизбежно будут противоречия: в задачи программиста не входит тестирование продукта на сервере, а перед сисадмином нет цели проверять, чего там наворотили в коде айтишники и почему всё не работает, как надо. Притом, что пишут код зачастую не один, а десяток человек. Без должного контроля конечный продукт получается сырым, а иногда вообще неработоспособным, сроки разработки затягиваются, производство становится дорогим и неэффективным.
Вот с этой-то проблемой и борется DevOps-инженер. Можно назвать его этаким куратором и тестировщиком в одном лице.
Помимо Development & Operations существует также технология гибкой разработки ПО под названием Agile. Но между ними есть существенная разница: DevOps предназначен для устранения противоречий в команде IT-разработчиков, а Agile помогает устранить пробелы в коммуникациях между клиентом (заказчиком) и командой специалистов.
Для чего конкретно нужен Agile:
Налаживание обратной связи между пользователями и командой;
Оперативное внесение изменений по пожеланию заказчиков;
Организация работы в маленьких группах разработчиков;
Разделение процесса разработки на мелкие циклы с решением конкретных задач. Итог каждого цикла выглядит как конечный проект.
В чем коренное отличие DevOps от Agile: первый подход позволяет оптимизировать и автоматизировать выполнение типовых задач, в то время как Agile направлен на создание практик гибкой разработки. Это важно для команд программистов, которые трудятся над небольшими, но разнообразными проектами.
Если перечислить по пунктам, то в его задачи входит:
Выбор подходящей архитектуры для приложения или программы на стадии проектирования, аналитика и прогнозирование процессов. Специалист должен дать четкое представление, как будет развиваться продукт и как он будет масштабироваться;
Составление аналитических отчетов и технических заданий;
Мониторинг сред и инструментов разработки на предмет их работоспособности. Если есть необходимость, DevOps-инженер подбирает альтернативу или иные версии инструментов;
Автоматизация производства. В идеале, на всех стадиях разработки должны быть развернуты автоматические процессы, чтобы удешевить и упростить создание продукта. Типичный пример – тестирование программного кода и вылавливание системных ошибок;
Организационная работа. DevOps-инженеру нужно наладить взаимодействие в коллективе, устойчивую связь между IT-отделом, сисадминами, менеджерами, тестировщиками и прочими специалистами, чтобы оперативно исправлять ошибки и разрешать рабочие конфликты.
Безусловно, требования к компетенциям на такой должности самые жесткие. В первую очередь на позиции DevOps-инженера нужен опытный системный администратор на уровне хотя бы middle, а лучше senior. По умолчанию предполагается, что девопс инженер от и до знает Linux.
Networking, он же знания об устройстве интернета: что такое TCP/IP/UDP, как работает HTTP(s), уровни OSI – вот это всё.
Владение языками программирования хотя бы на уровне junior – ещё одно обязательное условие. Примеры:
Java;
Go;
Python;
C/C++, C#.
Также DevOps разбирается в устройстве баз данных и умеет писать запросы в SQL. Тут нужно либо крепко знать, либо хотя бы уметь читать документацию по какому-нибудь PostgreSQL или схожей системе.
Навыки работы с системой версий Git также обязательное требование к hard skills. В последние годы к этому перечню ещё прибавилось знание работы облачных систем, таких как AWS, Azure или Google Cloud.
Ну и знание английского языка по крайней мере на уровне Intermideate, умение читать документацию на английском без переводчика – куда без этого?
Хорошая техническая подготовка, как мы понимаем, ещё далеко не всё. DevOps-инженер плотно взаимодействует с коллегами, более того – вынужден регулярно разруливать конфликты и противоречия. Отсюда базовое и самое ценное умение – искать и находить компромиссы между IT-отделом, командой тестировщиков и системными администраторами.
От хорошего DevOps-инженера также требуются системное мышление и навыки стратегического планирования. Он всегда должен знать, какой инструментарий нужен в конкретном проекте, а от чего лучше отказаться, какой язык взять за базу, а какой будет бесполезен. И не просто знать, а уметь обосновать свое решение.
Designed by senivpetro/freepik
DevOps – это больше про навыки, а не про знания. Поэтому к цели стать DevOps-инженером обычно идут месяцами, а то и годами. Лучше начинать с системного администратора, а уже затем постепенно расширять свой функционал на практике. Главное, что у хорошего DevOps’а должен быть на самом деле хороший кругозор и реальные навыки, оттачиваемые в ходе практической работы.
Безусловно, вы встретите предложения о подготовке DevOps-инженеров, но их следует воспринимать как курсы повышения квалификации для сисадминов или разработчиков. Это скорее вектор развития, а получение знания всё равно придется оттачивать на практике.
Чему конкретно учат на курсах для DevOps-инженеров:
Инструменты создания ПО (Docker, Kubernetes, Ansible, Terraform, Jenkins, TeamCity и т.д.);
Работа с облачными вычислениями, средствами автоматизации, микросервисами и т.п.;
Процессы отладки DevOps;
Углубленное изучение средств и способов тестирования.
Исходя из анализа Хабр, позиция DevOps-инженера должна стать одной из самых востребованных в России в 2022 году. Спрос на таких специалистов не снижается уже несколько лет подряд, что подтверждается и количеством вакансий на известных ресурсах-агрегаторах по поиску работы. Так, на HeadHunter в данный момент насчитывается свыше 4000 незакрытых позиций.
К сожалению, наибольший спрос на DevOps-инженеров в столице (более половины вакансий), в провинции они не так востребованы. Впрочем, это относится почти ко всем IT-специальностям.
Что касается зарплаты DevOps-инженера в 2022 году, то она в среднем выше, чем у программиста. Медианное значение по России составляет около 250 тысяч рублей.
Junior | Middle | Senior |
От 50 до 100 тысяч рублей | От 100 до 300 тысяч рублей | От 400 тысяч рублей и выше |
Плюсы:
Востребованность, которая постоянно возрастает;
Высокая оплата труда;
Возможность всестороннего развития и решение самых разных задач;
Карьерный рост.
Минусы:
Большие требования к квалификации и компетенциям;
Требуются организаторские способности;
Невозможно выучиться с нуля, требуется опыт работы при трудоустройстве;
Малое количество вакансий в провинции;
Часто ненормированный график работы.