Pull to refresh
246.39
Rating
Домклик
Место силы

В поисках идеального DevOps. Кого сейчас ищут на рынке IT?

Домклик corporate blog System administration **nix *DevOps *
Инспектор DevOps
Инспектор DevOps

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

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

  • Гуглеры: инженеры, которые любые задачи готовы решать с помощью поисковой строки. Это достаточно амбициозные люди, которые думают, что могут решать крупные задачи без фундаментальных знаний в своей области. На собеседованиях я люблю задавать базовые вопросы, основанные на стеках технологий, которые кандидат сам указал у себя в резюме. Например, если человек работал с контейнерами, то я могу спросить, как устроена изоляция в контейнерах? Или если администрировал Linux, то что такое LA?

  • Операторы систем: в резюме этих людей обычно видишь множество освоенных технологий и думаешь: «Джек пот! Ну, наконец-то я нашёл». В беседе задаешь вопросы об этих стеках, а в ответ слышишь: «Это поднимали до меня. С этим работала другая команда». Я понимаю, что таким образом кандидат повышает конверсию по приглашениям на собеседования, но иногда получается, что общих тем для общения не остается.

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

  • Фулстек-админ: системный администратор, который имеет богатый опыт работы в различных направлениях, связанных с инфраструктурой. Обычно такие люди стремятся погружаться в новые технологии, использовать практики DevOps в своей работе. В большинстве случаев у фулстек-админа не сильно богатый опыт в Kubernetes. Его привлекает широкий профиль и новые возможности научиться чему-то новому.

IT-компании выбирают человека под свои задачи. Кому-то нужен DevOps в команду разработки, кому-то — для автоматизации процессов OPS, а кому-то нужен человек—швейцарский нож, который будет и за инфраструктурой следить, и код писать. Можно было бы на этом заканчивать: конечно же, всем нужен такой герой, только вот он сам на это не подпишется, а если и подпишется, то быстро выгорит.

Лично для себя я выделяю тип фулстек-админов, у которых, возможно, местами есть пробелы в новых модных DevOps—инструментах и технологиях, но зато они хорошо знают базу:

  • Linux;

  • сеть;

  • скриптовые языки bash/Python;

  • балансировщики, веб-прокси;

  • виртуализацию, контейнеризацию.

Понятное дело, что помимо hard skills (профессиональные умения) немаловажным фактором являются и soft skills (личные качества):

  • умение работать в команде;

  • коммуникабельность;

  • творческий подход;

  • пунктуальность.

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

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

Linux

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

Сеть и безопасность

Казалось бы, при чем тут DevOps, вот вам выделенная команда сетевиков и кибербезопасности. Но я говорю не о настройках роутеров, коммутаторов или NGFW, а о знании протоколов (стек TCP/IP, UDP, HTTP/HTTPS) и маршрутизации, о понимании, как сконфигурировать и защитить приложение от возможных атак (порты, права доступа). На практике это может вам помочь при исследовании, в какой точке при межсервисном взаимодействии теряется трафик и почему.

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

Контейнеры и оркестрация

Сложно представить, что кто-то еще не трогал Docker даже на уровне пользователя, но от кандидата ожидают знания на уровне администратора. Обычно мы задаем заезженный вопрос: «Чем отличается контейнеризация от виртуализации?» Важно, чтобы кандидат понимал, для каких задач подходит та или иная технология. В эпоху микросервисной архитектуры вряд ли остались крупные компании, которые не облегчают себе жизнь с помощью таких инструментов, как Kubernetes или Openshift.

На мой взгляд, можно сравнить график популярности продукта со спросом на инженера, который практикует работу с ним. Инструмент вроде Kubernetes имеет множество подводных камней. Чтобы его администрировать, нужно понимать, как он устроен — так называемый control plane, — как связаны компоненты между собой и как они управляют контейнерами.

CI/CD

CI/CD необходим для всех масштабных проектов, ведь делать что-то вручную медленнее, а также неудобно справляться с повседневными задачами. Выше шла речь о знании Docker, давайте посмотрим, с какими технологиями и ПО придется иметь дело для работы с ним:

  1. Есть приложение, которое готово работать в контейнере. Для начала требуется написать хороший оптимизированный Dockerfile и собрать Docker—образ.

  2. Его нужно отправить в хранилище (registry), и вы должны поддерживать его работу.

  3. Собирать образ каждый раз вручную вы вряд ли захотите, на помощь приходят инструменты для автоматической сборки, такие как Jenkins, Gitlab CI, Bamboo.

  4. Вам нужно настроить конвейер, связать его с репозиторием, где хранится код, и описать процесс сборки образа и отправки в хранилище.

  5. Отдельный шаг настройки — развёртывание контейнера в требуемом окружении.

  6. Нужно проверить статус развёртывания и работы приложения, уведомить об этом команду удобным способом, например, в Slack или Telegram.

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

Мониторинг

В каких-то компаниях есть выделенная команда мониторинга (дежурная смена + развитие), в каких-то функции по мониторингу распределяются по всей команде. Тем не менее, от нового сотрудника будут ждать опыта в настройке и поддержке мониторинга различных систем: от Kubernetes до кастомных метрик для аналитики с Jenkins. На сегодняшний день востребованы специалисты со знанием таких инструментов, как Zabbix и Prometheus. Ну и, само собой, потребуется настройка визуализации в Grafana. Также я порекомендовал бы изучить инструменты Application Performance Monitoring (APM), например, Elastic APM.

Инфраструктура как код

Этот подход существует уже более 5 лет и стал неотъемлемым признаком настоящего профессионала. Как DevOps—инженер вы должны знать один из инструментов IaC, чтобы сделать свою работу более эффективной. Заодно снижается порог вхождения в чужую инфраструктуру, построенную на этом подходе, что, несомненно, будет вам плюсом. Современный мастхев должен состоять из следующих инструментов управления конфигурацией (на выбор):

  • Ansible;

  • Chef;

  • Puppet;

  • Salt.

Отдельно хотелось бы отметить Terraform как отдельный вид искусства. Если в компании есть облачная инфраструктура, то кандидат со знанием продукта от Hashicorp станет, несомненно, полезен и достаточно быстро сможет выполнять задачи как по новым проектам, так и по поддержке старых.

Заключение

«Идеальные люди обладают единственным недостатком — они не существуют».

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

Tags:
Hubs:
Total votes 30: ↑28 and ↓2 +26
Views 17K
Comments Comments 41

Information

Founded
Location
Россия
Website
domclick.ru
Employees
501–1,000 employees
Registered
Representative
Сафия