В 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, давайте посмотрим, с какими технологиями и ПО придется иметь дело для работы с ним:
-
Есть приложение, которое готово работать в контейнере. Для начала требуется написать хороший оптимизированный Dockerfile и собрать Docker—образ.
-
Его нужно отправить в хранилище (registry), и вы должны поддерживать его работу.
-
Собирать образ каждый раз вручную вы вряд ли захотите, на помощь приходят инструменты для автоматической сборки, такие как Jenkins, Gitlab CI, Bamboo.
-
Вам нужно настроить конвейер, связать его с репозиторием, где хранится код, и описать процесс сборки образа и отправки в хранилище.
-
Отдельный шаг настройки — развёртывание контейнера в требуемом окружении.
-
Нужно проверить статус развёртывания и работы приложения, уведомить об этом команду удобным способом, например, в 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.
Комментариев нет:
Отправить комментарий