Junior, Middle, Senior — подходит ли такая иерархия для DevOps?

Junior, Middle, Senior DevOps

DevOps — загадочное направление в IT: везде говорят о его эффективности, а ведущие IТ-компании успешно его внедряют. При этом не все работодатели осознают, чем эти специалисты должны заниматься. В материале разбираемся, как отличаются задачи и требования к специалистам DevOps и насколько актуально разделять их на Junior, Middle и Senior. Также на примере рассмотрим подходы специалистов разного уровня к решению задач.

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

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

Главная задача таких специалистов — сделать разработку ПО максимально предсказуемой, эффективной и безопасной.

Стандартный набор задач DevOps-инженера:

  1. Развёртывание разрабатываемого ПО;
  2. Работа с провайдером публичного облака;
  3. Стандартизация окружения разработки;
  4. Настройка инфраструктуры с учётом особенности разрабатываемого ПО;
  5. Подготовка продуктивной среды к частым внесениям изменений;
  6. Поиск и исправление проблем в размещённых средах;
  7. Автоматизация процессов;
  8. Внедрение процессов CI/CD.

Кто нужен на рынке труда

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

Первое, на что мы обратили внимание — сложность определить, сколько опыта считается оптимальным для специалистов в зависимости от уровня. Особенно чётко это видно, если рассматривать вакансии с опытом от 1 до 3 лет — тут можно увидеть и Junior, и Middle, и Senior позиции.

Также есть и другой момент: во многих вакансиях не указан уровень позиции. Возможно, это разделение просто не актуально для DevOps-инженеров? Давайте проверим.

Задачи Junior специалиста

В основном, в задачах начинающих специалистов выделяют:

  1. Администрирование серверов и их обслуживание; 
  2. Управление конфигурациями — установка и настройка инфраструктуры;
  3. Внедрение и управление CI/CD;
  4. Настройка мониторинга;
  5. Решение проблем с помощью несложных скриптов;
  6. Создание и сопровождение сред на облачных платформах;
  7. Автоматизация процессов;
  8. Обеспечение и соблюдение процедур безопасности, конфиденциальности и защиты данных клиентов.

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

От начинающих специалистов ожидают опыт:

  • администрирования Linux;
  • работы с облачными технологиями (IaaS, PaaS, SaaS) и инфраструктурой как кодом (IaC);
  • внедрения CI/CD; 
  • работы с контейнерными технологиями, например, Docker и Kubernetes;
  • настройки средств автоматизации (Terraform, CloudFormation, Ansible);
  • работы с реляционными и нереляционными базами данных;
  • взаимодействия с Git;
  • написания скриптов или программирования на каком-либо языке на базовом уровне.

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

Задачи Middle DevOps

Задачи специалистов уровня Middle — шире. К ним могут добавиться:

  1. Полная ответственность за инфраструктуру: создание, настройка,   автоматизация, проектирование и внедрение комплексных инфраструктурных решений;
  2. Внедрение, поддержка, улучшение конвейеров CI/CD;
  3. Развёртывание ПО в нескольких операционных средах, установка и настройка сред приложений;
  4. Обучение команды процессам DevOps; 
  5. Устранение проблем в высоко нагруженных системах;
  6. Внедрение практик в вопросах масштабируемости системы;
  7. Анализ незапланированных событий и инцидентов, чтобы определить последующие действия, которые сделают продукт более надёжным.

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

В требованиях меняется количество опыта с технологиями DevOps. Например, вместо года опыта, тут уже нужен специалист с 1,5-3 годами опыта. Добавляются и некоторые новые требования:

  • понимание архитектуры и принципов Cloud Native;
  • знание скриптового языка на хорошем уровне и опыт автоматизации повседневных задач (например, на Python или Bash);
  • администрирование баз данных;
  • знание систем ведения журналов, мониторинга и сбора метрик;
  • опыт разработки конвейеров.

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

Задачи Senior DevOps

В вакансиях этого уровня мы увидим, что задачи включают: 

  1. Не просто умение работать с облачной инфраструктурой, а и умение её создать: проектирование, создание, миграция, контейнеризация, модернизация облака;
  2. Проектирование инфраструктуры приложений, используя архитектуру микросервисов;
  3. Автоматизация операционных процессов;
  4. Повышение безопасности, надёжности, масштабируемости, производительности и качества системы;
  5. Разработку приложений для улучшения мониторинга и работоспособности системы;
  6. Устранение неполадок и решение проблем в нескольких средах.

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

В среднем от кандидатов уровня Senior требуется от 3 лет опыта в DevOps. Кроме этого нужен опыт:

  • масштабирования веб-приложений;
  • работы с системами контроля версий (например, Git);
  • с инструментами ITSM (например, ServiceNow, Cherwell, HPSM, Zendesk);
  • с системами логгирования, мониторинга и сбора метрик (например, Prometheus, Grafana, ELK).

Задачи Senior DevOps-инженера становятся ещё шире: к ним добавляются микросервисы. Опыт специалистов позволяет им решать задачи на совсем другом уровне, так как подход к их решению у них совершенно отличается от менее опытных специалистов.  

Разница в подходе к задачам

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

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

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

Пример: установка операционной системы и промежуточного ПО

Задача: установить ПО для мониторинга на десятках или сотнях серверов.

Как поступит Junior:

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

Что сделает Senior: 

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

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

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

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

Потом воспользуется системой управления исходным кодом и инструментом непрерывной интеграции для тестирования изменений в коде.

Вывод

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

Это демонстрирует разницу между решением задач начинающим и опытным специалистами. Подход к одной и той же задаче меняется, что влияет и на результат. В таком контексте разделение на уровни может быть удобным: в команды, где DevOps ещё не внедрён, важно искать только Middle-Senior или Senior специалистов. В случае Junior специалистов важно, чтобы в команде был опытный DevOps, который сможет подсказать правильное решение задачи. 

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

А как вы считаете, стоит делить специалистов DevOps на Junior, Middle и Senior?

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

Спасибо, что поделились