image

Привет, Хабр!

Сегодня предлагаем вам перевод мировоззренческого поста Лиама Виттерика (Liam Witterick) — о заблуждениях в работе DevOps-инженера. Виттерик уже несколько лет помогает внедрять практики DevOps и оценивает, какую выгоду получают компании.

Автор продвигает существенные организационные изменения, внедряя инструменты автоматизации и принципы «бережливого» производства, и помогает эффективно выпускать хорошо масштабируемое ПО с высоким уровнем безопасности и надежности.

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


Если DevOps — это изменение культуры, как с этим может справиться один человек?


DevOps — это не человек и даже не команда. Это набор практик, методология компании в целом.

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

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

Одно из самых больших злоупотреблений этим термином — «DevOps-инженер».

Почему?

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

DevOps-инженер не разрабатывает практики DevOps.

DevOps-инженер помогает их внедрять.


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

Итак, откуда вообще появился термин «DevOps-инженер»?


Трудно точно определить, откуда именно взялось это название, но вот мои соображения.

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

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

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

Их новая задачи включали:

  • коммуникацию между командами разработки и эксплуатации;
  • реализацию коротких циклов обратной связи с помощью CI-конвейеров;
  • подготовку релизов с помощью Continuous Delivery;
  • создание повторяемой и масштабируемой инфраструктуры с помощью Infrastructure as Code;
  • внедрение инструментов мониторинга, логирования и безопасности.

«И швец, и жнец, и на дуде игрец. — подумал бизнес.  — Как же нам нанять таких, да побольше?» И чтобы отличить обычных сисадминов от тех специалистов, которые обладали вышеописанными навыками, компании при содействии HR’ов придумали им новое название — «DevOps-инженер».

Почему DevOps-инженер — это не просто системный администратор?


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

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

Несмотря на то, что в некоторых аспектах роли администраторов и DevOps-инженеров похожи, они не идентичны. Давайте определимся с обязанностями каждого из них.

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

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

Во время работы в командах эксплуатации я имел удовольствие общаться с гуру PowerShell. Некоторые из них могли бы писать энциклопедии по управлению конфигурацией серверов c помощью Chef. Однако делало ли это их DevOps-инженерами?

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

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

Вместо заключения


Надеемся, что мои мысли внесли некоторую ясность относительно роли DevOps-инженера. 

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

.

Комментарии (6)


  1. lxsmkv
    28.04.2022 21:46
    +8

    DevOps — это не человек и даже не команда. Это набор практик, методология компании в целом.

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

    Автор противоречит сам себе. Первое утверждение верно. Все остальное - нет.

    Разработчики "разучились" планировать работу без скрам-мастера. Разработчики "не умеют" тестировать без тестировщиков. Разработчики "не могут" собрать программу и развернуть ее на целевом оборудовании без девопс-инженеров. Откуда этот тренд? Неужели это бизнес так стремится обесценить работу и навыки разработчиков? Уже и программы пишут по двое, один не справляется. Да и место экономится.

    Доколе, доколе мы это терпеть будем? Раньше "инженер по разработке программного обеспечения" значило, что он может все. И вебстраницу и ассемблерную прошивку на микрочип. "Но зачем платить за лишние навыки", подумал бизнес. Даешь тейлоризм. Это как в армейской поговорке "Два солдата из стройбата заменяют экскаватор". Так у нас - "три джунá без универа заменяют инженера". Зато дешевле. Поэтому не надо нам про философию и майндсет. Обойдемся без религии. А то как деньги зарабатывать, то DevOps это роль, а как на конференциях выступать, то тут DevOps - философия, методология и набор практик.

    P.S. прошу простить за тон, накипело малость..


    1. ppl2scripts
      29.04.2022 00:29
      +2

      Думается сама идея "про Философию" мертворожденная. Индустрия растёт и расширяется, появляется море новых средств развертывания, и разработки развертывания.

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

      Соответственно мы приходим к появлению специалиста по языкам и методам развертывания и автоматизации. Того самого DevOps — инженера. И это нормально.


      1. lxsmkv
        29.04.2022 08:24

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

        Какое еще нафиг "не хотят"? Ну освободи место тому, кто будет хотеть. Это будет честно. А ходить и "ой это сложно, это я не умею"..

        Вы понимаете, что выросло поколение фронтенд разработчиков, как их называют, которые кроме своего фреймворка ничего не знают. Они не знают как он устроен изнутри. Они не знают как там устроено юнит-тестирование - необходимости не было.

        Выросло поколение "специалистов по обработке данных" (Data Scientist), которые не знают как создать свой пакет, чтобы можно было установить его через pip. Они возможно никогда не слышали про poetry. A зачем, если есть pip. Все верно, не нужно знать как устроен автомобиль чтобы его иметь и работать таксистом. (Хотя и среди таксистов выросло поколение тех, кто без спутниковой навигации неработоспособен.)

        Ну а какие же это тогда технари если у них нет никакого технического любопытства? И что тогда они делают в нашей профессии? Ладно я, тестировщик-автоматизатор, я даже рекурсию без шпаргалки написать не могу. Но при этом я за свою жизнь успел "полапать" и "обнюхaть" две дюжины языков программирования, и кучу разных инструментов, и продолжаю учиться каждый день. Для чего в частности тут на платформе и тусуюсь. А мне встречались разработчики, которые, простите, даже Джирой пользоваться не умеют. У чувака докторский титул, он спрашивает у работодателя " а нет ли каких нибудь прикладных курсов по Jenkins?" не потому что ему это интересно, а потому что нужда заставила столкнуться на проекте.

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


        1. ppl2scripts
          29.04.2022 14:27
          +1

          Я считаю что появление новых специальностей это естественный процесс.

          Это как до появления книгопечатания — у нас были переписчики книг и переплетчики. А после — так сразу печатники, наборщики, иллюстраторы, агенты авторов и т.д. Чем больше мы что-то знаем (или делаем), тем больше возникает деталей.

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


  1. funca
    29.04.2022 01:59

    Системные администраторы управляли системами. Сетевыми системами, операционными системами, системами управления базами данных и т.д.

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


    1. Axel_Eisvogel
      29.04.2022 11:58
      +2

      Черт, как красиво!

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

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