Обложка статьи «Кто такой DevOps-инженер? 12 ответов на часто задаваемые вопросы»

Кто такой DevOps-инженер? 12 ответов на часто задаваемые вопросы

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

1

Что такое DevOps?

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

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

Руслан Косарим, руководитель отдела прикладных систем, группа компаний Angara

2

Зачем это нужно?

Участники команды работают сообща и приобретают целостное видение работы всей системы. Это способствует эффективному взаимодействию и, как следствие, улучшению качества продукта.

Стоит сразу обозначить, что, говоря о DevOps, мы имеем в виду не должность. Это не отдельная профессия, а методология и следование набору определённых практик и стратегий, направленных на то, чтобы в конечном счёте результат (реализованный в коде и выполняющий в продуктивной среде функционал) соответствовал ряду бизнес-требований. Бизнесу нужна высокая скорость разработки, стабильность в процессе эксплуатации, при внесении изменений и масштабировании, минимизация затрат, возможность избежать найма дополнительных специалистов.

Дмитрий Криков, технический директор NGENIX

3

Это перспективная отрасль?

Ещё бы. Дополнительные навыки и понимание всего процесса сделают вас востребованным сотрудником. Эта специальность появилась на рынке IT относительно недавно и почти сразу же стала одной из самых популярных и востребованных. Но стоит отметить, что многие работодатели, выставляя подобную вакансию, путают DevOps-специалиста с представителями других профессий или просто ищут 2 в 1. Как итог, спрос сейчас превышает предложение.

4

Хорошо, а кто такой DevOps-инженер?

Devops-инженер как человек с выделенной ролью — это администратор, область деятельности которого лежит немного в стороне по отношению к разработке продукта/продуктов. Он занимается настройкой инструментов и систем, которые позволяют более часто и качественно доносить фичи разработанных продуктов до клиентов. Devops-инженеры — это такие строители дорог, по которым бегут грузовики, нагруженные продуктами, которые создали другие инженеры. В большинстве случаев Devops-инженер — это роль, которую на себя может взять любой член команды. В крупных компаниях, где за счёт создания выделенной роли можно сэкономить, Devops-инженеры проектируют и поддерживают системы доставки изменений для многих команд, стандартизируя эти процессы.

Иван Романько, директор по разработке, компания Selectel

5

Какие проблемы он решает?

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

Фарит Валиахметов, руководитель направлений SDET и DevOps SimbirSoft

6

В чём разница между DevOps-инженером и системным администратором?

Главное отличие сисадмина от DevOps-инженера, конечно же, не в инструментарии и не в знаниях. Я считаю, что это отличие в подходе к работе. У сисадмина есть определённый, неизменный список задач, которые он выполняет ежедневно. Возможно, ещё план по развитию или автоматизации инфраструктуры. У DevOps-инженера, как части команды, таких ограничений нет. Список задач может быть крайне диверсифицированным: вчера я писал код, сегодня тестирую приложение, завтра буду делать то, что будет актуально на тот момент для команды, например, разрабатывать новую фичу, траблшутить проблему с сетью в тестовой среде или настраивать CI/CD процесс.

Павел Попескул, старший инженер по автоматизации процесса разработки, тестирования и развёртывания ПО компании ICL Services

7

Какова его роль в команде?

Разработчик пишет код, тестировщик — тесты, системный администратор занимается эксплуатацией всего, а DevOps-инженер «дружит» между собой результаты их работы. Он делает волшебную кнопку, на которую кликает разработчик после написания очередного куска кода, и далее написанный код попадает в тестовую среду, проходит все стадии тестирования и уходит в прод. Главная задача DevOps-инженера — минимизировать взаимодействие между командами разработки и эксплуатации. В REG.RU часто DevOps-инженерами становятся бывшие системные администраторы, которым небезразличны боли разработчиков.

Александр Хакимов, технический директор хостинг-провайдера и регистратора доменов REG.RU

8

С какими инструментами работает этот специалист?

Из основных инструментов DevOps-инженера я бы отметил:

  • Систему контейнеризации Docker.
  • Оркестратор контейнеров Kubernetes как сервис, предоставляемый в облаке — для построения и автоматизации универсальных пайплайнов доставки и для управления приложениями.
  • Платформу для организации полноценного DevOps-воркфлоу — GitLab.
  • Jenkins — для реализации CI/CD-пайплайнов.
  • Ansible — для управления инфраструктурой.
  • Платформенные (PaaS) облачные сервисы: например, управляемые базы данных, Hadoop и Spark в облаке — для автоматизации задач управления инфраструктурой и упрощения реализации распространённых задач.

Павел Селиванов, ведущий DevOps-инженер Mail‌.ru Cloud Solutions

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

  • системы сборки, позволяющие создать и поддерживать процесс CI/CD (GitLab, Jenkins);
  • сервис проверки исходного кода (SonarQube);
  • хранение и передача артефакта (Nexus, Docker);
  • сервисы мониторинга и оповещений (Prometheus + Grafana + AlertManager, Zabbix, Nagios);
  • сервисы логирования (Grafana Loki, Kibana/Graylog + ElasticSearch).

Максим Ефремов, системный инженер компании «Рексофт»

9

Что входит в обязанности DevOps-инженера?

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

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

Александр Казённов, руководитель корпоративной практики ДКИС ALP Group

10

Куда можно устроиться, будучи таким специалистом?

В любую крупную компанию, которая занимается разработкой, внедрением и администрированием. Дефицит DevOps-инженеров наблюдается там, где разрабатывается большое количество сервисов в рамках B2C: это мобильные операторы, банки, интернет-провайдеры, etc. К потенциальным работодателям также относятся Google, Facebook, Amazon и прочие гиганты.

11

Что с порогом вхождения?

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

12

С чего начать, чтобы стать DevOps engineer?

Начните с полезных статей:

Посмотрите видео на канале ADV-IT, где подробно расписано, что учить и в каком порядке:

Получите более уверенные знания из нескольких книг:

Обложка книги «Философия DevOps. Искусство управления IT»

Философия DevOps. Искусство управления IT

Купить 

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

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

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


Обложка книги «Continuous delivery. Практика непрерывных апдейтов»

Continuous delivery. Практика непрерывных апдейтов

Купить 

Эта книга поможет всем, кто собирается перейти на непрерывную поставку программного обеспечения. Руководители проектов ознакомятся с основными процессами, преимуществами и техническими требованиями. Разработчики, администраторы и архитекторы получат необходимые навыки организации работы, а также узнают, как непрерывная поставка внедряется в архитектуру программного обеспечения и структуру ИТ-организации.

Эберхард Вольф познакомит вас с популярными передовыми технологиями, облегчающими труд разработчиков: Docker, Chef, Vagrant, Jenkins, Graphite, ELK stack, JBehave и Gatling. Вы пройдёте через все этапы сборки, непрерывной интеграции, нагрузочного тестирования, развёртывания и контроля.


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

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

Купить 

Профессиональное движение DevOps зародилось в 2009 году. Его цель – настроить тесные рабочие отношения между разработчиками программного обеспечения и отделами IT-эксплуатации. Внедрение практик DevOps в повседневную жизнь организации позволяет значительно ускорить выполнение запланированных работ, увеличить частоту релизов, одновременно повышая безопасность, надёжность и устойчивость производственной среды. Эта книга представляет собой наиболее полное и исчерпывающее руководство по DevOps, написанное ведущими мировыми специалистами.

И помните, что от этого специалиста требуется тщательная проработка целого ряда вопросов.

Дополнительные ответы экспертов

Артём Моралес

Артём Моралес, DevOps-инженер компании-разработчика российского офисного ПО МойОфис

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

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

Каждый день DevOps-инженер оперирует большим количеством инструментов. Их можно условно разделить на разные группы — к примеру, те, что связаны со средой непрерывного развёртывания (CI/CD-tools), с автоматической конфигурацией, мониторингом, облачной инфраструктурой и др. При выборе каждой технологии специалист обязан чётко осознавать, как внедрение того или иного решения повлияет на процессы в команде. Такие сотрудники должны обладать широким кругозором: это очень востребованная в наше время профессия, и настоящие профи ценятся на вес золота.

Михаил Сарычев

Михаил Сарычев, директор по развитию DBI

Основные задачи системного администратора в команде — это обеспечение работы сетевых и аппаратных ресурсов. Практически всегда в этот список входит ещё и поддержка программных ресурсов и решение некоторых вопросов информационной безопасности, например, настройка фаерволов, VPN-соединения, управление доступами к ресурсам и установка антивирусов.

Именно системным администраторам делегируется необходимость общения с конечными пользователями. Не работает почта? Сломалась клавиатура? Все эти вопросы к системному администратору. Часто системные администраторы помогают разработчикам в настройке сети, серверов. Непосредственно в процессе разработки системные администраторы участия не принимают.

А вот работа DevOps-инженера ориентирована как раз на интеграцию процессов разработки, тестирования, развёртывания и поддержки программных продуктов и сервисов, подразумевает тесное взаимодействие с разработчиками и вовлечённость в проект. В «крупную клетку» задачи DevOps-инженера включают:

  • проектирование инфраструктуры;
  • настройку, поддержку и управление облачными сервисами;
  • управление конфигурацией рабочих, тестовых, production-серверов;
  • управление непрерывной интеграцией CI/CD (в этом пункте на ум сразу приходят инструменты Jenkins/Bamboo/TeamCity);
  • миграция приложений в облако;
  • мониторинг инфраструктуры и приложений;
  • управление поставкой ПО.

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

Кирилл Семёнов

Кирилл Семёнов, DevOps Engineer, TL, DataArt

Начнём с того, что DevOps — подход, а не инженер. Роль DevOps в проекте основополагающая. Проект и всё, что с ним связано, базируется на DevOps-процессах. DevOps — это связать вместе разные части всей экосистемы (Dev, QA, Ops, Sec) и автоматизировано обеспечить SDLC.

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

Чем DevOps отличается от сисадмина? Практически всем. Сисадмин отвечает за конкретные задачи: управление доступом пользователей, настройка сетевой составляющей инфраструктуры, почтовые/DNS-серверы, VMS, обновления ОС и т. д. В сложной экосистеме и процессах, связанных с проектом и SDLC, это малая часть задач, относящихся к Ops.

Основными обязанностями ДевОпс можно назвать следующие основополагающие процессы в жизнедеятельности продукта:

  • CI/CD (Jenkins, Teamcity, Octopus, Gitlab CI и т. д.);
  • Automation (tests automation, tasks automation, updates automation, backups automation, ALL automation);
  • IaC (Terraform, Cloud Native: ARM, Cloud Formation и т. д.);
  • Alerting/Monitoring;
  • Backup/Restore;
  • Disaster Recovery;
  • Security Management (DevSecOps);
  • Release Management и многое другое.

Каждый пункт можно разложить на десятки подзадач. Счёт технологий идёт на сотни. База выглядит вот так:

  • CI/CD tools (f.e. Jenkins);
  • Cloud (AWS/Azure/GCP);
  • IaC (Terraform);
  • Containers (Docker, K8s);
  • Scripting Languages (PS, Python, Bash).