Рассказываем, какие противоречия между разработчиками и системными администраторами разрешает 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, если вы уже разбираетесь в программировании, и как — если пока ничего не знаете.
![дорожная карта разработчика](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201198%202560'%3E%3C/svg%3E)
Новичкам
Начните с основ. Освойте язык 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.
Работа Джеза Хамбла, Джина Кима и Николь Форсгрен. Рассказывает об эффективности командной работы.
🟢 «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-инженером, достаточно иметь нужные навыки и знания. Их можно получить самостоятельно или на курсах.
Добавить комментарий