Devops инженер кто это и чем занимается
Перейти к содержимому

Devops инженер кто это и чем занимается

  • автор:

DevOps-инженер

DevOps-инженер

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

Краткое описание

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

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

Антон Якутович

Антон Якутович
Software Developer in Test (SDET)

Профессия техническая, требующая глубоких знаний в разработке и администрировании.

Кто такой DevOps-инженер и чем занимается

Фото: Shutterstock

DevOps (Development Operations) — это методология взаимодействия разных специалистов, которая помогает сделать программный продукт качественнее. DevOps появился, когда ПО стало сложнее, а продуктов на рынке — больше. Разработчики перестали справляться с повышением продуктивности систем, в которых они работают, поэтому в команды начали привлекать системных администраторов. Эти администраторы стали разбираться с тем, как помочь своей команде работать лучше и качественнее. Быстрее тестировать продукт, «выкатывать» обновления. Так продукты выпускаются быстрее, а ошибок становится меньше. В 2009 году IT-консультант Патрик Дебуа предложил своим подписчикам обсудить «гибкие методы в администрировании систем» под хэштегом #DevOps. Так DevOps стал популярным во всем мире и превратился в методологию и целую культуру взаимодействия между специалистами разного профиля. Если говорить простыми словами, DevOps помогает общаться на одном языке программистам, тестировщикам и специалистам по эксплуатации, а связующее звено между ними — DevOps-инженеры. Это особенно актуально для больших компаний, у которых много программных продуктов. Профессия быстро набирает популярность во всем мире.

Антон Дьяконов, руководитель группы DevOps IT-компании «Рексофт»: «В России прижилось понятие DevOps-инженер. DevOps — это прежде всего культура работы, философия, определенный подход к решению задач. Сотрудников этого направления правильнее называть системными инженерами. Это философия еще и потому, что профессия предполагает сильные софт-скиллы: коммуникативность, менеджмент, вовлеченность в задачи команды, управление временем. А вот технические навыки можно прокачать дополнительно. Приведу пример отношению DevOps-культуры к промахам в работе. Если нештатная ситуация уже произошла, то следует не применять санкции против виновника, а предложить ему подумать, как не допустить повторения ситуации в будущем, что улучшить в процессах и инструментарии. DevOps относится к этой ситуации как к позитивному опыту, из которого нужно сделать выводы».

Что делает DevOps-инженер

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

На сайте hh.ru в московском регионе более 200 тыс. предложений по запросу DevOps, но сразу виден разброс в требованиях и стоимости услуг.  

На сайте hh.ru в московском регионе более 200 тыс. предложений по запросу DevOps, но сразу виден разброс в требованиях и стоимости услуг. (Фото: hh.ru)

  • Джуниор — человек, который неплохо знает какие-то области из зоны ответственности DevOps. Обычно на проекте у него есть ментор, который курирует работу, что-то подсказывает и консультирует в том, где нужно прокачать навыки.
  • Мидл — сотрудник, который работает полностью самостоятельно. По каким-то вопросам он будет обращаться за советами, но ему уже можно поручить менторство над джуниором. В объявлениях о вакансиях на позицию мидл просят наличие опыта работы в проектах от 2 до 3 лет.
  • Синьор — это не просто автономная работа, это сотрудник, который постоянно привносит в работу команды что-то новое. Системно автоматизирует проблемы проектов компании.

Но сказать, кто что должен технически делать сложно. Например, компания «Газпром нефть» в своей вакансии на DevOps-инженера Junior так описывает свои требования:

  • сборка Docker образов,
  • проектирование и техническая реализация DevOps piplines,
  • развитие архитектуры ML сервиса,
  • ведение релиза (в том числе в Jira),
  • написание документации в Confluence,
  • участие в тестировании и приемосдаточных испытаниях релиза,
  • взаимодействие с продуктовыми и инфраструктурными командами,
  • взаимодействие с продуктовыми командами с целью продвижения и внедрения архитектурных решений,
  • архитектурный надзор,
  • экспертная поддержка интегрируемых продуктов.

А Сбер.IT описывает обязанности более расплывчато, причем указывает, что это касается позиций и junior, и middle.

Описание обязанностей DevOps-инженера в «Сбере»

Описание обязанностей DevOps-инженера в «Сбере» (Фото: hh.ru)

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

Антон Дьяконов:

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

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

Требования к DevOps-инженерам

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

В DevOps пригодятся и другие инструменты, но их знание обычно не обязательно в начале работы:

  • инструменты администрирования: Puppet и Chef;
  • Kafka — сервис, который позволяет мгновенно передавать сообщения между разными системами;
  • облачные платформы: Google Cloud, Microsoft Azur;
  • CI/CD: Microsoft GitHub, Atlassian Jira, Confluence, Red Hat Ansible, Prometheus и Jenkins.

Уметь программировать нужно, но не обязательно на уровне сильного разработчика: обычно этому учат еще в вузе на IT-специальностях. Пригодятся знания Python, PHP, Ruby.

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

SberTech ждет от кандидатов на позицию junior умения работать с целым пулом программ (Фото: hh.ru)

А Альфа-банк согласен на глубокое понимание теории

А Альфа-банк согласен на глубокое понимание теории (Фото: hh.ru)

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

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

Как стать DevOps-инженером

Сейчас нельзя закончить вуз и стать системным инженером. Основной путь — получение опыта в команде. В нее можно перейти внутри компании или прийти «с нуля» с IT-бэкграундом. Опыт разработки и системного администрирования, а также умение работать по методологиям agile и pipeline будут плюсом.

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

Вот несколько базовых курсов, с которых можно начать.

  • Курс SkillFactory на полгода — нужно знать Linux и основы программирования.
  • Курс GeekBrains на полгода с гарантией трудоустройства — с нуля.
  • Курс в МГТУ имени Н.Э. Баумана на полгода оффлайн или онлайн — нужно быть IT-специалистом.
  • Курс «Нетологии» на 4 месяца — для начинающих специалистов, уже немного ориентирующихся в администрировании.
  • Школа DevOps — для людей с разным уровнем подготовки. Есть бесплатный курс для тех, кто пришел с нуля.

Какие перспективы у профессии DevOps-инженера

Сфера DevOps развивается очень быстро. Специалисты нужны не только в крупных, но и в средних компаниях, а также в государственных структурах. В 2021 году Экспресс 42, hh.ru и OTUS Онлайн-образование провели исследование динамики резюме и вакансий в сфере DevOps. Ежегодный прирост числа вакансий на hh.ru для специалистов по DevOps — 59%.

Фото:Shutterstock

За неполный 2021 год компании разместили в два раза больше предложений, чем за весь 2019-й. А резюме стало больше всего на 23%. Это значит, что в России спрос на таких специалистов превышает предложение. Отсюда высокие зарплаты и лояльное отношение к кандидатам при трудоустройстве: 55% вакансий рассчитаны на людей с минимальным опытом работы или без опыта вообще.

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

Чем занимается DevOps-инженер в международной IT-компании?

Чем занимается DevOps-инженер в международной IT-компании?

Дмитрий Харламов

Дмитрий Харламов DevOps-инженер в международной компании

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

Освойте профессию
«DevOps-инженер»

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

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

DevOps-инженер
Помогайте компаниям быстрее выпускать качественный продукт
3 290 ₽/мес 5 483 ₽/мес

cables (3)

Символ бесконечности DevOps-инженера

Символ бесконечности — это последовательность этапов, благодаря которой код с компьютера разработчика попадает в продакшн. Для этого специалист должен предусмотреть этапы согласования, проверок, сценарии откатов, простоя и обновлений. Необходимость в DevOps возникает, когда в компании взаимодействует много команд. Сейчас очень популярны микросервисы, и за каждый из них отвечают разные команды, которые находятся в информационном вакууме. Им нужно релизить свой сервис, но они не всегда успевают узнавать, что изменилось у соседей. Читайте также: «Я был сисадмином, а стал DevOps-инженером в международной компании» Проблемы могут возникнуть на этапе интеграционного тестирования, когда нужно проверить, что все сервисы слаженно взаимодействуют друг с другом. Здесь начинается: кто-то говорит, что все работает; кто-то внезапно выясняет новые детали, которые нужно переделать. Когда поджимают сроки, разработчики ищут компромиссы, про которые потом забывают — сервис же работает. Из-за этого появляются костыли, доработки и технический долг. Задача тестировщиков и DevOps-инженеров — отслеживать все эти нюансы и не пропускать в продакшн то, что не доделано.

Чем я занимаюсь

Я настраиваю CI/CD-пайплайны. CI/CD (continuous integration, continuous delivery) — это два основных направления из восьмерки DevOps. С их помощью можно без остановки собирать код и доставлять его до различных стейджей или сред. В CI/CD-пайплайне для непрерывной интеграции кода обычно используют Jenkins (сервер для сборки, тестирования и развертывания ПО) и Git либо GitLab (система управления с Git-репозиториями и сборкой кода).

Continuous Integration

Схема сборки кода

Когда разработчик начинает писать модуль, он забирает из Git-репозитория код или часть кода. В соответствии с задачами он его дописывает, проверяет у себя на компьютере, компилируется ли код, проходит ли локальный набор тестов, и отправляет наработки обратно в репозиторий. После этого CI-система подхватывает изменения, пытается собрать код с помощью компиляторов (компилятор преобразует код, в программу, состоящую из команд для процессора), создает артефакты. Чтобы его запустить, поднимается база данных, на которую настраивается сервис. Базовый функционал проверяется с помощью unit-тестов (проверка каждой функции по отдельности) — с их помощью мы убеждаемся, что код работает и выполняет свои задачи. Потом код сливается в тестовую, релизную или мастер-ветку. С помощью всё той же CI-системы запускается интеграционное тестирование: из разных репозиториев поднимаются разные части кода и пытаются друг с другом работать. Так мы проверяем бизнес-логику, что на выходе получается нужный результат. На этом этапе проверяется также безопасность, проходит нагрузочное тестирование. Только после этого создаются финальные артефакты, которые отправятся на продакшн. Читайте также: «Я был хирургом, потом работал на стройке, а в итоге стал DevOps-инженером»

DevOps-инженер — связующее звено между всеми этапами создания продукта. Станьте незаменимым специалистом
за 6 месяцев.

Continuous Delivery

На этом этапе у нас уже есть готовый, проверенный, работающий набор артефактов, которые нужно доставить до серверов. Если в компании сложная система кластеров, то артефакты нужно разложить по полочкам на нужные серверы, правильно настроить маршрутизацию сети. Для доставки кода также используют Jenkins или GitLab. Для работы с Windows есть и дополнительные сервисы, например Octopus Deploy.

Как устроена работа DevOps-инженера?

Мы работаем по SCRUM — это цикл работы команды. Во время двухнедельного спринта (фиксированное время) между разработчиками распределяются задачи, они оценивают время на их выполнение, а через две недели все подводят итоги, собирают релиз из выполненных задач. После начинается ретроспектива: насколько точно мы попали в поставленные сроки, как хорошо справились, где возникли проблемы. По SCRUM часто работают стартапы, потому что им необходимо выдавать результат как можно чаще. В таких проектах DevOps-инженер один, потому что ресурсов на большую команду зачастую не хватает. Вначале он создает инфраструктуру, настраивает первоначальный Git-репозиторий и CI-систему для сборки кода. Он прорабатывает, как изменения разработчика будут доходить до первоначальных тестирований на серверах. Иногда DevOps-инженера привлекают к решению споров и проработке архитектуры, но это зависит от авторитета специалиста внутри команды. Перед DevOps-инженером также стоят задачи по мониторингу и поддержке сервисов, чтобы они работали и не ломались. Для этого надо обновлять серверы, следить за их безопасностью, предоставлять инструменты для команды. Разработчикам необходима централизованная система логирования приложения, чтобы они не тратили время на ручную сборку логов или метрик для отслеживания растущей нагрузки или проверки узких мест. контроль логовТак как у всех в команде разный уровень знаний, DevOps помогает стандартизировать все подходы. Кто-то из разработчиков умеет писать Docker-файлы (документ с образами, на основе которых создаются контейнеры), кто-то — нет. Кто-то пишет их специфически — значит, его надо поправить, предупредить, что необходим определенный формат логов и нельзя открывать порты, потому что это небезопасно. Сейчас редко встречаются операционные команды — за поддержку отвечают администраторы облачных провайдеров. Например, при работе с Amazon, если происходит проблема с платформой, мы создаем задачу, и администраторы Amazon решают ее у себя. мем про DevOps

Как исследования помогают справиться с рутиной?

ArgoCD — контроллер Kubernetes

DevOps-инженер всегда изучает новые инструменты, которые появляются на рынке. Мы обязательно запускаем пилотные проекты, чтобы понять, как инструмент поведет себя в нашей инфраструктуре. Если он не просто популярный, но еще и полезный и у него нормальная поддержка, тогда мы переходим на него. Бывало, приходилось откатываться даже с классными инструментами. Например, он может быть несовместим с последующими решениями и в процессе эксплуатации все портит: приходится делать двойную конвертацию данных, потому что у нас другой формат или нам дорого. Совет: Если что-то может пойти не так — оно обязательно пойдет. Поэтому лучше всегда иметь план Б и проверять все заранее, симулировать на соседнем стенде, а не на продакшене. Это убережет от репутационных потерь и лишних стрессов. Использование новых инструментов или новых подходов — всегда самая увлекательная часть работы. Рутина никому не интересна, а ежедневные задачи — один из самых быстрых способов выгорания. Даже когда я был лидом, у нас было негласное правило: раз в квартал давать человеку исследовать новую технологию и проверять концепции, это очень мотивирует. Компании тоже должны поощрять специалистов развиваться. В одно время появился Kubernetes, который позиционировался как решение всех проблем. Это инструмент для оркестрации Docker-контейнеров, который позволяет автоматизировать большую часть их жизненного цикла. С ним можно не переживать, что серверы закончатся, нужно докупать железо и ждать, пока его установят. Если усиливается нагрузка, то автоматически закупаются облачные серверы. Как только нагрузка падает, серверы уходят. Компания платит по факту за использование ресурсов. В тот период мне как раз хотелось развития, и я загорелся идеей Kubernetes. Я предложил съездить на интенсив по нему, а компания меня в этом поддержала. После этого я попробовал развернуть ПО на работе: проверил концепцию, кластеры Kubernetes, завел туда часть наших сервисов. Всем понравилось решение, и мы взяли вектор на миграцию. Совет: Не стоит скептически относиться к предложениям. Невозможно знать всё, а у коллеги может быть положительный опыт в сфере, которым он хочет поделиться. Нужно понять его доводы, боли, конструктивно выстроить диалог и через призму его опыта разобрать проблему. Тогда проще найти консенсус. Сами по себе инструменты тоже необходимо обновлять, так как у них есть жизненный цикл. Постоянно появляются новые фичи, старые удаляются, обновляются безопасность, удобство. Например, если долго не обновлять базу данных, в какой-то момент ее больше нельзя будет обновить, если пропустить одну-две версии поэтапного обновления.

Зачем нужен DevOps-инженер?

Идеальный вариант — когда в команде нет DevOps-инженера. Он стремится к автоматизации всех процессов, хотя на самом деле это недостижимо. Поэтому DevOps-инженер делает так, чтобы продукт обновлялся и продолжал жить долгое время без какого-либо вмешательства, даже если специалист уйдет из компании. Тимлидом в этой сфере быть сложнее. Это наполовину менеджерская позиция: надо следить за KPI, эффективностью, доступностью сред разработки, надежностью продакшен-сред. Сейчас у меня нет менеджерских обязанностей, но коммуникация — это 50 процентов работы DevOps-инженера. Нужно искать подходы, компромиссы, мотивировать и уговаривать людей. Иногда нужно бороться с явным саботажем, потому что люди не любят меняться, их нужно убедить принять твои решения, которые пойдут на пользу бизнесу. В начале карьеры это особенно тяжело, потому что тебе не хватает экспертизы или житейского опыта. Приходится воевать с молодыми амбициозными ребятами, спорить, лавировать между командами. Мне доводилось устраивать соревнования: использовать статический анализатор кода, чтобы следить за количеством багов у разных команд. Для этого нужно тонко чувствовать настроения и уметь этично выстроить коммуникацию, чтобы никого не обидеть и не перегнуть палку, возможно, где-то даже перевести соревнование в шутку.

Как стать DevOps-инженером?

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

Что нужно знать?

  • Ядро инструментов для этих задач — это CI/CD-системы, мониторинговые программы, которые позволяют собирать логи или метрики.
  • Базы данных:SQL, NoSQL (MongoDB, Redis, PostgreSQL).
  • Инструменты оркестрации (Ansible, Terraform, Kubernetes, Docker).
  • Знать архитектуру Windows, Linux. Если в компании работают с мобильными приложениями, то еще и устройство Android и iOS.
  • Разбираться в видах тестирования.
  • В идеале DevOps-инженер умеет читать языки, на которых работают в компании. Он разбирается, как работать с выводом логов, или умеет подключать библиотеку в язык.

Чтобы стать мидлом, нужно работать в сфере около двух лет, а синьором — 3–5 лет. Для этого нужно не только выполнять поручения, но и уметь самостоятельно предлагать решения. Синьор понимает, куда развивается компания, ищет задачи и знает, какие из них приоритетнее.

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

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

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 должен продвигать методы этого подхода и обучать им всех сотрудников организации.

9 самых важных навыков инженера DevOps

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

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

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

2. Системное администрирование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Межкомандная совместная работа представляет основу эффективной стратегии 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.

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

Tom Hall

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *