Согласно Отчету о вакансиях Open Source за 2020 год, подготовленного Linux Foundation и edX, западные работодатели больше нуждаются в ИТ-специалистах с навыками DevOps (65%), чем в разработчиках (59%). Наиболее востребованы они в крупных организациях, где разрабатывается много приложений и ведется управление большим количеством серверов в рамках B2C. Такие специалисты высокооплачиваемы, поэтому в небольших компаниях их обязанности часто распределяются между разработчиками, инженерами по инфраструктуре и системными администраторами. Сегодня поговорим, почему DevOps-инженер нужен бизнесу, в чём его отличие от системного администратора и SRE, и на что обращают внимание наши консультанты, когда ищут кандидатов этого профиля.
DevOps (Development Operations) — это методология, помогающая наладить эффективное взаимодействие между разработкой и эксплуатацией ПО. DevOps-инженер работает на стыке нескольких IT-специализаций и занимается автоматизацией жизненного цикла ПО, способствуя увеличению производительности, уменьшению операционных затрат, сохранению рыночной конкурентоспособности и быстрому решению возникающих проблем.
Задачи, которые помогают решать DevOps-инженер
Главная задача DevOps-инженера — увеличение эффективности и безопасности разработки ПО. На разных этапах жизненного цикла цифровых продуктов эти специалисты могут участвовать в решении следующих вопросов:
- Разработка, запуск и поддержка конвейера непрерывной поставки ПО.
- Интеграция инструментов, обеспечивающих конвейер непрерывной поставки.
- Стандартизация и автоматизация инфраструктуры для сборки, развертывания и тестирования ПО.
- Мониторинг, автоматизация и модернизация существующей инфраструктуры.
- Обнаружение и фиксация различных проблем.
- Обеспечение бесперебойной работы продуктовой среды
- Поддержка команд разработки в вопросах системного администрирования, инфраструктурной оптимизации и сопровождения.
- Организация процесса DevOps (на всех этапах — от инфраструктуры до сервиса).
Hard skills специалиста DevOps
Для решения своих задач DevOps-инженер использует определенные инструменты. В зависимости от уровня и опыта специалиста их количество может быть разным. Назовём основные технологии, которыми может владеть кандидат данного профиля:
- Чтобы заниматься автоматизацией процессов разработки — от построения архитектуры до деплоя — DevOps желательно знать, как они устроены, а также понимать, чем занимаются разработчики и тестировщики, какие у них цели и задачи.
- Чтобы непосредственно автоматизировать процесс разработки, DevOps пишет скрипты и программы, соответственно ему необходимо знание одного или нескольких языков программирования. Сейчас на рынке особенно востребованы Python и Go.
- Чтобы автоматизировать интеграцию кода в репозитории, осуществлять сборку, тестирование и запуск приложений в продакшн DevOps пригодится опыт работы с CI/CD, Jenkins, Terraform.
- Чтобы перенести процесс разработки в облачную среду и сократить затраты на инфраструктуру, DevOps-инженеру будет полезны знания GCP, AWS и Azure.
- Чтобы разворачивать приложения и запускать код, DevOps-инженеру необходимы навыки работы в операционных системах. Сегодня большинство серверов работает на Linux, поэтому знание именно этой ОС особенно востребовано.
- Чтобы отслеживать исправления и истории изменений для упрощения анализа и восстановления кода, нужно понимать принципы работы систем управления версиями Git, SVN или Bazaar.
- Чтобы осуществлять деплой приложений, могут потребоваться знания Kubernetes, Docker и микросервисной архитектуры.
На что стоит обратить внимание при поиске DevOps
Чтобы определиться с уровнем нужного специалиста, следует оценить сложность задач в компании. Например, чтобы срочно разработать релизную политику или систему управления развертыванием Big Data сервисов необходим сотрудник Senior-уровня, а для проектов без сжатых сроков релиза можно нанять нескольких Junior-инженеров: на первых порах они будут вникать в процессы, но по мере профессионального роста смогут решать много задач.
Если вы хотите усилить команду, которая работает с конкретными технологиями, например, с высоконагруженным Jaeger, то нужен DevOps-инженер именно c этой компетенцией. Если же необходим специалист общего профиля, то стоит уделить внимание базовым знаниям кандидата, его опыту в автоматизации и мониторинге, тому, какие инструменты он выбирает для решения задач, схожих с задачами нанимателя. Важно, чтобы претендент совпадал по этим параметрам с командой работодателя.
DevOps-инженер и системный администратор: в чём разница
Существует заблуждение, что задачи DevOps-инженера может решить системный администратор. К тому же часто, DevOps начинают свою карьеру в IT именно с позиций администрирования. Отчасти требования к этим специалистам схожи, но при детальном анализе выявляются и существенные различия:
- Так, DevOps занимается конфигурированием рабочих, тестовых и production-серверов, поэтому в их резюме отмечены навыки Puppet, Ansible, Chef и т.д. Системные администраторы решают вопросы построения и обслуживания оборудования и программного обеспечения, необходимых для компании, и для этого им нужен опыт в настройке оборудования и маршрутизаторов, а также навыки в администрировании рабочих станций и т.д.
- DevOps автоматизируют процесс разработки и пишут для этого скрипты, поэтому в своих резюме они указывают языки программирования, которыми владеют. В то время как системные администраторы не принимают участия в написании кода, скриптов и разработке ПО, поэтому от них знание языков программирования не требуется.
- DevOps-инженеры решают задачи надежности функционирования облачной ИТ-инфраструктуры, высоконагруженных проектов, высокой доступности приложений, балансировки нагрузки и т.д., а следовательно они обладают опытом работы с AWS, MS Azure, Docker, Kubernetes и т.д. А системные администраторы помогают поддерживать работоспособность локальной сети и ПО, следовательно, навыки работы с контейнерными оркестраторами и облачной инфраструктурой им не нужны.
DevOps и SRE: в чём разница
Ещё одной IT-специализацией, родственной DevOps, считается SRE (Site/SystemReliabilityEngineering). Если коротко, то DevOps ближе к системному администрированию, а SRE — к программированию. Функционал SRE-инженеров шире и от них требуется полноценный опыт в роли Middle-разработчика, в то время как от DevOps не ожидают серьёзных знаний в написании кода. Потребность в таких специалистах появляется, когда софт становится очень сложным и нагруженным, и необходимо обеспечить надёжность работы систем. Отчасти SRE можно сравнить с архитекторами: на вакансии этого типа подходят лишь опытные кандидаты, знающие что и когда может пойти не так, и как это можно предотвратить или исправить. Как отдельная специализация SRE появилась в компании Google и не так давно перекочевала на российский рынок. В отечественных реалиях ещё нет чёткого понимания отличий DevOps от SRE, поэтому, часто в вакансиях можно увидеть смешанный список требований к кандидатам — и DevOps, и SRE. Обычно это означает, что от SRE-инженера требуются навыки автоматизации и разворачивания, но не все соискатели умеют или хотят этим заниматься.
Где искать DevOps-инженеров
Искать опытных DevOps можно в социальных сетях, на профессиональных ресурсах (dzone.com, puppet.com, stackoverflow.com) или в профессиональных Telegram-каналах (DevOps_Ru, DevOps Jobs, Админим с Буквой и т.д.). А также можно обратить внимание на мероприятия, тематика которых связана непосредственно с DevOps или с технологиями, относящимися к DevOps-практикам.
Если у вас есть задача усилить команду разработки сильными DevOps-инженерами, оставьте заявку, и мы подберем специалистов с релевантным опытом работы.