Легко ли перейти из сисадминов/разработчиков в DevOps?

0
200
views

Развитие сферы IT делает некоторые профессии неактуальными, и пальма первенства переходит к более востребованным на рынке. Направление DevOps – одно из таких. Сайт proglib.io расспросил разработчицу и сисадмина о том, почему и как они перешли в DevOps.

Photo by Austin Chan on Unsplash

Инженер DevOps и разработчик/сисадмин: в чем разница?

С появлением методологии DevOps, многие традиционные роли в IT трансформируются именно в этом направлении. Наиболее распространенным является переход с позиции системного администратора или разработчика на позицию DevOps-инженера.

Чаще всего сравнивают именно профессии системного администратора и специалиста по DevOps. Эти роли разделяют ряд общих задач, но существуют и фундаментальные различия между ними.

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

DevOps – концепция создания программного обеспечения, которая устраняет разрыв между разработчиками и ИТ-командами. С помощью DevOps организации могут создавать, тестировать и выпускать более качественные продукты в короткие сроки.

Системные администраторы не участвуют в процессе разработки программного обеспечения. DevOps-инженеры играют более активную роль. Они сосредоточены на работе над всем жизненным циклом продукта, а системные администраторы участвуют только на стадии его эксплуатации.

Обычно в обязанности системного администратора входит следующее:

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

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

  • настройка облачных виртуальных машин и сервисов;
  • навыки программирования и написания сценариев;
  • понимание непрерывной интеграции (CI);
  • понимание безопасных и эффективных стратегий развертывания ПО;
  • навыки управления конфигурациями;
  • знание методов контейнеризации приложений;
  • практический опыт работы с платформами IaaS, вроде AWS и Microsoft Azure;
  • навыки коммуникации и другие soft skills.

Рассматривая разницу между DevOps-инженером и разработчиком, важно отметить, что последний сосредоточен на соответствии программного продукта потребностям клиента. Спектр обязанностей DevOps-инженера гораздо шире и включает разработку и развертывание программного обеспечения, а также обеспечение оперативной поддержки заказчиков.

В обязанности разработчика входит:

  • повышение производительности программного обеспечения и устранение ошибок на основе отзывов клиентов;
  • оценка потребностей клиентов в безопасности;
  • документирование разработки и производительности программного обеспечения для справки во время обновлений;
  • координирование установки программного обеспечения в компьютерную систему клиента.

Разработчики создают программное обеспечение, отслеживают обратную связь от заказчика и определяют, необходимы ли обновления или более серьезные улучшения.

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

Опыт специалистов

Сайт proglib.io пообщался с профессионалами, которые сначала связали свою карьеру с разработкой и системным администрированием, но со временем перешли в DevOps.

Глафира Иванова, DevOps Engineer компании MedIndex

О начале карьеры

В сфере IT я работаю больше пяти лет. По образованию социолог (закончила факультет социологии СПбГУ). К концу обучения я поняла, что к социологии у меня душа не лежит, а выпускники, которые не идут в науку, обычно работают в кадрах или в рекламе. Я попробовала работать в обоих направлениях, но быстро поняла, что это совсем не мое.

В то время бросать все и входить в IT еще не было такой популярной идеей, но онлайн-курсы по обучению чему угодно были уже весьма популярны. Я вспомнила, что уже проходила простенькие курсы по верстке (просто из любопытства) и мне понравилось. В связи с этим нашла первый попавшийся курс по программированию посерьезнее и села учиться.

Справедливости ради стоит отметить, что спустя полгода обучения, потратив много часов и нервов, я все еще практически ничего не знала. Но мне повезло вскоре устроиться на работу джуном-питонистом. Было сложно и страшно, условия были отвратительными, а работа бесперспективной и выматывающей.

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

Мне всегда было некомфортно, если я не понимала, что и зачем я делаю. В какой-то момент все мои коллеги-бэкендеры уволились и я стремительно выгорела, поэтому решила поискать другую работу.

Учитывая, что опыт в программировании у меня был к тому моменту не слишком положительный, я подумывала о том, чтобы слегка сменить сферу деятельности (что довольно нетрудно в IT, особенно вначале).

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

На деле все опять оказалось не так уж радужно, но я многому научилась, а заодно узнала о существовании инженеров DevOps. Это звучало как отличная перспектива для профессионального роста, поэтому я начала потихоньку поглядывать на вакансии и читать про указанные в них технологии.

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

Об обязанностях специалиста DevOps

DevOps-инженеры в реалиях нашей страны выполняют очень разные обязанности (зависит от компании). Не знаю, хорошо это или плохо, но каждый может выбрать работу по душе. Моя задача – чтобы с продуктом могли работать конечные пользователи, и я прилагаю все усилия, чтобы этот процесс был максимально простым и удобным для всех участников.

Это включает множество различных задач:

  • настройку CI/CD;
  • сопровождение продуктов;
  • поддержку инфраструктуры;
  • мониторинг;
  • траблшутинг (устранение неполадок);
  • усилия по автоматизации и улучшению процессов.

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

О навыках

Новичку в DevOps важно понимать, что придется очень много взаимодействовать с людьми, ведь смысл методологии DevOps именно в этом. Нужно уметь договариваться.

Кроме того, очень пригодится умение сохранять хладнокровие в критических ситуациях (хотя оно приходит с опытом), системное мышление (для проектирования и траблшутинга). Иногда вам придется работать в условиях, когда все сломано и ничего не понятно, поэтому любопытство, пытливый ум и терпение тоже будут кстати.

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

Важно уметь подмечать проблемные места, которые можно улучшить: какие процессы можно автоматизировать, какие оптимизировать, а какие и вовсе упразднить. Очень полезно уметь читать логи и правильно формулировать вопросы в Google и для коллег.

О необходимом для специалиста стеке технологий

Советую изучать:

  • ОС Linux;
  • какой-нибудь из скриптовых языков (Python, например, но наверняка придется писать и на Bash);
  • Docker;
  • Kubernetes;
  • Ansible;
  • Prometheus;
  • ELK-стек;
  • инструменты для CI/CD (Jenkins/GitLab CI);
  • полезно попробовать работать с публичными облаками (например, с AWS).
О проблемах, которые могут возникнуть в начале карьеры

Чем меньше опыта, тем сложнее разбираться с незнакомыми технологиями. Когда одну незнакомую концепцию объясняют с помощью других, легко отчаяться, но все большие и сложные вещи можно разобрать на маленькие и простые.

Стоит начать с самого малого и потихоньку разбираться с новыми понятия. Не нужно бояться задавать глупые вопросы более опытным коллегам. Обычно людям не составляет труда кратко и доходчиво объяснить то, в чем они хорошо разбираются – это помогает сэкономить время и избежать ошибок.

Мне кажется, неопытные инженеры чаще совершают ошибки по невнимательности. Например, мой коллега однажды перепутал имя базы и вместо того, чтобы создать новую, сломал старую. А в другой раз скопировал не ту команду и вместо бекапа удалил важные данные. Важно сохранять спокойствие, быстро найти того, кто компетентен решить проблему и объяснить ему, что произошло. И вынести из происшествия уроки на будущее, конечно же.

Как влиться в новую команду?

Я думаю, команда DevOps принципиально не отличается от любой другой. Важно, чтобы человек не боялся задавать вопросы, но старался все же проявлять самостоятельность. Очень помогут подготовленные заранее инструкции по решению типовых задач и документация о процессах и инструментах.

Дмитрий Евстюхин, Senior Cloud Solutions Architect компании Provectus

О начале карьеры

В IT я попал еще классе в пятом, то есть лет 20 назад. Посещал кружок веб-дизайна, а потом программирования. Когда дома появился компьютер, его сразу же захотелось разобрать, усовершенствовать и собрать, чем я постоянно и занимался. Учиться после школы тоже пошел по этому направлению и в целом свой путь нашел достаточно рано.

В первые годы карьеры я не знал о DevOps. Работал системным администратором, позже стал старшим сисадмином, но все остальные направления были для меня загадкой.

В какой-то момент я уволился с должности старшего сисадмина и занялся поисками новой работы. Мне сделали два предложения одновременно – начальником отдела в сфере ритейла и рядового инженера в маленькой геймдев-компании. Именно во втором предложении промелькнуло это самое слово DevOps.

Я все еще до конца не понимал что это такое, но было интересно. Поэтому стал участвовать в разработке игр и развиваться в направлении DevOps. А развиваться там было куда: между ритейловым сисадмином и DevOps-инженером просто гигантская пропасть технологий.

Об обязанностях специалиста DevOps

Роль DevOps-инженера очень разнится от компании к компании. Есть определенные схожие функции, например, настройка и поддержка CI/CD пайплайнов. Часто к этой роли относят и инфраструктурные вопросы, особенно в облаках.

Мне также приходилось проектировать и настраивать инфраструктуру со всеми нужными сервисами: мониторингом, логированием и так далее. Помогал командам разработки настроить их процесс, щедро сдобрив его автоматизацией и петлями обратной связи.

Иногда нужно было помочь разработчикам лучше использовать возможности среды, объяснить, как правильно жить в облаке или Kubernetes.

Считаю, что DevOps – это мастер на все руки, поэтому хотя бы раз я делал в команде все сразу.

О навыках

Когда человек решает стать DevOps, в первую очередь он должен понимать что это такое.

К примеру, DevOps – это не должность, а методология. Важно понимать все принципы, на которых эта методология строится и все ценности, которые она пропагандирует. Среди последних – коммуникация, ее можно выделить как один из важнейших навыков для хорошего DevOps-инженера.

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

Из hard skills я бы выделил скрипты и арсенал поверхностного понимания технологий. К примеру, сертификация уровня Associate любого облака дает такой арсенал. Чем шире арсенал, тем лучше, но это не имеет большого смысла, если нет фундамента.

В роли фундамента для хорошего специалиста DevOps обычно выступает глубокая экспертиза в администрировании Unix-like систем и сетевое администрирование.

О необходимом для специалиста стеке технологий

В первую очередь новичку в DevOps нужно закладывать фундамент, то есть осваивать операционные системы и сетевые технологии. Если есть достаточное понимание вышеперечисленного, стоит изучить скрипты на Bash/Python. Потом перейти к Ansible, Terraform, Jenkins, Kubernetes.

О проблемах, которые могут возникнуть в начале карьеры

Мне вспоминается ощущение ошеломления, когда я впервые увидел список технологий, которые мне нужно было изучить на своей первой работе DevOps-инженером. Из всего списка я слышал только об одной или двух, остальные были загадкой.

Сначала этот океан технологий выглядит просто непокоримым, но со временем начинаешь понимать – везде примерно одно и то же, только с разными «бантиками». Жизнь становится проще, но это не умаляет объем технологий, которые надо изучить на начальном этапе.

Другой момент, который меня удивил – это токсичные коммьюнити. Не так задав вопрос, очень легко нарваться на весьма грубые, обидные или язвительные комментарии в IT-сообществах в сети.

Однако сейчас тренд идет на смягчение токсичности, и зачастую новичку помогают и разжевывают интересующие его вопросы.

Как влиться в новую команду?

Команда команде рознь. Самый главный метод адаптации – найти ментора, который поможет, покажет и научит. Хотя обычная ситуация, когда DevOps команды «в огне»: людей не хватает, задач много, все горит и никто ничего не успевает… В этом случае нет времени на новичка, и ему требуются недюжинные навыки самоорганизации, настойчивость, чтобы получить всю нужную информацию и стать полезным.

Выводы

В итоге именно вы решаете в каком направлении двигаться – стать системным администратором, разработчиком или перейти в DevOps. Как и во многих смежных направлениях, эти роли частично пересекаются. Системные администраторы уже имеют опыт написания сценариев и могут быть знакомы с технологиями автоматизации развертывания приложений, управления конфигурациями и так далее. Многие разработчики имеют представление о системном администрировании, так что изучать неофиту придется не половину (Dev или Ops), а немного меньше.