Что это за профессия — DevOps-инженер, что входит в его обязанности и как им стать, рассказывает Владимир Шинкарь, Senior Lead DevOps Engineer в Intellias.
Кто такой DevOps Engineer
Прежде всего следует отметить, что изначально DevOps — это не должность, а название методологии (сокращение от development + operations). Методология DevOps направлена на обеспечение эффективного взаимодействия разработчиков и конечных пользователей продукта и оптимизацию всех процессов жизненного цикла ПО.
Соответственно, DevOps Engineer (или просто девопс) — это специалист, который участвует во всех этапах жизненного цикла продукта, обеспечивает тесную кооперацию между командами разработчиков для оптимизации их рабочих процессов и, как результат, помогает сократить время, за которое программный продукт попадет к конечному пользователю.
Что входит в обязанности DevOps Engineer
Обычно DevOps охватывает одну или несколько категорий, которые отражают ключевые аспекты разработки и доставки программного обеспечения:
- непрерывная доставка кода (сборка, тестирование и развертывание);
- конфигурирование и развертывание инфраструктуры (чаще с помощью кода);
- автоматизация всех процессов жизненного цикла продукта;
- настройка облачных сервисов, сети и связей между ними;
- мониторинг и централизованное логирование;
- безопасность всего, что есть на проекте.
Это далеко не полный список активностей, из которых состоят DevOps-процессы — все зависит от проекта и от клиента.
Часто можно встретить DevOps-инженеров с отдельной специальностью по типу:
- Release Engineer — инженер, отвечающий за разработку и налаживание процесса сборки, тестирования и развертывания продукта; в основном это работа с CI / CD.
- Infrastructure Engineer — инженер, отвечающий за создание, настройку и планирование инфраструктуры продукта или продуктов; часто в обязанности такого инженера входит описание инфраструктуры кодом (IaC) и сопутствующее сопровождение в соответствии с потребностями разработчиков или бизнеса;
- SRE — это инженер, отвечающий за стабильность и надежность продукта;
- DevSecOps — новая специальность, которая в последнее время набирает популярность; это инженер, отвечающий за безопасность и все, что с ней связано, ее внедрение на каждом этапе разработки и инфраструктуры в целом.
Плюсы и минусы работы DevOps Engineer
Начнем с плюсов.
➕ Обычно в DevOps-инженеры переходят из системных администраторов, которым уже не так интересна их профессия или которые недовольны заработной платой. Опыт администрирования обычно закрывает часть Ops, поэтому для начала нужно только покрыть базовую часть Dev.
➕ Во время работы DevOps-инженером ты сталкиваешься с большим количеством разнообразных задач, которые часто не похожи друг на друга. Благодаря этому эта профессия и после многих лет остается интересной.
Поскольку DevOps — это методология, пути решения или создания инфраструктуры и процессов всегда отличаются, что влияет на количество инструментов и технологий, которые нужно знать или учить. Соответственно, охватить их все просто невозможно. Ознакомиться со списком технологий и инструментов можно по этой ссылке.
➕ Из этого следует другой плюс, а именно — долгосрочная актуальность профессии. Несмотря на стремительное развитие технологий принципы работы не могут кардинально измениться за один или даже пять лет. Сервера и Linux никуда не денутся и будут актуальны и через десять лет.
➕ Также не могу не отметить тесную кооперацию между командами разработчиков, тестировщиков и других участников разработки программного продукта. Это дает возможность углубиться в проект и, как результат, ускорить его выход на рынок.
➕ Жирный плюс — это востребованность таких специалистов. DevOps-инженеры сейчас разлетаются, как горячие пирожки. Да, спрос всегда был высокий, но за неимением квалифицированных кадров клиенты идут на уступки и готовы предлагать привлекательные условия для инженера.
➕ Последний, но не менее значимый плюс — это необязательное знание языков программирования. Да, с базой все равно придется ознакомиться, но это придет постепенно. Соответственно, это упрощает переход с системного администрирования или даже из другой профессии в DevOps.
Конечно, как и в любой профессии, в работе DevOps Engineer есть свои минусы.
➖ Основной минус — это неполноценные проекты, которые покрывают только один или два аспекта DevOps. Например, CI (процесс сборки и тестирования кода) и его релиз, когда инженер ответственен только за доставку результатов сборки и проверки, все ли прошло успешно. Или Infrastructure Engineer, который занимается только настройкой серверов и сред и не сотрудничает напрямую с разработчиками или заказчиками.
Это не то, чтобы плохо, но это отличается от идеи DevOps, которая должна упростить кооперацию между разработчиками и инженерами по инфраструктуре. Нет полноценного ощущения принадлежности к проекту, что в итоге только демотивирует.
➖ Также не могу не вспомнить Support. Часто встречаются позиции вроде DevOps-инженера, но на самом деле это поддержка уже готового продукта или доработки и исправления багов за кем-то. Такое часто случается, когда компания разработала продукт со своими инженерами, а менее важный функционал отдает доделывать в страны, где меньше стоимость работы, чтобы сэкономить средства.
Что должен знать DevOps Engineer: hard и soft skills
Soft skills
Для DevOps-инженеров нужны такие же soft skills, как и для других инженерных специальностей. Особенно ценится умение общаться и работа в команде — часто это может быть основным критерием для найма на работу, даже несмотря на опыт. Также не стоит забывать о самостоятельности, организованности и лидерстве: эти навыки продвигают вас по карьерной лестнице в два раза быстрее, чем знание технологий.
Можно спокойно работать и развиваться только с hard skills, но дальше в Senior будет трудно прыгнуть.
Hard skills
Как я упоминал ранее, DevOps состоит из различных аспектов — неких точек ответственности, с которыми вы или работали, или еще будете работать.
CI (Continuous Integration). Основная суть CI — получить код, протестировать его, собрать и еще раз протестировать, после чего упаковать и отправить на хранение в так называемый сервер артефактов. Я бы назвал это главным аспектом работы девопса, который требует навыков работы с большим количеством утилит, системами контроля версий и Linux-системами, а также знаний одной или нескольких CI-систем (Jenkins, GitLab CI, CircleCI, GitHub Actions, Azure DevOps, etc).
CD (Continuous Delivery / Deployment). Почти всегда идет после CI и отвечает уже за саму доставку готового продукта к пользователю или на клиентскую инфраструктуру. При настройке CD также понадобятся знания Linux, как и знание сети и различных протоколов (SSH, SFTP, WINRM или банальные bastion-сервера). Здесь также нужны знания Docker, Ansible или популярный сегодня Helm.
Инфраструктура. DevOps — это о гибкости. В соответствии с чем используются облачные сервисы по предоставлению серверов и других ресурсов. На данный момент самыми популярными провайдерами являются:
- Amazon Web Services;
- Google Cloud;
- Microsoft Azure.
Навыки работы с этими провайдерами очень ценятся и играют большую роль при анализе вашего резюме, потому что часто клиент уже имеет свою инфраструктуру в одном из этих провайдеров и ищет эксперта для продолжения или улучшения инфраструктуры.
Configuration Management (CM) — это утилиты и системы по типу Ansible, Salt, Puppet и Chef. С помощью них вы можете управлять состоянием ваших серверов: описываете, что нужно установить и настроить на вашем сервере и какая роль ему будет назначена. Ранее использовался только СМ, но с приобретением популярности облачных провайдеров, разработка инфраструктуры вышла на новый уровень — с помощью кода (Infrastructure as Code / IaC). Для этого используются утилита Terraform и сервис AWS CloudFormation. Некоторые еще используют Ansible, но это в очень исключительных ситуациях. Навыки работы с упомянутыми технологиями очень важны, потому что, собственно, это и есть та Dev- составляющая работы DevOps-инженера.
Не могу не вспомнить о контейнеризации. Тенденция к дроблению программ на меньшие программы (microservices) привела к росту популярности систем контейнеризации, самая популярная из которых — Kubernetes. Я рекомендую начать с изучения основ Docker и всего, что с ним связано, поскольку большинство современных проектов базируется на контейнерах или даже на специальных сервисах, которые предоставляют платформу для ваших контейнеров. В интернете очень много обучающего базового контента на эту тему и порог входа очень низкий.
DevOps также имеет свои специализации с особым списком навыков и методов. Это уже каждый выбирает в соответствии с проектом или тем, что ему интересно.
Карьерные перспективы: сколько зарабатывает DevOps Engineer и куда может вырасти
Зарплата часто зависит от компании и умения себя «продать». Поэтому приведенные цифры будут очень обобщенными.
Я свою DevOps карьеру начинал с курсов — после успешного их прохождения мне предложили работать в должности Trainee с минимальной заработной платой, которая пересматривалась каждые три месяца, потом через полгода, через год и т.д.
Trainee DevOps Engineer
Опыт: 1-6 месяцев.
Зарплата: 300-500$
Junior DevOps Engineer
Опыт: 0.5-1.5 года.
Зарплата: 500-1000$
Middle DevOps Engineer
Опыт: 2-3 года.
Зарплата: 1500-3000$
Senior DevOps Engineer
Опыт: 3-5 лет.
Зарплата: 3000-4500$
Team Lead DevOps Engineer
Опыт: 5+ лет.
Зарплата: 5000-6000$
Architect DevOps Engineer
Опыт: 5+ лет.
Зарплата: 6000-7000$
Конечно, заработная плата может отличаться в зависимости как от типа вашего опыта (сапорт, билд-инженер, SRE), так и от скорости восприятия информации. То есть реально стать Senior или Architect после 3-4 лет, но это скорее исключение, чем правило.
Развиваться всегда есть куда, но после того, как инженер достигает определенного уровня опытности, перед ним встает выбор: менеджмент или архитектура.
Архитектура — это тоже не конец. Всегда есть специальность и домены. Можно развивать экспертизу в безопасности или, например, в machine learning. Также есть перспектива привлечения новых проектов или перехода в CTO. Да, это уже не просто архитектура, это также и менеджмент, но это не значит, что пути могут сливаться.
Менеджмент — это выбор в пользу лидерства. Team lead — это перспектива закрепления ваших soft skills, тесная кооперация с командой, определение целей и пути для достижения результата, развитие как команды, так и лично каждого ее члена. Team lead несет ответственность за команду и проект, что круто развивает вас как личность и учит умению ставить интересы команды и компании выше собственных. Перспективой развития может стать переход в Competency manager, Head of DevOps компании или также CTO. Все зависит от ваших целей и амбиций.
Как стать DevOps Engineer
Образование для DevOps-инженера не является обязательным. Образование нужно, поскольку она формирует круг общения среди людей, которые могут стать потенциальными коллегами или партнерами. Но не обязательно, чтобы это была именно компьютерная инженерия или прикладная математика. Хотя, конечно, такое образование будет плюсом, потому что даст вам базу — как теоретическую, так и практическую.
Книги, курсы и другие ресурсы
Курсы
Для начинающих предлагаю для начала посмотреть дорожную карту профессии DevOps, чтобы понять, с чего начать. Простой способ — это поискать онлайн-курсы, взять список тем и самостоятельно пройтись по ним. К примеру, важный аспект DevOps методологии — это CI / CD, он будет в списке всех курсов. Поэтому заходите в YouTube и ищете базовые вещи по CI / CD. Когда будет база, ищете более сложные примеры. Затем переходите к следующим темам, и так можно двигаться к тому моменту, когда вы будете иметь общее понимание всех аспектов.
После такого уже можно идти на курсы, где вам будут давать задания, или пробовать сразу устроиться на работу стажером или джуниором. Я все же рекомендую после самостоятельного обучения пройти буткемп-курсы от компаний по типу SoftServe, Epam или Eleks — это почти гарантированное трудоустройство. Этот процесс займет у вас от 3 до 6 месяцев, в зависимости от ваших начальных знаний.
Для продвинутых рекомендую A Cloud Guru (бывший Lunux Academi) и Udemi. Конечно, я вас не удивлю, но я с этими сервисами готовился к сертификации, закрывал пробелы в IaC и других интересных темах по типу GitOps или Deployment Strategies. Большинство компаний предлагают своим работникам аккаунт на этих сервисах бесплатно.
С курсов которые я просматривал:
- AWS Certified Developer — с этого рекомендую начать, поскольку он затрагивает основные сервисы, с которыми придется работать больше всего;
- AWS Certified Solutions Architect + Professional;
- AWS Certified DevOps Engineer;
- Implementing a Full CI/CD Pipeline;
- HashiCorp Certified Terraform Associate;
- Hands-On GitOps — для инженеров, которые работают или только начали работать с Kubernetes.
Это простой список курсов, которые удовлетворяют большинство потребностей по изучению AWS, CI / CD и IaC.
Кстати, я планирую разработать собственные курсы по DevOps на украинском. Если вам интересен такой формат, напишите об этом в комментариях.
Книги
Вот несколько книг, достойных внимания:
- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations;
- Continuous Delivery;
- Infrastructure as Code: Managing Servers in the Cloud;
- Container Security;
- Kubernetes Security.
Ресурсы, за которыми следить
Конечно, Dou. Также есть много каналов и чатов в телеграмме и скайпе. Оставлю некоторые из них здесь (не на правах рекламы):
- DevOps Community Chat;
- K8s DevOps chat — Ukraine;
- Около DevOps;
- DevSecOps Wine;
- CyberYozh + YouTube.
И немного собственной истории в конце
Так случилось, что тяга к «я у мамы инженер» начала у меня проявляться еще в средних классах, а с появлением первого компьютера дела пошли еще лучше: где-то через год я уже занимался установкой Windows для своих друзей и знакомых.
И когда я поступил во Львовский государственный университет физической культуры (да, я физрук 😀), я уже жил с мыслью, что после окончания пойду работать системным администратором. Во время учебы история с IT только углублялась — я помогал с настройкой сети в университете и общежитии, при любых вопросах или проблемах все всегда шли ко мне. После получения степени бакалавра я поступил во Львовскую Политехнику на специальность «Программное обеспечение систем», а после окончания учебы нашел работу сисадмином и сменил несколько мест работы в этом направлении.
Переломным моментом для меня стали курсы SoftServe, где я познакомился с аспектами работы DevOps, получил практический опыт от преподавателей и экспертов и получил первую работу как DevOps-инженер. Далее были другие компании и другие проекты. А сейчас я работаю в компании Intellias в роли Senior Lead DevOps Engineer и принимаю активное участие в Center of Excellence. В ближайшее время буду переходить во внутренний Technology Office в качестве эксперта для налаживания процессов на новых проектах.
Ищете работу в ІТ?
У нас на сайте много вакансий в ІТ-компаниях для начинающих и не только.
ВакансииЧитайте также
Как журналистка, жонглер и аналитик сменили профессию и перешли в IT
Что делает и сколько зарабатывает QA Engineer и легко ли ему «войти в ІТ»?
Три девушки-разработчицы — про свою работу в ІТ
Спасибо!
Теперь редакторы в курсе.