Алина Уткина
Алина Уткина
0
Обложка: Кто такой 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).