Close

Кто такой инженер DevOps?

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

Портрет Тома Холла
Том Холл

Консультант и специалист по DevOps


Если в организации сформировалась разрозненная структура, в которой команды по разработке и эксплуатации действуют раздельно, внедрение DevOps часто стимулирует организационную перестройку. Для успешного внедрения DevOps требуются правильные сотрудники, культура и инструменты. При этом по данным опроса Atlassian «Тенденции DevOps» за 2020 год, часто внедрению DevOps мешает отсутствие навыков у сотрудников.

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

Кто такой инженер DevOps?


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

Инженерам DevOps нужно хорошо разбираться в архитектуре общих систем, выделении ресурсов и администрировании, а также иметь опыт работы с традиционными наборами инструментов для разработчиков и такими методами, как использование системы управления версиями, проведение и получение проверок кода, написание модульных тестов и знание принципов Agile.

Роли и обязанности


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

Логотип: организация работы команды
см. решение

Инструменты DevOps для всей команды

Логотип: книга
Учебный курс

Основы DevOps от Atlassian

Разработка релизов включает задачи, необходимые для создания и развертывания кода приложения. Конкретные инструменты и процессы сильно зависят от множества переменных, таких как язык программирования, степень автоматизации конвейера и тип рабочей инфраструктуры (локальная или облачная). Разработка релизов может потребовать выбора, выделения и обслуживания инструментов CI/CD или создания и поддержки индивидуальных сценариев сборки/развертывания.

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

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

Навыки инженера DevOps


Технические навыки, необходимые инженеру DevOps, зависят от структуры команды, технологий и используемых наборов инструментов. При этом также непременно нужны развитые навыки общения и совместной работы. Кроме того, инженеру DevOps важно хорошо разбираться во всех компонентах конвейера поставки и знать о достоинствах и недостатках доступных инструментов и сервисов.

Общение и совместная работа

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

Системный администратор

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

Опыт работы с инструментами DevOps

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

Управление конфигурацией

Зачастую инженерам DevOps нужен опыт работы с одним или несколькими инструментами управления конфигурацией, например Chef, Puppet или Ansible. Многие организации внедряют эти или аналогичные инструменты для автоматизации задач системного администрирования, таких как развертывание новых систем или применение исправлений безопасности к работающим системам.

Контейнеры и их оркестровка

С помощью технологии контейнеризации, получившей распространение благодаря Docker, код приложения и его среда выполнения объединяются в один образ. Это снижает потребность в традиционных инструментах управления конфигурацией. В то же время управление контейнерами имеет свои сложности, поэтому инженеру DevOps необходим опыт работы с инструментами, известными как «оркестраторы контейнеров» (например, Docker Swarm или Kubernetes).

Непрерывная интеграция и непрерывное развертывание

Непрерывная интеграция и непрерывная поставка (CI/CD) являются основными методами DevOps-подхода к разработке программного обеспечения и поддерживаются множеством доступных инструментов. В любом инструменте или наборе инструментов CI/CD должна быть предусмотрена автоматизация процесса сборки, тестирования и развертывания программного обеспечения.

Для эффективного использования этих инструментов инженерам DevOps обычно нужен опыт настройки и развертывания одного или нескольких инструментов CI/CD, а также тесное сотрудничество с остальными отделами по разработке.

Архитектура системы и выделение ресурсов

Инженер DevOps должен уметь проектировать и выделять компьютерные экосистемы (локальные и облачные), а также управлять ими. Важно понимать явление инфраструктуры как кода (IaC-обработка), процесса управления ИТ, в котором применяются различные рекомендации, от разработки программного обеспечения по методике DevOps и до управления ресурсами облачной инфраструктуры. Инженеру DevOps нужно знать, как моделировать инфраструктуру системы в облаке с помощью Amazon Web Services (AWS), AWS CloudFormation или Terraform.

Знакомство с программированием и написанием сценариев

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

Навыки совместного управления

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

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

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

Команда DevOps: другие роли и обязанности


Евангелист DevOps

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

Менеджер релизов и консультативный комитет по изменениям

У организаций, которые еще не перешли на DevOps или находятся на ранних стадиях этого процесса, может быть отдельная команда, называемая консультативным комитетом по изменениям (CAB), или отдельная роль менеджера по релизам.

Эти роли должны следить за тем, чтобы любое новое прикладное ПО, выпущенное в рабочую среду, соответствовало стандартам качества и безопасности, а также получило нужные подтверждения со стороны руководителей.

Такие роли имели большое значение, когда с релизами программного обеспечения было связано больше рисков. Если же используются такие стратегии, как автоматическое тестирование и темные развертывания, эти роли теряют значимость (или вовсе устаревают).

Эксперт по автоматизации

Каждому инженеру DevOps нужен опыт в области автоматизации. Однако вместе с этим в организациях иногда назначают отдельного эксперта или инженера по автоматизации. Это может быть сотрудник, занимающийся управлением инструментами CI/CD или разработкой и обслуживанием наборов автоматизированных тестов.

разработчик программного обеспечения

В большинстве случаев должность разработчика ПО занимают лица, пишущие код для клиентских или серверных приложений (либо для тех и других сразу). До появления Agile-мышления таких сотрудников называли «компьютерными программистами».

Контроль качества

Команда контроля качества (QA) отвечает за обнаружение сбоев в программном обеспечении. QA-инженеры обычно тестируют новый код приложения вручную, чтобы убедиться, что приложение не завершит работу с ошибкой сразу после запуска («smoke-тестирование»), не нарушит существующий функционал («регрессионное тестирование») и не будет конфликтовать с другими новыми функциями («интеграционное тестирование»).

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

Инженер по безопасности

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

Выход за рамки одной роли


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

Tom Hall
Tom Hall

Том Холл — специалист по DevOps и евангелист этой методики, а также заядлый читатель и пианист-любитель.
В числе его достижений за последние 20 лет — сертификации Novell, EMC, VMware и AWS. Он помог организовать конференцию DevOpsDays в Атланте в 2016 году и в последующих годах — в Остине, штат Техас.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Семинар по моделированию

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up