Константин Бузиков: «Я не настоящий сварщик, просто каску на стройке нашёл»
Как системному администратору перейти в DevOps, какие недостатки у этой работы и что происходит на рынке труда. Рассказывает опытный DevOps-инженер.
Иллюстрация: Mego-studio / Freepik / Cuz.gallery / Rawpixel / Annie для Skillbox Media
Константин Бузиков
об эксперте
В Twitter @raven_oscar. Пять лет в DevOps, любит кататься на велосипеде, играть в видеоигры и читать книги.
У меня нет высшего технического образования — только специальное экономическое. После университета я работал в банках: был менеджером и руководил разными проектами. Потом ушёл в техподдержку и попытал счастья в разработке. На последних двух работах я занимал должность ведущего DevOps-инженера в B2B-МФО — организациях, которые не являются банками, но имеют лицензии на финансовые операции.
В DevOps я попал случайно: знакомые предложили заняться IT-инфраструктурой в их компании. Они устроили небольшое собеседование, на котором мы мило пообщались около 15 минут. Я признался, что почти ничего не понял, потому что ни разу не сталкивался с подобными задачами. Но ребята лишь переглянулись и сказали: «Ты же не обезьяна, научишься». И вот я уже пять лет в профессии.
Словарь DevOps-инженера
Приведу несколько ключевых понятий, которые будут встречаться далее и могут быть неизвестны тем, кто не погружён в тему DevOps.
CI/CD (continuous integration / continuous deployment) — сочетание непрерывной интеграции и развёртывания программного обеспечения.
Пайплайн — процесс быстрой сборки, тестирования и развёртывания программного обеспечения.
Законтрактовать (базу данных, облако и так далее) — составить требования к сервису с учётом технических и юридических ограничений, выбрать тот, который соответствует этим требованиям, и заключить с ним договор.
Репозиторий — хранилище кода в GitHub, GitLab и других аналогичных сервисах.
DevOps — это практика
Много копий ломается вокруг того, является DevOps профессией или нет. Я считаю, что DevOps — это не столько профессия, сколько практика, набор инструментов и методов, которые позволяют быстрее доставлять код конечным пользователям.
На текущей работе я поддерживаю всю инфраструктуру и обеспечиваю пайплайн для быстрой доставки и тестирования кода. Есть места, где DevOps-инженеры отвечают лишь за доставку кода, а остальные задачи решают другие специалисты. А ещё я знаю компании, где программисты сами поддерживают всю инфраструктуру.
Однако в целом разработчики хотят писать код, а не заниматься администрированием и прочей фигнёй. Именно поэтому и появились специально обученные люди, которые взяли эти проблемы на себя.
Вообще, DevOps-инженер — это всё тот же сисадмин, который просто больше зарабатывает. Я так же администрирую серверы и часть технического парка, связанную с продуктом, а также настраиваю облака. Но ко всему этому добавляются исконные обязанности DevOps-инженеров по настройке пайплайна.
Из чего состоит работа DevOps-инженера
Когда я только устроился DevOps-инженером, у нас в компании была команда из десяти разработчиков. Но инфраструктуры для них не было. Первое, что я сделал, — развернул нужную инфраструктуру и настроил CI/CD, выбрал и законтрактовал облако, нарезал разработчикам репозитории. И только после этого команда начала работать.
Потом я поддерживал всю эту инфраструктуру. Следил, чтобы код собирался так, как хотят программисты, и обеспечивал инструменты, которые позволяли им работать быстрее и удобнее.
Затем я переключился на пользовательский контур: развернул сервер и настроил его так, чтобы сервис не падал в случае проблем в дата-центре. Обычно такие задачи решает SRE-инженер, но на текущем рабочем месте этим тоже занимаюсь я. Есть и локальные задачи: например, настроить мониторинг для сервиса или базу данных, поправить пайплайн сборки.
Минусы работы в DevOps
Направление DevOps стало востребованным — на одном только hh.ru почти 2500 вакансий. Но даже у такой модной должности есть свои недостатки. Перечислю некоторые из них.
Работа в режиме нон-стоп. Многие заглядываются на зарплаты DevOps-инженеров, но забывают об одном жирном минусе — нам приходится пахать 24/7. Мне задают вопросы в рабочем чате уже в три утра, и я, как правило, отвечаю на них не позже четырёх.
Можно надеяться только на себя. Если у DevOps-инженера возникли вопросы, то дело плохо: как правило, готового ответа на них нигде нет. Вы оказываетесь с проблемой один на один, и никто не сможет вам помочь — только интернет. В такой ситуации довольно сложно расслабиться: приходится думать о решении целыми днями, пока не родится гениальная идея. А вот с командой есть надежда на коллективный разум.
Обучение никогда не заканчивается. В DevOps нет минимума, после изучения которого можно считать себя совершенным специалистом. Наоборот, вы сидите за книгами и мануалами неделю за неделей, изучаете новые технологии и ищете решения для совершенно разных задач.
Как сисадмину перейти в DevOps
Спрос на DevOps-инженеров высокий. В индустрию пришло много новых разработчиков, а инфраструктура для доставки и тестирования кода стала сложнее. Поэтому часто в небольшой или средней компании задачи по DevOps закрывает системный администратор.
Опытному сисадмину не нужно специальное образование, чтобы перейти в DevOps. Например, у меня первое образование — экономическое, а второе — по экономической безопасности. Ни одно из них мне не пригодилось, куда важнее — практические навыки в работе с технологиями.
DevOps-инженер должен уметь работать с программистами и писать код. Например, в «Тинькофф Банке» и «Яндексе» от таких специалистов требуют знания языков программирования.
Чтобы быстро найти работу, нужно освоить базовый набор тулов:
- Linux — нужно понимать, как ведёт себя линуксовая операционная система, как её настраивать и дебажить.
- Kubernetes, GitLab — это минимум, с которым трудоустраиваются DevOps-инженеры.
- Infrastructure as code — подход к автоматизации инфраструктуры с помощью инструментов разработки.
- Любой инструмент CI/CD — нужно хотя бы понимать принципы работы.
Также DevOps часто пользуется разнообразными инструментами для автоматизации:
- Terraform позволяет управлять инфраструктурой с помощью кода.
- Ansible помогает управлять конфигурациями. Эта система работает и на Linux, и на Windows.
- Docker упаковывает приложения в контейнеры со всеми зависимостями.
- Nomad позволяет развёртывать приложения в локальных и облачных средах.
- Облачные сервисы вроде AWS нужны для удалённого доступа к данным и приложениям.
- Также я взаимодействую с базами данных и использую весь инструментарий разработчиков.
Современная инфраструктура, по сути, представляет собой код. Программисты пишут свой, а я — свой. Именно для этого нужны Terraform, Ansible или их аналоги вроде SaltStack.
Эти технологии можно изучить самостоятельно — документации хватает. Например, сейчас я делаю тестовое задание — с половиной нужного стека я раньше вообще не работал. Но зато знаю: если освоить инструменты на базовом уровне, то задача решится в несколько шагов.
На рынке — Дикий Запад и кадровый голод
Сколько в среднем платят DevOps-инженерам? Всё очень индивидуально: например, я знаю ребят с десятилетним опытом, которым платили по 150–180 тысяч рублей, и джунов, которые устраивались за 280–300 тысяч рублей. А ещё сеньоров, которые получают 350 тысяч, и даже тех, кому платят 700 тысяч. Но пока это лишь редкие исключения.
Но на рынке точно не хватает специалистов. Поэтому опытный DevOps-инженер найдёт работу примерно за неделю — даже если особо не станет прикладывать усилий. Есть компании, которые буквально пылесосят рынок и скупают всех разработчиков и DevOps-инженеров.
Речь идёт о большом синеньком банке, большом зелёненьком банке и ещё одном большом синеньком банке. У них много денег и модные амбициозные цели — например, построить собственную экосистему. Они довольно хорошо почистили рынок, но им всё равно не хватает кадров. Ведь чем больше вы набираете разработчиков, тем больше DevOps-инженеров вам понадобится.
И напоследок: мы работаем не только с машинами, но и с людьми. А раз у них постоянно возникают новые идеи, значит, потребность в новых технологиях растёт. К тому же команды нужно регулярно масштабировать. На рынке сейчас Дикий Запад и кадровый голод — причём не только в России, но и во всём мире. Опытные инженеры уходят с российского рынка и, кажется, не собираются сюда возвращаться.
При этом на рынке джунов в DevOps, как и в других сферах, — бойня. У джунов одна задача: всеми правдами и неправдами найти первую работу. Для этого достаточно изучить техническую документацию, сделать вид, что вы всё знаете, и попытаться обдурить первого работодателя. Это нормально — иначе откуда возьмутся новые джуны. Но лучше не ограничиваться чтением и попрактиковаться. Например, можно развернуть небольшой кластер под свои задачи. Многие так делают — и это работает.