Медианная зарплата DevOps-инженеров в России — 235 000 руб. Выглядит заманчиво, но порог входа в профессию высокий. Чтобы стать экспертом в области DevOps, нужно получить опыт работы с Linux и облачными платформами, выучить языки программирования, освоить инструменты автоматизации и виртуализации.
Для тех, кто хочет развиваться в сфере DevOps, дорожная карта станет полезным инструментом. Сегодня расскажем, где получать знания, в каких областях полезно разбираться DevOps-инженеру, какие навыки рекомендуют подтянуть эксперты.
Коротко о терминах DevOps
В основе DevOps лежит идея, что разработка, тестирование и эксплуатация продукта — это единый циклический процесс.
DevOps состоит из следующих компонентов:
- автоматизированные инструменты для тестирования и развертывания;
- средства автоматизации DevOps;
- процессы DevOps;
- команда DevOps.
DevOps — это методология разработки программного обеспечения (Dev) и IT-операций (Ops), которая помогает быстро и эффективно поставлять программные продукты и обеспечивать бесперебойное течение всего процесса.
DevOps — ключевой элемент в современной разработке ПО. За счет него компании быстрее и эффективнее могут реагировать на изменения рынка и требования клиентов. Внедрение DevOps в рабочий процесс компании поможет как разработчикам, так и операционщикам выдохнуть, а не работать на износ в постоянной гонке за дедлайнами.
Кто такой DevOps-инженер
Ключевую роль во внедрении методологии DevOps и обеспечении ее работы играет DevOps-инженер.
Основные задачи DevOps-инженера:
- внедрение операций CI/CD;
- автоматизация инфраструктуры;
- сотрудничество с различными командами (в основном с командами SDE и ИТ-операций);
- управление доступностью и производительностью программных приложений;
- поиск багов и решение проблем организации процесса разработки.
Девопсер — многопрофильный специалист. Он берет на себя десяток задач, от решения которых зависит эффективность совместной работы разработчиков, тестировщиков и администраторов.
Языки программирования
Выбор языка, наверное, самая трудная задача для разработчика. Но все же нужно для старта выбрать хотя бы один язык в качестве основного. Например, можно взять Python или Golang — их просто освоить, оба имеют понятный синтаксис, есть возможности для роста в будущем.
Темы, которые нужно изучить инженеру в DevOps. Источник
Ресурсы:
- Статья «Облегчаем жизнь разработчиков на Go: полезные советы и лайфхаки для начинающих»
- Статья «Мой путь в профессию: из аналитиков в Go-разработчики»
- Лонгрид по полезному чтению в 2023 году: 39 книг, которые помогут писать красивый <код>
Изучение концепций операционных систем
Поскольку DevOps-инженер работает непосредственно с программными системами, он должен иметь четкие знания об операционных системах и их базовых концепциях.
Зачем изучать концепции операционной системы:
- для понимания архитектуры систем;
- для автоматизации и настройки управления;
- для устранения неполадок и отладки;
- для применения инструментов безопасности.
Этот раздел знаний включает три разные области — операционные системы, сетевые протоколы и виртуализацию. Рассмотрим области подробнее.
Операционные системы
Большинство необходимых вам систем (виртуальные машины, контейнеры и т.д.) работают под управлением Linux. Изучите:
- интерфейс systemd;
- систему инициализации;
- группы и пространства имен;
- настройку производительности;
- утилиты командной строки — awk, sed, jq, yq, curl, ssh, openssl и другие.
Сетевые протоколы
DevOps-инженеры изучают сетевые протоколы, потому что это основа коммуникаций между различными компонентами системы. Вы будете понимать, как работают сетевые устройства и как они общаются друг с другом. Это помогает выявлять и устранять проблемы в сети, оптимизировать ее работу и обеспечивать безопасность передачи данных. Кроме того, знание сетевых протоколов позволяет лучше понимать процессы автоматизации и интеграции приложений, что важно для DevOps-подхода.
Что нужно знать:
- HTTP/2;
- QUIC или HTTP/3
- протоколы уровня 4 и уровня 7 модели OSI;
- MTL;
- прокси;
- DNS;
- BGP;
- как работает балансировка нагрузки;
- таблицы IP и IP-адреса;
- дизайн сети.
Виртуализация
DevOps-инженеру нужно знать виртуализацию, чтобы управлять виртуальными средами для разработки, тестирования и развертывания приложений. Виртуализация позволяет создавать изолированные среды.
Кроме того, виртуализация помогает DevOps-инженеру улучшить управление ресурсами, так как можно использовать виртуальные серверы и хранилища данных, а это экономия ресурсов и сокращение затрат на оборудование.
Подробнее:
- Виртуальные машины в Базе знаний #CloudMTS
- Статья «О виртуализации простыми словами: зачем «резать» серверы»
Docker
Знание Docker позволяет DevOps-инженеру быстро создавать и развертывать тестовые среды, тестировать приложения в изолированной среде и упрощать процесс разработки.
Docker — это платформа контейнеризации с открытым исходным кодом, которая помогает разработчикам упаковывать программные приложения и их зависимости в контейнеры небольшого размера.
Какие преимущества:
- переносимый и гибкий;
- обладает высокой масштабируемостью;
- позволяет вести разработку совместно;
- поддерживает согласованность.
Подробнее:
Kubernetes
Kubernetes — платформа с открытым исходным кодом, которая автоматизирует развертывание больших приложений и управление ими. Платформа позволяет сделать продукт разработки более масштабируемым и автоматизировать процесс от начала до конца.
Изучить подробнее:
- Вебинар «Основы Kubernetes: секреты от #CloudMTS»
- Containerum managed сервис для работы с Kubernetes в Базе знаний #CloudMTS
- Статья «17 вопросов по Kubernetes, которые может услышать разработчик на собеседовании»
- Статья «Микросервисы, контейнеры и Kubernetes»
CI/CD
CI/CD (Continuous Integration/Continuous Delivery) — методология разработки программного обеспечения, которая позволяет автоматизировать процессы сборки, тестирования и доставки приложения в продакшн.
Continuous Integration (CI) — процесс автоматической сборки и тестирования кода после каждого изменения в репозитории. Позволяет быстро выявлять ошибки и проблемы в коде, что ускоряет процесс разработки.
Continuous Delivery (CD) — процесс автоматической доставки приложения в продакшн после успешного прохождения всех тестов. Позволяет сократить время между разработкой и выпуском продукта, что может дать компании конкурентное преимущество.
Инструменты CI/CD: GitLab, Jenkins, Bamboo для автоматизации, тестирования и быстрой доставки различных модулей приложения разным отделам и командам.
Дополнительно:
- Статья «Как построить процесс доставки приложения в Kubernetes, используя gitlab ci и gitlab runner»
- Статья «Почему сканирование шаблонов IaC так важно»
Облачные сервисы
DevOps-инженер должен понимать принципы работы IaaS (инфраструктура как сервис), PaaS (платформенные решения), различных облачных сервисов (например, Containerum Managed Kubernetes), чтобы организовать эффективный процесс разработки приложений.
Ресурсы:
- Бесплатный курс Cloud DevOps от МТС
- Статья «Что такое облачный сервер и как его использовать»
- Как работать с облачной инфраструктурой: книги и справочники для инженеров [и интересующихся]
Информационная безопасность
Для большинства компаний, особенно небольших, безопасность долго была на первом месте с конца по приоритетности. Функциям продукта почти всегда уделялось больше внимания. Но из-за растущих атак и различных государственных требований компаниям приходится адаптировать свои стратегии безопасности. Сквозное шифрование, надежный RBAC, политики IAM, управление и аудит, а также внедрение таких критериев, как NIST, CIS, ISO27001, становятся общими правилами.
Безопасность контейнеров, политика в виде кода, управление облаком и безопасность цепочки поставок — очень актуальные темы.
Дополнительно:
- Подборка материалов по облачной безопасности: статьи, руководства, вебинары
- Прокачаться в 2023 — подборка материалов по киберугрозам и защите данных
Дополнительные ресурсы
Даем список ресурсов, которые дадут общее представление о DevOps:
- Стратегии развертывания в DevOps
- DevSecOps гайд: от новичка до эксперта
- DevOps.com
- Linux Foundation
- Книжная полка #CloudMTS: что почитать DevOps-инженеру?
- Бесплатный курс Cloud DevOps от МТС
Коротко о главном
DevOps упрощает жизнь всех участников процесса разработки цифрового продукта.
Чтобы стать экспертом в этой области, необходимо обладать определенными знаниями и навыками. Эти навыки помогают автоматизировать процессы и сотрудничать с командами разработчиков для эффективного создания высококачественного программного обеспечения.
Дорожная карта поможет определить конкретные цели, задачи и шаги, необходимые для того, чтобы стать DevOps-инженером.
Важно понимать, что DevOps — это не только технические знания, а еще коммуникация и сотрудничество с другими участниками проекта. Поэтому для успешной карьеры в DevOps необходимо развивать soft skills.
Комментарии (13)
porcastinationForLife
07.06.2023 22:33+2я: [вижу зарплаты там и хочу(apparently not) вкатится в девопс]
первый шаг: - выучить язык програмирования
я: "нууу начинается!"
так же я: [продолжаю работать абосаным сисодмином за копейки]
trabl
07.06.2023 22:33+2Работаю уже больше 10 лет в it, начинал админом, сейчас уже РН по ИТ-инфраструктуре в крупной компании. Есть отличные знания сетей, виртуализации, Linux, хорошие знания Phyton, bash, git. Самостоятельно изучил основы docker, Jenkins, k8s. Тот же zabbix впервые лет 10 назад поднимал и писал свои шаблоны, триггеры и т.д. Вот знаю что devops это моё, мне интересно, и главное есть возможность работать удалённо, что для меня особенно важно. Пробовал откликаться на hh на различные вакансии, тишина. Записался на платный курс devops инженер, в июле пойду учиться, может после окончания курса кого-нибудь заинтересует резюме человека, без опыта именно devops, иначе где этот опыт получать?)
ALexhha
07.06.2023 22:33+1Записался на платный курс devops инженер, в июле пойду учиться, может после окончания курса кого-нибудь заинтересует резюме человека, без опыта именно devops, иначе где этот опыт получать?)
уж лучше получить нормальные сертификаты от мировых брендов, а не бумажку от Васи и ко. Ну, например, CKA по k8s, от AWS пару сертификатов
хорошие знания Phyton, bash, git.
ну вы знаете этот Фитон )))
vitaly_il1
07.06.2023 22:33+1С линуксом и сетями не вижу никаких проблем войти в DevOps.
Вместо курса я бы просто посидел-подумал, что на текущем месте автоматизировать. Напримерautomatic provisioning новых машин для людей / задач
CI/CD - если есть разработка
MiDeT
07.06.2023 22:33В практикум чтоль?
Там Вам будет легко и неинтересно с таким бекграундом, а бумажка, говорят, не сильно ценится.
Но денег потратите.
ALexhha
это что то из области эффективных менеджеров ? У нас есть приложение, которое требует 8 cpu/16 gb ram. Надо запустить 100 копий. Как в данном случае виртуализация поможет сократить затраты на оборудование ?
Очень странное определение k8s. Ok google
Как говорится найди 3 отличия
А что, вне докера вести разработку совместно нельзя ?
gbdfc
Негодование по поводу вм какое-то странное.
Приложение может не постоянно требовать все ресурсы, можно убирать, добавлять cpu на ходу. + можно какое-то время продержаться на переподписке, пока ждешь новые хосты в кластер.
ALexhha
А на baremetal этого делать нельзя ?
И я привел конкретный пример задачи, каким боком в ней поможет виртуализация ? Ответ - никаким. Поэтому странно заносить в плюсы виртуализации снижение затрат, имхо
ProFfeSsoRr
Если приложение под 8ЦПУ, то на baremetall c 32 CPU можно развернуть их 4, в изолированых средах, а 1 сервер с 32 ядрами стоит дешевле, чем 4 сервера с 8 ядрами. Так достигается сокращение затрат на оборудование. А если приложение еще и непостоянно требует эти ядра, то на еще более жирных серверах можно сэкономить на overprovisioning. И да, это можно делать и без виртуализации/контейнеров и т.п., но с ними делать проще.
ALexhha
и в чем будет разница при запуске всего того же на виртуалках ? У нас есть все тот же сервер с 32 cpu/128 ram. Чем конкретно поможет виртуализация ?
так а кто мешает купить 1 сервер с 128 ядрами... и в каком месте достигается сокращение ?
gbdfc
Адекватные админы мешают купить 1 сервер. Потому, что это нужно не только крутить, но и обслуживать.
Сокращение достигается не уменьшением количества ресурсов, а их распределением, что и ведёт к снижению затрат.
ProFfeSsoRr
Собирать инфраструктуру из похожих маленьких кубиков проще, чем из уникальных больших. Развернуть пачку виртуалок, собранных по одной схеме, и в каждой своё приложение, проще в обслуживании, чем понаставить все эти приложения прям на хостовую ОС.