UA RU
logo
28 Jun 2022

DevOps engineer: кто такие? Особенности работы специалистов

Ирина Малашенко

Автор полезных текстов и историй в MC.today

Спрос на DevOps растет, как и вознаграждения, которые готовы платить компании за эту работу. Так, по трендам на DOU, число вакансий для DevOps специалистов в Украине за последние два года увеличилось почти вдвое – с 253 до 474 вакансий. При этом среднее количество откликов на одну вакансию снизилось – с 4,1 до 1,6. Рекрутеры жалуются, что сложно найти хорошего сотрудника, а средняя зарплата по рынку в Украине достигла $3,5 тыс. в месяц, а в США – $126,235 в год.

Редакция MC.today выяснила, что такое DevOps и DevOps engineer, какие плюсы и минусы у этой методологии, и что нужно знать, чтобы пойти этим карьерным путем.

Что такое DevOps

Сам DevOps (акроним от англ. development & operations. – Прим. Ред.) – это не профессия. Это культура и способ работы, при котором разработчики и операционные инженеры работают как одна команда. Так они могут быстрее выпускать обновления и устранять неполадки в системе, если они возникли.

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

В докладе State of DevOps организация DORA в зависимости от производительности команд разработки и эксплуатации программного обеспечения выделяет четыре вида команд:

Курс
UI/UX Design
Навчіться розробляти вебінтерфейси, які подобатимуться клієнтам
РЕГИСТРИРУЙТЕСЬ!
  • элита (elite);
  • команды с высокой производительностью;
  • средней производительностью;
  • низкой производительностью. 

Так, топовые компании, такие как Amazon, Google и Netflix, выпускают обновления несколько раз в день. У них уходит меньше часа, чтобы внести изменения и восстановить систему, если случился сбой. А компании с низкой производительностью выпускают обновления меньше чем раз в полгода. И у них возникает больше сбоев из-за обновлений – примерно 15-30%. А чтобы внести изменения, им нужно более шести месяцев. 

В итоге разница получается довольно внушительной – топовые компании выпускают обновления в 973 раза чаще, при этом ошибки возникают у них в три раза реже. Поэтому все больше компаний стремится в высшую лигу.

Соотношение компаний с высокой и низкой производительностью

Соотношение компаний с высокой и низкой производительностью. Источник: State of DevOps 2021 

Компания Netflix даже добавила инструмент Chaos Monkey, который случайным образом «убивает» процессы или серверы. Это нужно, чтобы убедиться, что сервис переживет критическую ситуацию без неудобств для клиента.

Достоинства и недостатки работы

Можно выделить такие достоинства работы по этой методологии:

  • Обновления выпускаются быстрее и чаще
  • Релизы (англ. Release – последний выпуск программного обеспечения, в котором есть все изменения и обновления – Прим.ред.) становятся надежнее и после них всплывает меньше ошибок
  • Затраты на разработку снижаются до 20%
  • Команда может быстрее исправить ошибки, если те уже возникли.

Недостатки:

  • Саму методологию сложно внедрить – для этого нужно переучивать всю команду работать по-новому, а в условиях постоянных спринтов (небольших фиксированных отрезков времени, от одной до четырех недель, за который команда должна сделать какую-то часть проекта – Прим. ред.) сотрудники могут быть в этом не заинтересованы
  • На рынке мало специалистов, которые могут эту технологию в компании внедрить
  • Высокая нагрузка на менеджмент. Чтобы DevOps работал, его нужно правильно внедрить и выстроить рабочие процессы. Не все менеджеры могут с этим справиться.

История возникновения

Раньше отделы разработки (development) и эксплуатации (operations) работали изолировано друг от друга. Сначала программисты писали код, а потом системные администраторы начинали его развертывать и интегрировать (все действия, которые готовят программную систему к использованию – Прим. ред.). Так работала каскадная модель процесса разработки ПО – Waterfall. Первым эту модель описал Уинстон Волкер Ройс, директор Lockheed Software Technology Center, в 1970 году.

Процесс шел по такой схеме: 

  1. ставили техническое задание;
  2. создавали прототип;
  3. писали код;
  4. тестировали, развертывали, устраняли ошибки, которые возникали при тестировании;
  5. оказывали поддержку после выпуска обновления.

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

С одной стороны разработчики договариваются с заказчиками «на берегу» о том, каким должен быть продукт в итоге. С другой – если нужно что-то изменить, то для этого нужно начинать весь процесс сначала. Из-за этого растет цена и снижается скорость разработки.

Поэтому в 2001 году появилась гибкая методология – Agile. Схема та же, но изменились принципы, которые прописали в Agile Manifesto. Так, в гибкой методологии главное – это хороший продукт и довольный заказчик. Менять что-то можно в любой момент, разработчики с заказчиками должны были работать вместе, как одна команда.

Частично проблему решили, но между разработчиками и системными администраторами все еще было недопонимание. Так у разработчиков основным показателем их эффективности был готовый код, а у сисадминов – стабильность системы, которую этот код мог нарушить. Из-за того, что они не могли согласовать работу, приходилось дольше решать задачу, работать сверхурочно. Срывались релизы, и клиенты были недовольны. 

DevOps стал следующим этапом эволюции инструментов и методов совместной работы. Он позволил быстрее выпускать качественное программное обеспечение. Само движение начало формироваться в 2007-2008 годах. А уже в 2009 после конференции DevOpsDays, которую организовал бельгийский разработчик Патрик Дюбуа, о нем узнал весь мир.

«Библией» DevOps считается книга Патрика Дюбуа, Джина Ким, Джеза Хамбл и Джона Уиллис «Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях», впервые опубликованная на английском языке в 2016 году.

Чтобы получить надежную, безопасную, но при этом гибкую систему выпуска обновлений, у разработчиков, тестировщиков и администраторов появились общие культура и цели. Каждый из них должен понимать, что делает другой и зачем. Так появились T-shaped people (люди в форме Т – Прим. ред.), у которых есть своя глубокая специализация, но они понимают, как устроены другие процессы.

Еще одна важная часть DevOps –  непрерывная интеграция и доставка (Continuous integration и Continuous delivery или CI/CD). Эти методы автоматизируют процесс выпуска программного обеспечения, и как результат – помогают свести к минимуму ошибки и повысить темпы сборки и качество разрабатываемого продукта. 

Продолжительность процессов DevOps

Продолжительность процессов DevOps. Источник: Analytics India Magazine

Виды Ops

Внутри DevOps уже начали появляться специализации. Они зависят от должности и того, чем занимается команда разработчиков. Можно выделить такие виды Ops:

  • PlatOps/InfraOps/SysOps (Platform Operations, Infrastructure Operations, System Operations) – в разных компаниях называется по-разному, но речь всегда идет об администрировании инфраструктуры. Специалисты этого направления отвечают в первую очередь за развертывание, масштабирование, миграцию и управление системами. В отличие от DevOps, SysOps следует подходу ITIL (Information Technology Infrastructure Library или Библиотека инфраструктуры информационных технологий — это серия книг, в которых собраны лучшие практики по управлению, отладке и постоянному улучшению бизнес-процессов, связанных с ИТ – Прим. ред.).
  • DataOps – разработчики и администраторы работают вместе с аналитиками и специалистами по обработке данных.
  • SecOps – позволяет найти уязвимые места и заранее их защитить с помощью автоматизации.
  • DevSecOps – вопрос безопасности поднимается на каждом цикле разработки.
  • ITOps – доставка и поддержка приложений, услуг, инструментов и технологий, необходимых для работы компании, которая обеспечивает ІТ-инфраструктуру. Компьютерное оборудование, программное обеспечение, сетевые службы, сервисы, электронная почта, мониторинговые системы, политики информационной безопасности, системы контроля, системы резервного копирования и хранения данных, оргтехника, телефония и т.д. — всё это составляющие ІТ-инфраструктуры предприятия. 
  • NoOps или No operations – автоматизируется все, от поддержки разработки программного обеспечения до его запуска. По этой концепции, при таком уровне автоматизации специальная внутренняя группа управления программным обеспечением (Ops team) не нужна.
  • LiveOps – когда меняют или улучшают базовые функции в продукте без выпуска нового релиза.
  • CloudOps – формализирует процедуры, которые позволяют правильно работать облачным платформам, приложениям и данным в них.
  • BizOps – применяет технологии для достижения стратегических целей компании. В проведенном до пандемии исследовании 2018 Pulse of the Profession от Института проектного менеджмента (Project Management Institute) аналитики посчитали, что каждые 20 секунд компании по всему миру теряют $1 млн из-за неэффективной реализации бизнес-стратегии, в том числе из-за внедрения ненужных технологий. BizOps должен решать эту проблему.  
  • NetOps – модернизируют IТ-инфраструктуру и используют программно-определяемые сети, сети на основе намерений и виртуализации сетевых функций. Подход направлен на то, чтобы сделать сетевые операции интуитивно понятными. Они должны зависеть от контекста и ориентироваться на аналитику за счет внедрения методов AI (англ. artificial intelligence – искусственный интеллект. – Прим. ред.) и ML (англ. machine learning – машинное обучение. – Прим. ред.).

Сферы работы DevOps engineer

Вот что делает DevOps Engineer, согласно IT-компании Contino:

  • Разрабатывает инструменты и процессы для управления инфраструктурой.
  • Работает на разных платформах с разными языками программирования.
  • Автоматизирует рабочие нагрузок между несколькими облачными провайдерами.
  • Автоматизирует процессов тестирования и развертывания.
  • Предоставляет внутреннюю и внешнюю поддержку на нескольких платформах.
  • Создает инструменты и процессы, повышает удовлетворенность пользователей.
  • Управляет контролем версий через Git и подобные системы.
  • Прописывает конвейеры непрерывной интеграции (англ. continuous integration, CI – Прим. ред.) непрерывного развертывания (англ. continuous delivery или continuous deployment, CD – Прим. ред.) программного обеспечения в процессе разработки.
  • Создает и настраивает оркестраторов контейнеров (оркестраторы – автоматизируют и управляют жизненным циклом контейнеров – Прим. ред.).
  • Работает с разработчиками, чтобы те написали хорошо спроектированные архитектуры микросервисов (это облачный подход, при котором единое приложение строится из множества слабосвязанных компонентов меньшего размера, так называемых сервисов, поддерживающих независимое развертывание – Прим. ред.).
DevOps

DevOps

Процессы и объекты DevOps

Методология DevOps применяется на всех стадиях жизненного цикла программного обеспечения с момента, когда создают код до того, как продуктом пользуются пользователи:

  • Когда разработчики пишут код, методология DevOps применяется для анализа и контроля версий. Так слияние кода происходит без ошибок.
  • На этапе сборки (англ. build. – Прим. ред.) нужна непрерывная интеграция различных сборок.
  • На этапе теста продукта непрерывное тестирование дает обратную связь по бизнес-рискам.
  • При работе с пакетами (англ. operate. – Прим. ред.) – нужен репозиторий артефактов (артефакты в артефактном хранилище могут контролироваться версиями, за счет чего их гораздо легче искать и управлять ими – При. ред.), предварительная установка приложения.
  • Во время выпуска (англ. release. – Прим. ред.) DevOps автоматизирует выпуск и официально его утверждает.
  • Когда развертывается конфигурация (англ. deploy. – Прим. ред.) нужно управлять инфраструктурой как кодом.
  • На последнем этапе мониторинга нужно оценить производительность приложения и опыт работы с конечным пользователем.

Цели, задачи, принципы

DevOps можно использовать для таких целей:

  • быстрее выйти на рынок;
  • снизить количество ошибок и быстрее с ними справляться после релиза;
  • быстрее восстановиться после сбоев.

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

  • согласовывать процессов разработки и поставки ПО с эксплуатацией;
  • автоматизировать процессы разработки, тестирования и развертывания;
  • непрерывно тестировать качество приложений;
  • управлять IТ-инфраструктурой как кодом;
  • управлять изменениями;
  • постоянно мониторить производительность приложений и состояния инфраструктуры.

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

Чтобы оценить, готова ли компания внедрить DevOps, или оценить уже внедренные процессов, используется фреймворк CALMS. Эту аббревиатуру придумал Джез Хамбл, один из авторов книги «Руководство по DevOps». Она расшифровывается как «культура, автоматизация, бережливость, измерения и распространение знаний».

Знания необходимые для работы DevOps engineer

По мнению Contino DevOps инженеру нужно освоить основные шесть навыков:

  1. Основы Linux – операционной системы, основанной на Unix, семействе переносимых, многозадачных и многопользовательских операционных систем. Большинство ролей DevOps будут использовать Linux в той или иной форме. Благодаря открытому исходному коду, выучить ее проще и быстрее чем Windows. В интернете есть много ресурсов, которые помогут изучить Linux. Еще можно сдать экзамены в Linux Professional Institute Certification, что поможет систематизировать знания об этой операционной системе.
  2. Базовые концепции программирования: циклы, переменные, массивы, списки и т. д. Это пригодится не только, когда нужно будет прочитать или изменить код, но и если нужно написать сценарии и автоматизировать рабочие нагрузки. Начать изучение лучше всего с языка программирования Python, так как он достаточно прост. Потом стоит освоить и язык программирования Java.
  3. Unix оболочка Bash – самый важный язык сценариев для автоматизации задач в среде Unix, как и Powershell в среде Windows. Даже если вы предпочитаете писать сценарии на Python или любом другом языке, Bash – самый распространенный.
  4. GIT – это система управления версиями, которая отслеживает изменения в коде. Ее используют все команды разработки программного обеспечения. 
  5. Основы работы с облачными платформами, например, такими как Amazon Web Services, Google Cloud Platform или Azure. Для этого нужно научиться работать с контейнерами, непрерывной интеграцией, непрерывной доставкой и непрерывным развертыванием. Контейнеры — это способ упаковки и изоляции запущенных приложений. Это более безопасно и делает вашу рабочую среду более предсказуемой, потому что контейнер всегда будет работать одинаково, независимо от того, на каком сервере или компьютере он находится. Контейнеры часто используются в конвейерах CI/CD и в производственных рабочих нагрузках и микросервисных архитектурах, поэтому эти знания нужны DevOps инженеру. Кроме того, сейчас часто используются оркестраторы контейнеров, например Kubernetes. Конвейер CI/CD — это производственная линия в компании, которая разрабатывает ПО. Конвейер CI создает и тестирует код, чтобы убедиться, что он готов к интеграции в основную ветку, а конвейер CD – его расширение. Он помогает убедиться, что его можно развернуть. Чтобы понимать CI/CD, нужно разбираться в Git, моделях ответвления Git, разработки на основе магистрали, автоматизации и различных методов тестирования. Jenkins — наиболее широко используемый и мощный инструмент CI, который было бы полезно изучить. Кроме того есть Gitlab CI, который может стать даже более доступным инструментом для изучения конвейеров.

Как стать DevOps engineer

В чем сложность – стать DevOps инженером? Можно часто услышать утверждение, что младших DevOps инженеров не существует. Не потому что нет вакансий, а потому что даже на старте карьеры DevOps инженерам нужно хорошо владеть описанными выше навыками. 

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

В результате путь DevOps инженера – постепенно осваивать технологии и улучшать менеджерские навыки. 

Ниже оставляем список книг и ресурсов, которые могут помочь освоить эти навыки, по рекомендации DevopsCube.

Лучше понять методологию DevOps поможет:

Освоить основы Linux:

Научиться кодить:

Как работают контейнеры:

Вывод

DevOps – это методология, при которой разработчики и операционные инженеры работают как одна команда, чтобы быстрее выпускать обновления и устранять неполадки в системе, если они возникли. Многие топовые команды, такие как Amazon, Google и Netflix, благодаря DevOps, начали выпускать обновления несколько раз в день, тратя меньше времени на внесение изменений и устранение неполадок. 

Этот материал – не редакционныйЭто – личное мнение его автора. Редакция может не разделять это мнение.

Новости

Спецпроекты

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: