DevOps-инженер (в разговорной речи — «девопс») — это специалист, который строит и поддерживает путь кода от коммита разработчика до работающего сервиса у пользователя: автоматическую сборку и проверку, упаковку в контейнеры, выкладку на серверы, мониторинг и восстановление после сбоев. Проще говоря, он делает так, чтобы новая версия программы попадала в продакшен быстро, повторяемо и без ручной возни.
Содержание
- Мини-словарь: кого путают с девопсами
- Чем занимается DevOps-инженер: путь одного коммита
- Инструменты DevOps-инженера по слоям
- Первый артефакт: сервис в контейнере с проверкой здоровья
- Зарплата DevOps-инженера: от чего зависит
- Как стать DevOps-инженером: дорожная карта до артефактов
- Выводы
- Где применяется / связь с практикой
- FAQ
Важно различать два слова. DevOps — это подход к работе, при котором разработка и эксплуатация отвечают за продукт вместе. DevOps-инженер — это должность, которую компании придумали под часть этой работы. Ниже — чем такой инженер занят на практике, чем он отличается от сисадмина и SRE, какие инструменты нужны, от чего зависит зарплата и по какой дорожной карте в профессию входят.
Мини-словарь: кого путают с девопсами
- Системный администратор — поддерживает серверы, сети, учетные записи и рабочие места. Часто делает это руками, по заявкам.
- DevOps-инженер — автоматизирует доставку и эксплуатацию приложений: пайплайны, контейнеры, инфраструктура как код, мониторинг.
- SRE (Site Reliability Engineer) — отвечает за надежность сервиса в цифрах: цели доступности (SLO), бюджет ошибок, разбор инцидентов. Подход сформулирован в Google.
- Платформенный инженер — строит внутреннюю платформу, через которую разработчики сами выкатывают сервисы (шаблоны, портал, самообслуживание).
Это упрощение: в небольшой компании все четыре роли может совмещать один человек, а в крупной одна роль делится на несколько команд. Поэтому в вакансии смотрите на задачи, а не на название.
| Роль | Главный вопрос | Типичный результат работы |
|---|---|---|
| Сисадмин | Работает ли инфраструктура сейчас? | Настроенный сервер, сеть, доступы |
| DevOps-инженер | Как изменение быстро и безопасно попадет в прод? | Пайплайн, образ, скрипт развертывания |
| SRE | Насколько сервис надежен и где он сломается? | SLO, алерты, разбор инцидента |
| Разработчик | Что делает программа? | Код продукта и тесты к нему |
Чем занимается DevOps-инженер: путь одного коммита
Лучше всего работу девопса видно на одном изменении. Разработчик исправил ошибку и отправил коммит в Git. Дальше включается то, что построил DevOps-инженер:
- CI-система (GitLab CI, GitHub Actions, Jenkins) замечает коммит и запускает пайплайн: сборку, тесты, проверку стиля и уязвимостей зависимостей.
- Если все прошло, собирается Docker-образ с приложением и кладется в реестр образов с номером версии.
- Система развертывания выкатывает новую версию: в Kubernetes, на виртуальные машины или в облачный сервис. Хорошая выкладка идет постепенно и умеет откатываться.
- Мониторинг (Prometheus, Grafana, сбор логов) показывает, не выросли ли ошибки и задержки после релиза. Если выросли — срабатывает алерт, дежурный откатывает версию.
- Серверы, сети и базы, на которых все это работает, описаны кодом (Infrastructure as Code: Terraform или OpenTofu, Ansible) и лежат в том же Git.
Отсюда типичные задачи в вакансиях: пайплайны, контейнеры и Kubernetes, инфраструктура кодом, мониторинг, дежурства и безопасность (секреты, доступы, обновления). Точный набор зависит от компании.
Инструменты DevOps-инженера по слоям
Учить инструменты стоит слой за слоем, а не «все сразу».
| Слой | Зачем нужен | Примеры |
|---|---|---|
| Основа | Понимать, где и как работает сервис | Linux, сети (DNS, TCP, HTTP, TLS), Git |
| Скрипты | Автоматизировать рутину | Bash, Python, иногда Go |
| Контейнеры | Упаковать приложение с зависимостями | Docker, Podman |
| Оркестрация | Запускать много контейнеров и следить за ними | Kubernetes, Helm |
| CI/CD | Собирать, проверять и выкатывать автоматически | GitLab CI, GitHub Actions, Jenkins, Argo CD |
| Инфраструктура как код | Создавать серверы и сети повторяемо | Terraform, OpenTofu, Ansible |
| Наблюдаемость | Видеть состояние сервиса и получать алерты | Prometheus, Grafana, Loki, OpenTelemetry |
| Облака | Арендовать ресурсы вместо своего железа | Yandex Cloud, VK Cloud, AWS и другие |
Инструмент внутри слоя обычно выбирает компания. Переучиться с одной CI-системы на другую проще, чем догнать пробел в Linux и сетях.
Первый артефакт: сервис в контейнере с проверкой здоровья
Чтобы почувствовать профессию руками, соберите минимальный сервис с эндпоинтом /health, упакуйте его в образ и запустите. Это же — первый пункт в портфолио. Проверено 24.09.2026: Docker Engine 29.5 (colima на macOS), образ python:3.14-slim (Python 3.14.7).
Файл app.py:
import json
import os
import signal
import sys
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == "/health":
body = json.dumps({"status": "ok"}).encode()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
else:
self.send_error(404)
# docker stop шлет SIGTERM: завершаемся сразу, а не ждем SIGKILL через 10 секунд
signal.signal(signal.SIGTERM, lambda *_: sys.exit(0))
host = os.environ.get("HOST", "0.0.0.0")
port = int(os.environ.get("PORT", "8080"))
print(f"listening on {host}:{port}", flush=True)
HTTPServer((host, port), Handler).serve_forever()
Файл Dockerfile рядом с ним:
FROM python:3.14-slim
WORKDIR /app
COPY app.py .
RUN useradd --system --no-create-home appuser
USER appuser
EXPOSE 8080
HEALTHCHECK --interval=10s --timeout=3s \
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=2)"
CMD ["python", "app.py"]
Сборка, запуск и проверка:
docker build -t devops-demo:0.1 .
docker run -d --name devops-demo -p 127.0.0.1:8080:8080 devops-demo:0.1
curl -s -i http://127.0.0.1:8080/health; echo
docker exec devops-demo id
docker inspect --format '{{.State.Health.Status}}' devops-demo
Результат прогона (вывод сборки, ID контейнера и строка Date опущены; последнюю команду запускали через 12 секунд после старта, чтобы прошла первая проверка здоровья):
HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.14.7
Content-Type: application/json
Content-Length: 16
{"status": "ok"}
uid=999(appuser) gid=999(appuser) groups=999(appuser)
healthy
Что здесь от DevOps, а не от программирования. Сервис работает не от root (USER appuser), поэтому взлом приложения не дает сразу прав суперпользователя в контейнере. Порт опубликован только на 127.0.0.1 хоста, а не на всех интерфейсах. Обработчик SIGTERM дает docker stop завершить контейнер за доли секунды: без него в нашем прогоне остановка занимала 10,07 секунды, потому что Docker ждал и добивал процесс SIGKILL.
Типичная ошибка: сервис слушает 127.0.0.1 внутри контейнера
Удалим первый контейнер и запустим тот же образ, но попросим сервис слушать только локальный адрес:
docker rm -f devops-demo
docker run -d --name devops-demo -e HOST=127.0.0.1 -p 127.0.0.1:8080:8080 devops-demo:0.1
curl -sS http://127.0.0.1:8080/health
Фактический результат:
curl: (52) Empty reply from server
При этом docker inspect показывает healthy, а в логах контейнера — listening on 127.0.0.1:8080. Причина: 127.0.0.1 внутри контейнера — это адрес самого контейнера, и проброшенный с хоста трафик до такого сокета не доходит. Проверка здоровья запускается изнутри, поэтому ее это не беспокоит. Исправление — слушать 0.0.0.0 внутри контейнера (как в нашем app.py по умолчанию), а ограничивать доступ снаружи публикацией порта и файрволом.
Здесь важный урок профессии: HEALTHCHECK проверяет только то, что в нем написано, — ответ процесса изнутри контейнера. Доступность сервиса для пользователей он не гарантирует, для этого нужна внешняя проверка из мониторинга. Текст ошибки curl зависит от среды: в нашем прогоне через colima это код 52, на других установках Docker встречается Connection reset by peer (код 56).
Зарплата DevOps-инженера: от чего зависит
Чтобы было от чего оттолкнуться: в калькуляторе зарплат Хабр Карьеры на 24.09.2026 медиана по специальности «DevOps-инженер» — 225 тыс. рублей в месяц (по 1224 анкетам, суммы с учетом премий). По грейдам: стажер — около 67 тыс., junior — около 113 тыс., middle — около 221 тыс., senior — около 363 тыс., lead — около 454 тыс. Для сравнения, медиана по всему IT в отчете Хабр Карьеры за первое полугодие 2026 года — 191 тыс. рублей.
Это суммы, которые сообщили сами специалисты, по всем городам и форматам вместе, а не обещание оффера: разброс внутри грейда большой (у middle половина ответов лежит между 163 и 288 тыс.), а junior-анкет почти в три раза меньше, чем middle, — первых вакансий в DevOps мало. Цифры меняются каждые полгода, поэтому перед поиском работы сверьте ориентир со свежими вакансиями на hh.ru и Хабр Карьере по своему городу, грейду и формату.
Что сильнее всего двигает цифру:
- Грейд и зона ответственности. Поддерживать чужой пайплайн и проектировать платформу для десятков команд — разные уровни.
- Kubernetes и облака в продакшене. Опыт эксплуатации под нагрузкой ценится выше, чем учебные кластеры.
- Дежурства. On-call часто оплачивается отдельно, но это и нагрузка на выходные и ночи.
- Город, формат и отрасль. Финтех и крупные продуктовые компании обычно платят больше небольших интеграторов.
Как стать DevOps-инженером: дорожная карта до артефактов
Честный факт: DevOps редко бывает первой профессией в IT. Чаще сюда приходят сисадмины, которые начали автоматизировать, разработчики, которые настраивали CI своей команды, и тестировщики-автоматизаторы. С нуля путь длиннее, и срок сильно зависит от стартовой базы и часов в неделю. Каждый шаг ниже заканчивается артефактом, который можно показать.
- Linux и сети. Артефакт: виртуальная машина, куда вы заходите по SSH-ключу (вход по паролю выключен), с настроенным файрволом и объяснением, что делает каждое правило.
- Git и скрипты. Артефакт: репозиторий с Bash- или Python-скриптом, который проверяет свободное место и доступность сайта и пишет понятный лог.
- Контейнеры. Артефакт: образ вроде показанного выше — не от root, с проверкой здоровья, с
READMEо запуске. - CI/CD. Артефакт: пайплайн, который на каждый коммит запускает тесты, собирает образ с тегом версии и кладет его в реестр.
- Инфраструктура как код. Артефакт: конфигурация Terraform или OpenTofu, которая создает и удаляет тестовую машину в облаке одной командой, плюс роль Ansible для ее настройки. Секреты — не в Git.
- Kubernetes и мониторинг. Артефакт: сервис в учебном кластере (minikube или kind) с метриками в Prometheus, дашбордом в Grafana и одним осмысленным алертом.
Если не получилось
| Симптом | Частая причина | Что сделать |
|---|---|---|
curl к контейнеру: пустой ответ или сброс соединения |
Приложение слушает 127.0.0.1 внутри контейнера |
Слушать 0.0.0.0, проверить docker logs |
docker stop висит около 10 секунд |
Процесс не обрабатывает SIGTERM | Добавить обработчик или запускать с --init |
| На собеседованиях отказывают без обратной связи | Резюме — перечень инструментов без результатов | Описать 2-3 артефакта: что сделали, какая проблема, как проверили |
| Нет откликов на junior-вакансии | Их мало, конкуренция высокая | Искать вход через смежную роль: админ, QA-автоматизация, поддержка |
Выводы
- DevOps — подход, DevOps-инженер — должность: он автоматизирует путь кода от коммита до работающего сервиса и следит за его состоянием.
- От сисадмина девопса отличает автоматизация и работа с кодом, от SRE — фокус на доставке, а не на цифрах надежности; границы ролей в разных компаниях свои.
- Инструменты учат слоями: Linux и сети, скрипты, контейнеры, CI/CD, инфраструктура как код, Kubernetes и мониторинг.
- Ориентир по зарплате (калькулятор Хабр Карьеры, 24.09.2026): медиана DevOps-инженера 225 тыс. рублей, junior около 113 тыс., middle около 221 тыс.; цифру сильнее всего двигают грейд, опыт с Kubernetes и облаками и дежурства, а перед поиском ее сверяют со свежими вакансиями.
- В профессию чаще входят из смежных ролей; портфолио из артефактов по дорожной карте убеждает лучше списка технологий.
Где применяется / связь с практикой
Освойте тему на практике
Показанный контейнер с проверкой здоровья — первый шаг цепочки, которую DevOps-инженер собирает на работе: дальше к нему добавляются пайплайн, описание инфраструктуры кодом, выкладка в Kubernetes и мониторинг. Если хочется пройти эту цепочку на практических заданиях с проверкой, посмотрите программу курса «DevOps практики и инструменты». Чтобы сначала познакомиться с темой и преподавателями, подойдут бесплатные открытые уроки Otus.
FAQ
Нужно ли DevOps-инженеру уметь программировать?
Писать продуктовый код каждый день не нужно, но читать чужой код и писать скрипты на Bash или Python нужно обязательно. Без этого не получится автоматизировать задачи и разбираться, почему упала сборка.
Обязательно ли знать Kubernetes на старте?
Для первой работы чаще важнее уверенный Linux, сети, Docker и CI. Kubernetes встречается в большинстве вакансий уровня middle, поэтому его стоит освоить следующим шагом.
Можно ли стать DevOps-инженером без высшего образования?
В большинстве коммерческих компаний на первом отборе решают навыки и портфолио из артефактов. Диплом чаще влияет на отбор в крупных компаниях, госсекторе и при работе за рубежом.



