- Кто такой DevOps Engineer?
- Что должен знать DevOps инженер?
- Развитие профессиональных навыков
- Карьерные перспективы и заработная плата DevOps Engineer
- Ключевые тренды в DevOps и технологии
- Выводы
DevOps инженер – это профессия, которая очень часто присутствует в рейтингах самых высоких зарплат в IT. При этом спектр обязанностей достаточно неочевидный: разработчики – программируют и создают ПО, системные администраторы – администрируют компьютерные системы, тестировщики – тестируют, рекрутеры – рекрутят… А что делают DevOps специалисты? Каков спектр их обязанностей? Какие инструменты они используют и почему их труд столь высоко оценивается в денежном эквиваленте? С этими и другими вопросами разбираемся в данной статье.
Кто такой DevOps Engineer?
Краткая история возникновения DevOps
DevOps является относительно молодым направлением в IT, которое возникло примерно в 2007-2008 гг. во время объединения усилий двух сообществ: разработчиков ПО (ответственных за Development – разработку) и специалистов по поддержке и управлению IT-инфраструктурой (Operations – операционная сторона или сторона, ответственная за эксплуатацию, операционную поддержку).
Главная проблема заключалась во взаимной изолированности команды разработчиков и команды эксплуатации. Страсти достигали пика на момент выпуска проекта в продакшн: девелоперы считали, что если ПО работает у них локально, его можно релизить, а ответственность за любые последующие проявления нетрудоспособности продукта приписывалась команде операционной поддержки. Последние, в свою очередь, совершали абсолютно зеркальное действие, обвиняя в неисправностях разработчиков.
Именно объединение усилий специалистов обоих направлений дало жизнь новой специальности, которая находится на стыке двух IT-стихий – DevOps Engineer.
Что такое DevOps? Какие обязанности DevOps специалиста?
DevOps (Development and Operations) – это философия и набор практик, призванных объединить разработку и эксплуатацию в единую и координированную цепочку поставки программного обеспечения. Использование данного подхода способствует:
- сокращению цикла разработки;
- автоматизации и оптимизации процессов;
- ускорению ответа на потребности пользователей;
- повышению защищенности ПО;
- улучшению качества программных продуктов;
- лучшей коммуникации внутри команды.
Жизненный цикл DevOps. Источник: статья на GitLab под названием "What is DevOps?"
Соответственно, DevOps Engineer – это инженер, использующий навыки как из области разработки, так и из сферы эксплуатации и операционной поддержки. По сути он поддерживает разработку, деплоит продукт (запускает на сервере, хостинге) и тестирует его работоспособность, а также поддерживает среды, где расположен задеплоенный продукт.
Обязанности DevOps специалиста включают:
- Управление CI/CD. DevOps Engineer строит, настраивает, управляет и поддерживает процессы непрерывной интеграции (CI) и непрерывной доставки (CD), обеспечивая быстрые и надежные поставки продукта пользователям.
- Автоматизация инфраструктуры. Он создает и поддерживает инфраструктуру, способствующую эффективному масштабированию и управлению ресурсами, а также автоматизирует процессы жизненного цикла продукта.
- Обеспечение безопасности. Девопс инженер работает над обеспечением безопасности программ и инфраструктуры, применяя практики DevSecOps.
- Мониторинг, логирование и обслуживание. Он устанавливает системы мониторинга для отслеживания производительности приложений и инфраструктуры для быстрого реагирования на проблемы в работе системы.
- Настройка облачных сервисов. Девопс специалисты активно работают с cloud-платформами для разработки, развертывания и управления приложениями.
- Оптимизация функционирования инфраструктуры. Правило системных администраторов "работает – не трогай" в случае с девопсами неактуально. Специалист наблюдает за работой системы и на основе фидбека может вносить определенные коррективы. Иногда это позволяет существенно уменьшить затраты на инфраструктуру.
- Коммуникация. Поскольку специалист находится одновременно между Dev и Ops, он обязательно должен иметь хорошие коммуникативные навыки, чтобы эффективно взаимодействовать с коллегами, быстро включаться в процессы и быть на острие производительности.
Также некоторые DevOps инженеры могут выбирать себе более конкретный круг обязанностей, например:
- DevSecOps – специалист, больше сосредоточенный на безопасности;
- Release Engineer – внимание в большей степени направлено на DevOps-процессы, ассоциированные с релизом;
- Build Engineer – обязанности больше связаны с этапом билда приложения, когда нужно собрать код, разобраться в конфликтах и подключить необходимые зависимости;
- Cloud Engineer – сосредоточен на работе с облачной инфраструктурой;
- Automation Engineer – занят процессами автоматизации инфраструктуры;
- SRE (Site Reliability Engineer) – фокусируется на масштабируемости, надежности и доступности онлайн-сервисов;
- и т. д.
Что должен знать DevOps инженер
Ответ мы составим, отталкиваясь от трех источников:
- путеводители по специальности (roadmaps);
- советы от DevOps инженеров;
- требования в вакансиях на украинских сайтах по поиску работы.
Компьютерные сети
Компьютерные сети – это база как для сисадминов, так и девопсов. Вам понадобятся следующие знания: понимание различных архитектур сети, а также их структур, знание сетевых моделей OSI и TCP/IP, основные протоколы этих моделей (IP, HTTP, HTTPS, TCP, UDP и т. д.), маршрутизация, фаерволы и брандмауэры, мониторинг и безопасность сети, DNS, VPN и т. д.
Linux
Linux – семейство операционных систем с открытым исходным кодом. DevOps инженеры тесно работают с данной разновидностью ОС, например она важна при конфигурации CI/CD контейнеров, автоматизации сборки, выполнения билдов, работе с артефактами и т. п. Вам нужно знать основы линукс, включая установку, настройку и поддержку данной ОС. Чаще всего в вакансиях встречаются Ubuntu, CentOS и Red Hat.
CI/CD
CI/CD (Continuous Integration / Continuous Delivery) – это подход к разработке ПО, ориентированный на автоматизацию процессов разработки, тестирования и развертывания программных изменений. Этот подход способствует снижению риска ошибок и улучшению качества программного обеспечения, а также быстрому внедрению нового функционала.
Также CI/CD помогает облегчить сотрудничество разработчиков и других команд, например, взаимодействие между тестировщиками и специалистами по инфраструктуре. В результате этот подход способствует постоянному улучшению ПО и быстрому реагированию на изменения рыночных и бизнес-условий.
Это фундаментальная тема в работе всех, кто причастен к девопсу, поэтому хорошие знания CI/CD процессов обязательны.
Скриптовые языки (Bash, PowerShell), Python
Также нужно уметь писать bash-скрипты для автоматизации различных процессов – от резервного копирования данных до настройки среды разработки.
Bash – это командная оболочка, в которой можно писать команды в Linux и Unix системах – их будет выполнять ваша ОС (в Windows используется PowerShell). А для того, чтобы можно было запустить сразу несколько команд, можно написать специальный скрипт с последовательными инструкциями и просто запускать его через командную оболочку тогда, когда вам нужно.
Для этого лучше всего подходит язык программирования Python, и его нужно будет изучить, чтобы упростить скриптинг и наладить автоматизацию задач.
Навыки работы с Bash и Python (PowerShell реже применяется) пригодятся DevOps Specialist и всем другим специалистам, которые связаны с конфигурацией ОС, а также помогут понимать код, написанный разработчиками.
Веб-серверы
Веб-серверы играют ключевую роль в развертывании и поддержке веб-приложений и услуг. Одними из самых популярных являются Nginx, Apache Tomcat, IIS. Девопс специалистам нужно уметь правильно их настраивать и траблшутить (находить и оперативно решать проблемы).
Docker, Docker Hub
С Docker вы можете автоматизировать процесс развертывания и управления программами в контейнеризированных средах. Эта технология способствует более быстрому деплою программ, облегчает тестирование и сокращает интервал между написанием кода и запуском программных приложений. Обязательный инструмент в арсенале DevOps.
Docker Hub – репозиторий (веб-хранилище), где расположены docker-контейнеры. С его помощью разработчики могут загружать свои и скачивать контейнеры других девелоперов, чтобы потом использовать в своих целях.
Одно из важных преимуществ докера – он позволяет создать одну среду для разработки, на которую не будут влиять ОС и личные программно-аппаратные настройки разработчиков. Это облегчает не только разработку, но и процесс выпуска продукта, поскольку на релизе ПО будет иметь значительно меньше конфликтов и проблемных ситуаций.
Облачная инфраструктура: AWS, Azure, GCP
Облачные сервисы позволяют использовать мощности сторонних компаний (в данном случае – Amazon, Microsoft, Google) для выполнения вычислений, хранения данных, развертывания и масштабирования инфраструктуры, автоматизации, мониторинга и проведения аналитики, использования API и т. д. Они сейчас супер востребованы, поэтому один клауд-сервис из перечисленных (AWS, Azure, GCP) нужно знать обязательно.
Больше всего вакансий сейчас именно на AWS.
Git, GitHub / GitLab
Git – распределенная система контроля версий, которую используют разработчики для фиксирования своего прогресса и более простого ведения совместной разработки. Это фундаментальный инструмент, который вы должны знать, чтобы отслеживать и управлять каждым изменением исходного кода и других файлов.
GitHub, GitLab и Bitbucket – это хранилища, в которых хранится код вашего проекта, над которым работает команда. Также они имеют ряд встроенных функций, которые будут важны в том числе и в работе девопс специалиста. Идеальным вариантом будет, если вы изучите работу и с GitHub, и с GitLab.
Jenkins / GitLab CI / Circle CI / GitHub Actions
Это CI/CD системы, которые помогают в работе с непрерывной интеграцией нового кода и непрерывной доставкой новой версии продукта пользователям.
Jenkins позволяет настраивать различные шаги CI/CD, например сборку, тестирование, развертывание и даже интеграцию с облачными сервисами. Он помогает снизить время между написанием кода и его внедрением.
GitHub Actions – интегрированная с GitHub служба автоматизации. Девопс разработчики используют её для создания и настройки CI/CD. Она позволяет выполнять действия после доставки кода в GitHub-репозиторий, например компиляцию, тестирование и развертывание.
Circle CI и GitLab CI можно наделить такими же характеристиками – они позволяют настраивать CI/CD. Все инструменты имеют ряд отличий, а выбрать стоит тот, который лучше подходит под ваши задачи и имеет лучшую совместимость с системами, которые вы используете.
Agile: Scrum / Kanban
Методологии разработки ПО, которые являются фундаментальными в работе девопс специалистов, поскольку они определяют основы, на которых базируются все процессы в команде.
Scrum – методология разработки ПО, которая относится к гибким (Agile). Её главная задача – создать промежуточный продукт, который теоретически можно представить пользователям, а с каждой последующей итерацией – спринтом в 2-4 недели – добавлять всё больше и больше изменений, двигаясь итеративно к конечному виду.
Kanban – ещё одна Agile-реализация, которая делает акцент на скорости разработки проекта от начала и до конца, а также на визуализации задач – для этого команда использует Kanban-доску и непрерывно совершенствует процесс разработки.
Английский язык
DevOps инженерам нужен английский (желательно Intermediate и выше) для хорошего понимания технологий, с которыми они будут работать, чтения мануалов и т. д., ведь большинство документаций и полезных статей идут именно на языке Туманного Альбиона. Также English нужен для успешной коммуникации с иностранными заказчиками / членами команды и т. д.
Дополнительные технологии
Кроме основных вышеперечисленных технологий, в вакансиях довольно часто встречаются следующие:
- системы мониторинга и логирования: Zabbix, Grafana, ELK (Elasticsearch, Logstash, Kibana), Prometheus;
- системы управления конфигурациями: Ansible и Terraform;
- Kubernetes – технология оркестрации контейнеров;
- понимание БД – как реляционных, так и нереляционных.
Развитие профессиональных навыков
Как получить образование по направлению DevOps? В университетах таких специальностей не существует – по крайней мере в украинских, – есть только общие направления, в которых преподаются фрагменты того, что требуется девопс инженерам, например компьютерные сети, операционные системы, программирование, теория информации и кодирования, криптография и т. д. Поэтому новичкам нужно обращаться к другим источникам. Перечислим их:
- Бесплатные интернет источники / самостоятельное обучение. Сюда можно отнести YouTube, разные социальные сети с соответствующими группами, где собираются девопс специалисты, блоги и статьи в открытом доступе, ChatGPT и прочее. Преимущества очевидны – вы никому ничего не платите, однако вам нужно самостоятельно подбирать учебные материалы (которые могут быть устаревшие), самостоятельно искать ответы на вопросы, поддерживать дисциплину, учебную мотивацию и т. д.
- Курсы. Вы можете записаться на очные/онлайн курсы и учиться с тренером и другими одногруппниками, или же выбрать формат записанных видео курсов (Udemy, edX, ITVDN и др.). Выбор в пользу очного или онлайн обучения с тренером позволяет лучше овладеть материалом, поскольку вам есть к кому обратиться, конкуренция подогревается одногруппниками, а также вы имеете постоянную мотивацию, ведь д/з и курсовые проекты должны быть выполнены вовремя. Минус – для качественных курсов нужно доставать кошелёк, но оно того стоит. Сюда же можно отнести конференции DevOps, на которых вы можете знакомиться с единомышленниками и прокачивать ваши знания и навыки.
- Курсы от крупных компаний. Вариант, позволяющий попасть на качественные курсы и учиться в достаточно интенсивном темпе с перспективой получить приглашение на позицию Intern/Trainee в этой же компании. Очень классный вариант, однако есть два но: 1) нужно самостоятельно получить некоторые знания по DevOps и пройти отбор; 2) такие курсы бывают платными. Данный формат обучения может предоставляться компаниями EPAM, SoftServe, Sigma Software, PortaOne и т. д.
- Менторство. Вы также можете найти знакомого или DevOps-филантропа, который возьмёт вас под свое крыло и будет обучать, выдавать д/з, отвечать на вопросы, направлять, следить за прогрессом и т. д. Тоже хороший вариант, однако найти таких добродушных джедаев весьма тяжело.
Образовательные ресурсы дадут вам знание инструментов. А как насчет личных скиллов – так называемых soft (мягких) навыков? Чтобы стать хорошим DevOps Specialist, важно иметь следующие качества:
- коммуникабельность, ассертивность и умение играть в команде;
- умение продуктивно распоряжаться временем (time management);
- проактивность;
- внимательность;
- хорошо развитая смекалка, смышленость;
- хорошо развитые критическое и системное мышления;
- умение быстро учиться;
- умение хорошо слушать и слышать;
- жажда постоянного развития;
- хорошие навыки problem solving / траблшутинг;
- стрессоустойчивость;
- умение брать на себя ответственность;
- эмпатия.
Карьерные перспективы и заработная плата DevOps Engineer
Количество вакансий
Начнём с того, насколько востребованы DevOps Engineers. Для этого просмотрим количество открытых вакансий на DOU.ua – крупнейшем сообществе украинских девелоперов – и сравним с другими популярными направлениями (на начало ноября):
- DevOps – 156 вакансий;
- QA – 160;
- Front End – 150;
- Python – 108;
- Java – 107;
- .NET – 100;
- Node.js – 102;
- Data Engineer – 46;
- Data Science – 45;
- Android – 27.
На украинском Djinni, где айтишники Украины анонимно ищут работу, ситуация следующая:
- DevOps – 283 вакансии;
- JavaScript / Front-End – 534;
- Java – 168;
- C#/.NET – 161;
- Python – 193;
- Node.js – 222;
- QA Manual – 136;
- QA Automation – 88.
Конкуренция
Воспользуемся соотношением количества отзывов к количеству вакансий на DOU (октябрь 2023), чтобы понять, насколько конкурентен IT-рынок у специалистов по направлению DevOps. Видим следующее:
В среднем на 1 вакансию приходится 11 претендентов. Это достаточно хороший результат как для текущего состояния украинского IT. Например, для QA эта цифра составляет 109.6, FrontEnd – 109.1, Java – 46.3, Node.js – 33.9, .NET – 32.2, Python – 26.4.
Вы абсолютно справедливо подметите, что это статистика для всех специалистов – как новичков, так и специалистов с опытом. А какое соотношение отзывов-вакансий у тех, кто имеет меньше 1 года опыта?
По состоянию на октябрь 2023: DevOps – 24.5, FrontEnd – 458, Node.js – 443, Java – 198, .NET – 178, QA – 139.7, Python – 72.5. Всё равно девопс имеет гораздо меньше конкуренции, чем наиболее популярные направления.
Зарплаты
Касательно ЗП на украинском IT-рынке обратимся к летнему зарплатному опросу от DOU.
DevOps специалисты имеют одну из самых высоких медианных зарплат – 3500 USD, уступая SRE (одна из ветвей DevOps), менеджерским и высшим руководящим должностям.
Медианная ЗП в соответствии с городами:
- Киев – 3675 USD;
- Харьков – 3000 USD;
- Львов – 2800 USD;
- Одесса – 4212 USD;
- Днепр – 4000 USD;
- Ивано-Франковск – 3875 USD.
Карьерные пути DevOps
Карьерные перспективы достаточно обширны и зависят от того, чем занимается DevOps специалист, поскольку это неоднородная отрасль. Следовательно, вы можете выбрать для себя что-то более нишевое и развиваться именно там, например:
- хотите фокусироваться на облачных процессах – Cloud Engineer;
- нравится автоматизация инфраструктуры – вам в Automation Engineer;
- делаете ставку на кибербезопасность и защиту на всех этапах жизненного цикла разработки – DevSecOps будет отличным выбором;
- Site Reliability Engineer – отличный выбор, если хотите зарабатывать ещё больше денег и заниматься качеством уже готовых систем;
- и так далее.
Если говорить о росте вверх, то сначала вас ожидает стандартная девелоперская лестница – Junior, Middle, Senior, а с увеличением объема вашего опыта вы можете претендовать на руководящие должности, такие как Head of DevOps, Lead, Architect.
Также у вас есть возможность отойти от DevOps ремесла как такового и:
- углубиться в программирование, перейдя в разработчики;
- стать автоматизированным тестировщиком (Automation QA);
- строить карьеру в области кибербезопасности в качестве аналитика, белого хакера, специалиста по безопасности и т. п.;
- пойти в системное администрирование и сконцентрироваться на работе с инфраструктурой;
- заниматься менеджерской деятельностью и управлять командами разработчиков/тестировщиков и прочее.
Здесь действует и обратное правило: так же вы можете попасть в DevOps и через разработку, и через QA, и через CyberSecurity либо другое направление. Просто надо будет доучить недостающую часть стека.
Ключевые тренды в DevOps и технологии
DevOps постоянно развивается, и существует несколько ключевых тенденций и технологий, которые определяют текущее направление развития:
- DevSecOps (Development, Security, Operations). Безопасность выходит на первый план: наблюдается устойчивая тенденция ко всё большей интеграции парадигм безопасности и практик в DevOps процессы, чтобы программное обеспечение было как можно менее уязвимым и более надежным.
- Интеграция искусственного интеллекта. В конце 2022 и начале 2023 года возник большой ажиотаж вокруг ChatGPT, созданный на базе ИИ. Конечно, это не первый случай, когда используются нейронные сети, однако событие было резонансным. Поэтому логично, что по всему IT катится ИИ-тренд, поскольку это несёт упрощение работы, повышение скорости реагирования и производительности.
- Infrastructure as Code (IaC). Всё больше популяризируется подход к инфраструктуре как к системе, на которую человеческий фактор должен оказывать минимальное влияние. Взамен как можно больше процессов должны автоматизироваться за счет использования программного кода (скрипты, шаблоны, конфигурационные файлы и прочее) в противовес ручной/интерактивной настройке.
Сюда же можно добавить serverless-вычисления, микросервисы, Chaos Engineering, контейнеризацию и оркестрирование, тренд на Site Reliability Engineering, усиление мониторинга и cloud-технологии.
А из трендовых инструментов можно отметить следующие основные:
- eBPF – технология, позволяющая программировать и выполнять код прямо в ядре операционной системы Linux. Эта технология расширяет возможности фильтрации сетевых пакетов и обеспечивает высокий уровень мониторинга и анализа сетевого трафика.
- WebAssembly (он же Wasm) – бинарный формат веб-приложений, который может выполняться в браузерах. Для DevOps дает возможность развертывания и мониторинга веб-приложений, которые работают на разных языках программирования и могут запускаться в браузере без дополнительных ограничений.
- OpenTelemetry – это open-source проект, который помогает собирать данные о производительности, мониторинге и трассировке приложений.
- Argo Rollouts – инструмент, направленный на автоматизацию процесса развертывания приложений и микросервисов. Он расширяет возможности Kubernetes по управлению релизами и развертыванию приложений, предоставляя дополнительные функции и контроль над процессом обновления.
- Инструменты от OpenAI. Год назад именно эта компания выпустила знаменитый ChatGPT, однако им её достижения не ограничиваются. Эта компания активно занимается разработками на базе ИИ, и также приложила усилия к GitHub Copilot, который значительно упрощает написание кода.
Выводы
DevOps – довольно интересное и разностороннее направление, в котором найти себя может каждый, кто умеет траблшутить и играть как с кодом, так и с инфраструктурой. Требования могут быть достаточно размазаны в зависимости от сфокусированности конкретной вакансии, плюс нужно учитывать, что многие работодатели ищут себе как можно более декорированных специалистов, поскольку дешевле нанять одного "универсала", чем 2-3 нишевых. Однако именно поэтому и зарплаты у девопсов одни из самых больших на IT-рынке, если не принимать во внимание руководящие должности.
Для тех, кто хочет узнать мнение опытного System Engineer и DevOps специалиста касательно DevOps карьеры, советуем просмотреть запись вебинара от Николая Прокопенка. Автор имеет 6 лет опыта в аутсорсе и аутстафе в крупных компаниях (Luxoft, Ciklum, DataArt), а также является сертифицированным экспертом Microsoft Azure.
Желаем удачи на вашем пути в IT!
Статьи по схожей тематике