Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
07 Июн 2024
9 мин
447

Кто такой devops-инженер: роль, задачи и карьера

Рассказываем, какие противоречия между разработчиками и системными администраторами разрешает DevOps-инженер и почему без него приложения дольше доходят

Рассказываем, какие противоречия между разработчиками и системными администраторами разрешает DevOps-инженер и почему без него приложения дольше доходят до потребителя.

Кто такой DevOps-инженер

DevOps-инженер помогает разработчикам и операционщикам работать вместе.

Операционщики — это системные администраторы (сисадмины) и системные программисты. Они следят за стабильной и безопасной работой системы.

Как это происходит: разработчики хотят добавлять в код новые функции. Но они могут нарушить систему, поэтому операционщики против изменений. DevOps-инженер помогает им найти общий язык и объединяет в одну команду. Это уменьшает ошибки и ускоряет выпуск приложения.

Почему такое название

DevOps-инженеры — это специалисты, которые работают по DevOps-методу. Название метода — это сочетание слов development (разработка) и operations (эксплуатация).

Автор термина — Патрик Дебуа. Он придумал его для конференции DevOpsDays в 2009 году. Она впервые объединила большое количество разработчиков, сисадминов и системных программистов.

DevOps определяют по-разному: как движение, набор практических правил или культуру. Некоторые считают, что никаких DevOps-инженеров нет: есть отдельные разработчики, сисадмины, тестировщики и системные программисты, которые работают по определенной методологии.

В основном DevOps-инженерами себя называют системные администраторы или разработчики, которые изучили достаточно новых технологий, чтобы следить за развертыванием приложений. Это значит размещать приложение в рабочей среде — после этого оно доступно для пользователей.

Обязанности DevOps-инженера

Когда разработчики заканчивают программу, ее нужно «выкатить», или «развернуть», чтобы ею могли пользоваться люди. Для этого нужно:

🟢 протестировать программу;
🟢 подготовить сервер — компьютер, на котором она будет работать и обрабатывать запросы пользователей;
🟢 поднять базы данных, где программа будет сохранять информацию;
🟢 мониторить работу первое время.

Цели метода DevOps — ускорить и автоматизировать эти процессы. Тогда разработчики смогут создавать больше нового функционала, а команда поддержки — выкатывать больше изменений.

DevOps-инженер:

🟢 Автоматизирует рутину. Настраивает системы, которые контролируют версии программы, сами создают и запускают сборку программы, готовят новый код к развертыванию.

🟢 Отслеживает работу систем, реагирует на проблемы. Например, анализирует ошибку и сам решает, какая именно команда должна ей заняться: разработки или поддержки.

🟢 Настраивает облачную инфраструктуру. Она увеличивает вычислительные мощности, когда это нужно, или уменьшает, когда поток пользователей спадает.

🟢 Помогает разработчикам, тестировщикам и команде поддержки работать вместе. Для этого внедряет общие инструменты, побуждает обмениваться знаниями и формирует команды.

Как выглядит работа DevOps-инженера

Инженер получает задачу: создать или настроить инфраструктуру приложения. Он решает, где разместить приложение, сколько ресурсов нужно на него выделить, как его собрать и развернуть.

Дальше он разговаривает с разработчиками. Они объясняют, что нужно, чтобы собрать приложение, которое они написали. Этой информации обычно хватает, чтобы автоматизировать сборку.

Затем он говорит с тестировщиками: процесс тестирования нужно организовать, чтобы до релиза — выпуска приложения — успеть собрать все критичные ошибки.

Работа тестировщика связана с развертыванием приложений и больше открыта для новичков, чем профессия DevOps-инженера. На курсе «Инженер по тестированию» вы узнаете, как проводить тестирование, автоматизировать процессы и находить ошибки в приложениях.

Когда приложение запускается на тест, DevOps-инженер смотрит, как оно работает. Если оно хорошо работало у разработчика, а на сервере работает плохо — инженер ищет причину в настройках сервера, сборке и доставке приложения в рабочую систему.

Считается, что разработчик заканчивает работу тогда, когда отправляет код в специальное хранилище — репозиторий. Дальше DevOps-инженер собирает и размещает код на сервере.

Не совсем понятно, кто должен писать инструкции для контейнеров — специальных сущностей для хранения и простого переноса кода на сервер — и создавать файлы для размещения кода. Их может писать разработчик, обращаясь за консультациями к DevOps-специалисту.

Что должен знать DevOps-инженер

Чтобы достигать целей, специалисту DevOps нужен ряд навыков и знание некоторых программ, языков программирования и технологий.

🟢 Программирование
DevOps-инженер обычно владеет языками Python, Ruby и/или Bash. На Python пишут программы анализа данных и создают сложную логику автоматизаций. На Ruby — скрипты: небольшие программы, которые автоматизируют маленькие рутинные задачи. На Bash автоматизируют задачи в Unix-системах: Linux и macOS.

🟢 Системное администрирование
Он знает, как работать с серверной инфраструктурой, и поэтому может управлять серверами, сетями и базами данных.

Для работы с базами данных используют программы MySQL, PostgreSQL или MongoDB.

🟢 Облачные технологии
DevOps-инженер знает AWS, Azure и GCP: платформы для управления облачной инфраструктурой.

AWS — это облачная платформа от Amazon, Azure — от Microsoft, а GCP — от Google.

🟢 Контейнеризация
Код приложения, библиотеки и всё, что связано с программой, упаковывается в контейнер. Его можно запускать на любой операционной системе. Код внутри изолирован от кода в других контейнерах — это предотвращает конфликты. Контейнер распределяется по нескольким виртуальным машинам.

Упаковывать контейнеры умеет программа Docker, а распределять по виртуальным машинам — Kubernetes.

🟢 Виртуализация
Виртуализация — запуск нескольких виртуальных машин на одном сервере. Это эффективно и экономит деньги.

Чтобы создавать виртуальные машины, используют программы KVM на базе Linux и Hyper-V от Microsoft. А VMware может запускать несколько операционных систем на одном сервере.

🟢 Интеграция и доставка
DevOps-инженер автоматизирует управление серверами, сборку и развертывание кода. Для этого использует сервисы непрерывной интеграции и доставки CI/CD: Ansible, Terraform и Jenkins.

Ansible, Chef или Puppet автоматизируют настройку и управление серверами. Terraform управляет инфраструктурой как кодом. Jenkins автоматизирует сборку и развертывание кода.

🟢 Софт-скилы
Софт-скилами в IT называют навыки общения и управления людьми. DevOps-инженер — посредник между специалистами с разными задачами, поэтому должен доносить свою точку зрения и прислушиваться к другим мнениям.

Как стать DevOps-инженером

Чтобы стать DevOps-инженером, нужны навыки и опыт. Но эксперты говорят, что основные знания и навыки можно получить за полгода — если уже есть базовые знания.

Новичкам и программистам с опытом нужен разный подход к учебе на специалиста DevOps. Ниже — схема, которая описывает, как стать специалистом DevOps, если вы уже разбираетесь в программировании, и как — если пока ничего не знаете.

дорожная карта новичка

дорожная карта разработчика
Новичкам

Начните с основ. Освойте язык backend-программирования: на них пишут логику приложений. Это может быть Java или Python.

Изучите DevOps-процессы: непрерывную доставку и интеграцию нового кода в уже отлаженную рабочую систему. Затем — инструменты: Docker для контейнеров, Jenkins для CI/CD, а еще облачные платформы: можно начать с Google Cloud.

Практикуйтесь на проектах. Участвуйте в реальных или учебных проектах. Автоматизируйте задачи или создайте свой проект с нуля и разверните его с помощью инструментов DevOps.

Разработчикам с опытом

Убедитесь, что хорошо помните основы языков программирования: Java как основной язык бэкенда, Python — чтобы писать скрипты. Можно изучить что-то новое: например, Groovy, который отлично управляет серверами и тем, что их связывает.

Овладейте инструментами для непрерывной интеграции — Jenkins, CircleCI или Travis CI. Освойте контейнеризацию и управление контейнерами: Docker создает контейнеры, а Kubernetes развертывает их и управляет ими.

Современная работа DevOps часто связана с облачными сервисами. AWS, Azure и Google Cloud помогут вам упростить и автоматизировать работу.

Где учиться

🟢 Курсы. Есть платные платформы для изучения базовых навыков программирования.

Если вы новичок — запишитесь на курсы Skypro «Java-разработчик» или «Python-разработчик». Здесь вы узнаете основы языков бэкенда и ознакомитесь с основными концепциями процесса разработки.

Если вы уже разработчик — подумайте о том, чтобы получить сертификаты от AWS и Google: AWS Certified DevOps Engineer или Google Cloud Professional DevOps Engineer.

🟢 Сообщество и конференции. Участвуйте в конференциях и встречах по DevOps: сможете быстрее всех узнавать о новых подходах и инструментах и общаться с опытными специалистами.

🟢 Практика и стажировки. Практика — ключевой аспект в учебе. Ищите стажировки или работу младшим девопс-инженером.

Обязательно читайте книги по DevOps:

🟢 «Проект „Феникс“. Как DevOps устраняет хаос и ускоряет развитие компании»

IT-роман Джина Кима, Кевина Бера и Джорджа Спаффорда. Понятно объясняет концепции DevOps.

🟢 «Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях»

Книга Джеза Хамбла, Джоэла Уиллиса и Патрика Дебуа. Описывает принципы DevOps.

🟢 «Ускоряйся! Наука DevOps. Как создавать и масштабировать высокопроизводительные цифровые организации»

Работа Джеза Хамбла, Джина Кима и Николь Форсгрен. Рассказывает об эффективности командной работы.

🟢 «Unix и Linux: руководство системного администратора»

Книга Эви Немета, Гарта Снайдера, Трента Р. Хейна и Бена Уаймена. Дает базовые знания по Linux для начинающих в DevOps.

Сколько получает DevOps-специалист

По данным Geeklink, в 2024 году средняя зарплата DevOps-инженеров в России — 275 000 ₽ в месяц. Хабр Карьера дает похожие данные:

🟢 Средняя зарплата — 225 000 ₽ в месяц.
🟢 Junior DevOps (младший специалист) — 112 000 ₽.
🟢 Middle DevOps (специалист среднего уровня) — 221 000 ₽.
🟢 Senior DevOps (старший специалист) — 345 000 ₽.

Зарплата зависит от города и формы работы: офис или удаленка.

Будущее DevOps

Инженеры компании «Флант» собрали собственные прогнозы развития DevOps в ближайшие годы. Подробнее прогнозы можно почитать на хабре — в статье «Будущее Kubernetes и DevOps: строим прогнозы на 10 лет». Мы приведем несколько тезисов.

🟢 DevOps будет теснее связан с безопасностью, искусственным интеллектом и машинным обучением.

🟢 DevOps может превратиться в консалтинг — инженеры этой сферы будут заниматься по-настоящему сложными решениями архитектуры сетей. Всё остальное будут выполнять разработчики.

🟢 Появятся более жесткие специализации. Например, инженеры по надежности сайтов (SRE) будут следить за стабильностью и производительностью сервисов, а инженеры облачных сервисов — за управлением и оптимизацией облачных ресурсов.

🟢 Появятся новые сферы: уже есть DevSecOps — методология, которая объединяет разработку и операционку с безопасностью. А специалисты прогнозируют появление FinOps, где внедряют программные решения, которые связаны с финансами, MLOps, где внедряют машинное обучение, и AIOps — сферы, связанной с искусственным интеллектом.

🟢 Возможно появление надстроек над облаками — платформ, которые упрощают работу с ними.

🟢 Kubernetes — основное программное решение DevOps-сферы. Но оно всё еще слишком сложное, и в нём много избыточного функционала. Поэтому на базе Kubernetes пишут специализированные dev-платформы: они прячут его сложность за ограничениями интерфейса и простыми сценариями и дают ясные правила работы. Поэтому появится еще много различных решений на базе Kubernetes с более понятным функционалом.

Главное о DevOps-инженере

🟢 DevOps-инженер — посредник между разработчиками и операционщиками.

🟢 Методика DevOps объединяет разработку приложения и эксплуатацию. Это одновременно культура, движение и набор практических правил и рекомендаций.

🟢 DevOps-инженер автоматизирует процессы, настраивает серверы и базы данных, следит за их состоянием и решает проблемы. Его главная задача — ускорить, автоматизировать и упростить путь готового приложения до клиентов.

🟢 DevOps-инженер должен знать основы программирования: Python, Ruby или Bash, системное администрирование, работу с базами данных, облачные технологии, контейнеризацию и виртуализацию.

🟢 DevOps-инженеры используют инструменты для непрерывной интеграции: Jenkins, CircleCI и Travis CI. Они автоматизируют сборку, тестирование и развертывание программного обеспечения.

🟢 Для контейнеризации DevOps-инженеры используют Docker. С его помощью они создают, развертывают и запускают приложения в контейнерах. Код в одном контейнере не может конфликтовать с кодом в другом контейнере. Сами контейнеры проще разворачивать на сервер.

🟢 Kubernetes делает контейнеры масштабируемыми: системы могут обрабатывать больше нагрузки без сбоев.

🟢 KVM, Hyper-V и VMware запускают несколько виртуальных машин на одном физическом сервере. Виртуальные машины могут выполнять несколько разных задач одновременно на одном сервере.

🟢 Ansible, Chef и Puppet автоматизируют настройку серверов. Terraform управляет инфраструктурой: он представляет ее DevOps-инженеру в виде кода. Облачные технологии — AWS, Azure и Google Cloud — позволяют масштабировать приложения: если пользователей много, они увеличивают количество ресурсов, а если мало — то урезают.

🟢 Средняя зарплата DevOps-инженеров в России около 225 000 ₽ в месяц. Senior-специалисты зарабатывают до 345 000 ₽.

🟢 Чтобы стать DevOps-инженером, достаточно иметь нужные навыки и знания. Их можно получить самостоятельно или на курсах.

Добавить комментарий