Привет, Хабр! DevOps-инженеры нужны везде, но чаще всего их пока ищут крупные компании. Мы поговорили с Павлом Селивановым — сейчас он архитектор Yandex Cloud, а в прошлом долго и много работал в качестве DevOps-инженера. Павел ответил на вопросы о том, где и как ищут DevOps-инженеров, что с них спрашивают на собеседовании и чего ждать от работы непосредственно в крупной компании.
Где крупные компании обычно ищут себе DevOps-инженеров?
В IT огромный голод на специалистов, и сфера DevOps — не исключение. DevOps-инженерами называют всех, кто имеет хоть какое-то отношение к DevOps-платформам, сопровождают разработку, работают с Kubernetes, настраивают мониторинги. Иногда их не называют девопсами напрямую, но по списку обязанностей сразу становится понятно.
У DevOps-инженера должен быть очень большой объем знаний, поэтому специалиста в этой сфере найти даже сложнее, чем разработчика. Правда, в штате таких людей обычно нужно меньше, но эйчары всё равно сражаются за каждого девопса.
Лично мне в день на почту падает минимум три предложения о работе. Я их просто игнорирую, и на LinkedIn наверное уже тысяча неотвеченных сообщений накопилась.
Чтобы вас находили, надо просто хоть где-то присутствовать публично — завести аккаунт на LinkedIn, резюме на hh, на личной странице в соцсетях написать, что вы DevOps. Обычно этого уже достаточно, чтобы получать предложения, причем даже начинающим специалистам.
Как проходит собеседование на должность девопса?
Под DevOps-инженером понимают сильно разное: от продвинутого эникейщика, который и принтеры починит, и контейнеры настроит, до специфического специалиста по SRE или чему-то такому. Поэтому собеседование сильно будет зависеть от вакансии.
Скорее всего вас будут спрашивать про:
Linux;
контейнеры, Docker, Kubernetes;
глубокие познания в Git;
CI/CD-системы: GitLab, Jenkins и другие;
облачные технологии;
программирование — если этого у вас не спрашивают, значит, не девопса здесь ищут.
софт скилы — общая логика, умение договариваться, навыки общения.
На техническом собеседовании вас, скорее всего, попросят попрограммировать. Причем не написать какой-нибудь микросервис, а скорее показать знания алгоритмов, с языком программирования на выбор.
Стоит также ждать тестирования на знание архитектурных подходов. Как всё работает с БД, что такое SOLID, CAP-теорема, Gateway API и т.п.
Скорее всего, будут вопросы про устройство Linux, особенно в связке с Docker и Kubernetes: про неймспейсы или оверлейные сети. Но могут быть и абстрактные вопросы про что-то вроде Inode, что на практике девопсу совсем не нужно.
У меня был интересный опыт собеседования — дали скомпилированный бинарник без исходников и попросили запустить и понять, что с ним не так. Это как раз то, с чем SRE-инженеры и DevOps-инженеры сталкиваются регулярно в рабочей практике.
А когда я собеседовал DevOps-инженеров, я их просил: «Давайте представим, что есть код, который разработчик положил в Git-репозиторий. Нам его нужно доставить на production — давайте себе представим идеальный пайплайн». К такому вопросу стоит быть готовым.
Насколько важно высшее образование и сертификаты?
Вообще не важно. У меня при приёме на работу ни разу не спросили ни диплом, ни сертификат. Сертификаты у меня на LinkedIn красиво заполняют место в профиле, вот и всё. Высшее образование до сих пор спрашивают в государственных компаниях, но это скорее не довод в пользу вузов, а упрек в сторону госкомпаний.
На какую зарплату стоит рассчитывать?
Рынок очень разнородный. Где-то ищут DevOps-инженера, а по факту сисадмина, за 35 000 ₽ в месяц, хотя для крупных компаний такое нехарактерно. А где-то Senior DevOps-инженерам предлагают 500 000 ₽ и выше. Так что вакансии надо смотреть и сравнивать.
Ну и, конечно, в вакансиях крупных компаний есть всяческие бонусы: ДМС, спортзалы, питание, обучение и прочее.
Как «иерархия» есть в DevOps?
В принципе здесь всё так же, как в остальном IT и касается скорее софт, чем хард скилов:
Junior — человек, которому нужно поставить задачу, проконтролировать ее выполнение и где-то помочь.
Middle — человек, которому ставишь задачу, и он самостоятельно её выполняет. Плюс какие-то дела себе находит и ставит самостоятельно.
Senior — человек, который берёт проект, разбирает его на задачи и выполняет сам от начала до конца.
Principal или техлид — архитектор, который планирует несколько проектов, связывает между собой и раздаёт задачи.
Вот такая «табель о рангах», вполне стандартная и понятная любому, кто работает в IT.
Насколько много DevOps программирует? Какие стоит знать языки, сильно ли в них углубляться?
Когда я трудился на позиции DevOps-инженера, большая часть работы у меня заключалась именно в программировании. Я писал либо код, либо YAML-файлы, либо код, который за меня собирал YAML-файлы.
Язык не принципиален. Если это конечно не PHP или не Perl =) Самые популярные и удобные варианты — это Python и Go.
Какая в среднем нагрузка приходится на DevOps-инженера?
Я считаю, что DevOps-ы не должны заниматься «тупой» и одинаковой работой. То есть если они берут проекты разработчиков, пишут Docker-файлы, складывают всё в CI/CD и пишут манифесты Kubernetes, то никакой автоматизации тут нет, и они просто разгружают от этих действий разработчиков. Куда лучше, если они сделают какие-то шаблоны, которые позволят разработчикам быстро и автоматически генерить Docker-файлы и запускать конвейеры.
Например, в GitLab есть возможность Include, которая позволяет написать общие библиотечные шаги. И потом сказать разработчикам: «Берите GitLab CI-файл, делайте include нашего Docker Build, вставляйте две переменные — и все само соберётся и подключится». И не придётся каждый раз по запросу разработчиков идти и что-то делать руками. То же самое с другими инструментами, например, с Kubernetes.
Поэтому я в качестве идеальной нагрузки вижу сначала долгое написание чего-то нового, а потом поддержку старого и его обновление. Причём дорабатывать что-то придётся постоянно, потому что как только мы поверх Kubernetes натянем свой шаблонизатор, что-то нужно будет постоянно допиливать.
Нужен ли девпосу Istio?
В целом нет, может быть только для определённых задач. Заранее его осваивать не стоит, но если понадобится — можно будет разобраться.
Как стать DevOps-инженером
Мы в Слёрме сейчас запустили курс DevOps Upgrade. На нём мы рассказываем про все инструменты, нужные DevOps-инженеру для работы, и, конечно, учим ими пользоваться. Плюс обсуждаем софт скилы и смотрим, как сменить IT-профессию вроде разработчика или сисадмина на DevOps-инженера. Курс помогает расширить стек технологий, систематизировать знания и составить более общую картину DevOps-а в целом. Так что если интересуетесь этой темой, приходите к нам учиться.