В последние годы IT-компании стали активно нанимать DevOps-инженеров. Зарплаты таких специалистов одни из самых высоких в отрасли. Старший DevOps-инженер ведущего российского поставщика OSS/BSS-систем ( Operation Support System – система поддержки операций/ Business Support System-система поддержки бизнеса)для телеком-операторов Nexign Алексей Кабарухин, который является одним из топовых российских IT экспертов и стал ведущим специалистом в своей области благодаря упорству в достижении результата и опыту, накопленному за годы работы с крупнейшими проектами национального и международного уровня, рассказал о том, как пройти путь от системного администратора до DevOps-инженера, где и чему учиться и как расти внутри специальности.
Эксперты IT-рынка утверждают, что DevOps-инженеры — одни из самых востребованных специалистов в отрасли (Development Operations engineer-инженер по разработке). Если изучить, чем занимаются DevOps-инженеры, складывается ощущение, что они совмещают несколько профессий — админа, разработчика, тестировщика, менеджера. Чем все-таки занимаются DevOps-инженеры и чем понятие DevOps отличается от DevOps-инженера?
— Сам термин DevOps — это больше про культуру принципов, подходов и средств, которая мотивирует выпускать качественный продукт, сокращать затраты на разработку и позволяет непрерывно развертывать код. DevOps-инженер — это человек, который применяет DevOps инструменты и методологии для поддержки инкрементальной разработки софта. Можно построить DevOps внутри компании и без DevOps-инженеров и даже без Kubernetes (хотя в большинстве случаев используется именно он, либо продукты, в ядре которых он лежит). Однако кому-то придется поддерживать инструменты. В большинстве случаев для этого выделяют отдельного DevOps-специалиста или даже целый отдел.
Как эксперт, расскажите насколько сложно стать DevOps инженером и что для этого нужно?
— Для начала нужно определиться, в какой точке вы сейчас находитесь. Рассмотрим несколько самых распространенных кейсов. Допустим, у вас базовые знания в Computer Science (информатика) и пока нет опыта работы. Вы можете пройти обучение и стажировку в одной из outstaff компаний (аутстафф компаний). Такие компании — это субподрядчики между специалистами и заказчиками. Из-за высокого спроса на DevOps-специалистов outstaff компании активно набирают людей для обучения и дальнейшего трудоустройства. Иногда учеба оплачивается, но рассчитывать на это не стоит. Зарплата, на которую вы можете рассчитывать, закончив обучение, — 20-50 тыс. руб. в месяц. Через год, если продолжите активно развиваться, в среднем, — 90 тыс. руб.
Второй сценарий. У вас есть опыт работы в одной из смежных специализаций, таких как программирование, тестирование ПО либо системное администрирование.
Программисты, которые уже работали по Agile (семейство «гибких» подходов к разработке программного обеспечения, характеризующееся инкрементальными изменениями продукта и тесной работой между группами разработки, тестирования и другими) могут освоить инструменты для поддержки DevOps, а сама методология разработки ПО будет им знакома, так как между Agile и DevOps много общего.
Если мы посмотрим на схемы, то увидим, что левая часть DevOps практически идентична Agile, а правая больше относится к части администрирования систем. Программисты, освоившие инструменты администрирования, «дорастают» до DevOps-инженеров.
Если вы тестировщик ПО и работаете по Agile, то вы находитесь примерно в таком же положении, что и программисты. Вероятно, ваши познания в программировании скромнее, однако, если вы опытный тестировщик, то, скорее всего, можете найти ошибки в коде и можете даже сами их поправить. Чтобы стать DevOps-инженером, вам нужно будет изучить инструменты и утилиты для поддержки DevOps.
Если вы системный администратор, то, скорее всего, у вас уже есть опыт администрирования инструментов DevOps. Если такого опыта нет, приложив определенную долю упорства, вы можете их самостоятельно освоить. Нередки забавные случаи, когда системные администраторы становятся DevOps-инженерами и описывают свои впечатления примерно следующими словами: «Поменял работу, список обязанностей практически не изменился, но зарплата выросла в полтора-два раза». На самом деле, чтобы из системного администратора перейти в DevOps-инженеры, вам придется значительно углубить знания в разработке и в процессах CI/CD, научиться работать с контейнеризацией и отказаться от скриптов на bash (bourne-again shell) в пользу полноценных объектно-ориентированных языков программирования, таких как python или go.
Насколько мне известно, вы стали DevOps инженером, уйдя с должности Senior Database Administrator (старший администратор базы данных). Расскажите подробнее, как так получилось?
— Да, мой случай не является одним из типовых, описанных выше. Я пришел в DevOps-инженеры из Database Administrator (DBA – администратор базы данных). Отмечу, впрочем, что на должности DBA я не занимался исключительно базами данных. В компании «Киберплат» я также отвечал за поддержку «железа» и хранилищ, на которых эти базы данных работали. Это был крупный международный проект, через который проходило более половины всех мобильных платежей в России, в том числе оплата пошлин, штрафов, коммунальных услуг и т.д. Стоит добавить, что проект так же активно использовался в Индии и Казахстане для процессинга оплаты различных услуг. За время работы я получил более глубокие знания системного администрирования и Linux, что очень помогло мне в будущем.
В 2017 году я начал активно интересоваться Kubernetes (система оркестрации контейнеризованных приложений): ходил на митапы и конференции, читал книги по DevOps. В компании «Киберплат», на тот момент, контейнеризация не использовалась, поэтому я купил учебный курс и ваучер на экзамен Certified Kubernetes Administrator от сообщества CNCF (Cloud Native Computing Foundation) и через несколько месяцев успешно сдал свой первый экзамен.
Через несколько месяцев у меня появилась возможность использовать полученные знания на практике. Я поменял работу и в «Райффайзенбанке» стал курировать проект по размещению отказоустойчивых кластеров PostgreSQL в контейнеризованном виде внутри Kubernetes кластера. Параллельно я активно начал сертифицироваться по программе от Red Hat. Сдав в сумме 7 экзаменов по системному администрированию Linux систем (Red Hat Enterprise Linux), системам управления конфигурациями (Ansible) и системам для оркестрации контейнеров (OpenShift), я получил статус Red Hat Certified Architect (RHCA). Этот статус очень ценится и демонстрирует, что кандидат не поверхностно знаком с продуктами, по которым проходил сертификацию, а изучил их углубленно и умеет работать с ними. Сами экзамены являются performance-based экзаменами (performance-based – ориентированный на конкретные результаты): вам предложат не тесты, а практические задания — нужно будет настроить систему так, как описано в заданиях. То есть без практических знаний экзамен сдать не удастся.
В итоге, когда я снова решил поменять работу, я получил более пяти предложений на должность DevOps-инженера. Вопросов к уровню моих знаний у работодателей не возникло.
Сейчас я отвечаю за инструменты для обеспечения CI/CD и занимаюсь развитием большого приватного облака на базе OpenStack в компании Nexign (занимается разработкой OSS/BSS-систем для телеком операторов), которая входит в ТОП-100 крупнейших ИТ-компаний России.
А как вы вообще пришли в IT?
— Все началось еще с подросткового возраста, примерно лет с 12-ти. Мне было интересно разбираться в компьютерах, и я стал эникейщиком (шуточное название специалиста по технической поддержке) для друзей и родственников: помогал переустановить Windows, настроить роутер. Вместе с друзьями я построил локальную сеть в районе, где жил, что заняло у меня около полутора лет. Мне пришлось многому научиться, чтобы выбрать и настроить сетевое оборудование и помочь всем участникам в настройке их ПК. В нашей локальной сети было около двухсот компьютеров. В 2000-х годах высокоскоростной интернет был далеко не у всех, а в нашей локальной сети можно было общаться, играть в игры и получить часть интернет-трафика из общего канала. В старших классах я начал интересоваться программированием. Пока я учился в университете, у меня было несколько стажировок, а к концу обучения я прошел дополнительное профильное обучение в компании DBI, где остался работать.
Возвращаясь к теме DevOps-инженерии. Какие есть уровни и как расти внутри специализации?
— На Junior уровне кандидат должен уметь обращаться с Linux и уметь разворачивать Kubernetes, как минимум, для тестовой среды. Также оцениваются его навыки работы в команде, готовность учиться и, как правило, проверяется способность самостоятельно находить и осваивать информацию. Для этого кандидату может быть дано тестовое задание, которое ему раньше не приходилось делать, чтобы проверить его способность справляться с новыми задачами.
На уровне Middle кандидату необходимо понимать предметную область: уметь не только разворачивать Kubernetes кластеры, но и полноценно их диагностировать при возникновении проблем, а также устанавливать и настраивать инструменты для обеспечения CI/CD. Плюс вы должны уметь читать техническую литературу на английском языке, так как для некоторых продуктов документация есть только на английском и, к тому же, большинство полезных статей написаны на английском.
На Senior уровне (senior-работник, хорошо знающий предметную область), помимо вышесказанного, кандидат уже должен решать и абстрактно поставленные задачи: уметь выбрать инструменты, утилиты и технологии для поставки решения заказчику. Скорее всего, кандидату придется общаться с коллегами со стороны бизнеса, так как DevOps, в первую очередь, должен помогать бизнесу. Поэтому к задачам может добавиться ещё и понимание бюджетирования продуктов. Кандидат также должен глобально понимать процесс организации DevOps внутри компании, помогать его строить и развивать. Часть описанных задач может быть возложена и на Team Lead (руководитель IT-команды) либо решаться совместно с ним.
Чтобы расти внутри своей специализации, нужно много практиковаться, а также проходить сертификацию и читать специальную литературу о том, как правильно и для чего необходимо строить DevOps. Отдельно стоит упомянуть сертификацию. Опираясь на свой опыт и опыт коллег, могу сказать, что подготовка к экзаменам позволяет полноценно изучить продукт, с которым вы работаете. В моей практике были случаи, когда коллеги, используя продукт, не знали о некоторых его возможностях, а я, обсуждая с ними проблему, понимал, как ее решить, потому что изучал это, готовясь к экзаменам. Сертификация также ценится работодателями, она помогает понять опыт и умения кандидата.
Какие у вас профессиональные планы?
— Сейчас я планирую завершить трек экзаменов от Cloud Native Computing Foundation, сдав экзамены CKS (Certified Kubernetes Security Specialist) и CKAD (Certified Kubernetes Application Developer). Затем надеюсь получить, как минимум, два сертификата от Amazon: Solution Architect Associate и Solution Architect Professional. После этого собираюсь вернуться к сертификации от Red Hat. Несмотря на то, что у меня уже есть статус RHCA, для получения которого нужно сдать два базовых экзамена на знание Linux + 5 профильных на знание конкретных технологий, у Red Hat есть возможность повышать уровень статуса RHCA. Сдав восьмой экзамен, я получу RHCA level 2, сдав девятый, RHCA level 3 и т.д. Максимальный уровень, который можно получить, — 25-й уровень RHCA, однако это очень сложно, так как срок действия сданного экзамена составляет три года и Red Hat периодически изымает старые экзамены из программы, добавляя новые. Таким образом, чтобы достигнуть 25-го уровня RHCA, нужно за три года успеть сдать 31 профильный экзамен. Да, это не всем под силу, но к этому однозначно стоит стремиться.