∞ Легко ли перейти из сисадминов/разработчиков в DevOps?
Развитие сферы IT делает некоторые профессии неактуальными, и пальма первенства переходит к более востребованным на рынке. Направление DevOps – одно из таких. Мы расспросили разработчицу и сисадмина о том, почему и как они перешли в DevOps.
Инженер DevOps и разработчик/сисадмин: в чем разница?
С появлением методологии DevOps, многие традиционные роли в IT трансформируются именно в этом направлении. Наиболее распространенным является переход с позиции системного администратора или разработчика на позицию DevOps-инженера.
Чаще всего сравнивают именно профессии системного администратора и специалиста по DevOps. Эти роли разделяют ряд общих задач, но существуют и фундаментальные различия между ними.
Системные администраторы не участвуют в процессе разработки программного обеспечения. DevOps-инженеры играют более активную роль. Они сосредоточены на работе над всем жизненным циклом продукта, а системные администраторы участвуют только на стадии его эксплуатации.
Обычно в обязанности системного администратора входит следующее:
- резервное копирование и аварийное восстановление IT-систем;
- мониторинг и анализ сети, обеспечение безопасности аппаратных компонентов, идентификация и управление доступами;
- обеспечение бесперебойной работы серверов;
- администрирование пользователей;
- ведение отчетов об использовании IT-активов;
- поиск и устранения проблем, которые ставят под угрозу производительность системы или доступ к IT-сервису.
Некоторые навыки и обязанности системных администраторов актуальны и для DevOps-инженеров, но для смены профессии потребуются и дополнительные:
- настройка облачных виртуальных машин и сервисов;
- навыки программирования и написания сценариев;
- понимание непрерывной интеграции (CI);
- понимание безопасных и эффективных стратегий развертывания ПО;
- навыки управления конфигурациями;
- знание методов контейнеризации приложений;
- практический опыт работы с платформами IaaS, вроде AWS и Microsoft Azure;
- навыки коммуникации и другие soft skills.
В обязанности разработчика входит:
- повышение производительности программного обеспечения и устранение ошибок на основе отзывов клиентов;
- оценка потребностей клиентов в безопасности;
- документирование разработки и производительности программного обеспечения для справки во время обновлений;
- координирование установки программного обеспечения в компьютерную систему клиента.
Опыт специалистов
Мы пообщались с профессионалами, которые связали свою карьеру сначала с разработкой и системным администрированием, но со временем перешли в DevOps.
Глафира Иванова, DevOps Engineer компании MedIndex
Справедливости ради стоит отметить, что спустя полгода обучения, потратив много часов и нервов, я все еще практически ничего не знала. Но мне повезло вскоре устроиться на работу джуном-питонистом. Было сложно и страшно, условия были отвратительными, а работа бесперспективной и выматывающей.
Учиться получалось скорее вопреки, чем по ходу, но больше всего огорчало, что все мои попытки понять более широкую картину или разобраться в чем-то поглубже встречали либо непонимание, либо агрессию. Мне всегда было некомфортно, если я не понимала, что и зачем я делаю.
В какой-то момент все мои коллеги-бэкендеры уволились и я стремительно выгорела, поэтому решила поискать другую работу. Учитывая, что опыт в программировании у меня был к тому моменту не слишком положительный, я подумывала о том, чтобы слегка сменить сферу деятельности (что довольно нетрудно в IT, особенно вначале).
Когда мне предложили позицию инженера по эксплуатации, я была в восторге, потому что можно было наконец узнать про все захватывающие вещи, в которые мне раньше не удавалось углубиться. На деле все опять оказалось не так уж радужно, но я многому научилась, а заодно узнала о существовании инженеров DevOps. Это звучало как отличная перспектива для профессионального роста, поэтому я начала потихоньку поглядывать на вакансии и читать про указанные в них технологии. Позже я узнала о том, что в одной из IT-компаний есть курсы DevOps и пошла туда обучаться вместе с коллегой. По ходу курса студентов периодически собеседовали на проекты и после одного из таких интервью мне предложили работу.
Об обязанностях специалиста DevOps
Это включает множество различных задач:
- настройку CI/CD;
- сопровождение продуктов;
- поддержку инфраструктуры;
- мониторинг;
- траблшутинг (устранение неполадок);
- усилия по автоматизации и улучшению процессов.
В ходе всей работы я мои коллеги постоянно взаимодействуем с разработчиками, тестировщиками и менеджерами. Стараемся вовлекать их в обсуждение архитектурных решений и вопросов построения процессов.
О навыках
Новичку в DevOps важно понимать, что придется очень много взаимодействовать с людьми, ведь смысл методологии DevOps именно в этом. Нужно уметь договариваться. Кроме того, очень пригодится умение сохранять хладнокровие в критических ситуациях (хотя оно приходит с опытом), системное мышление (для проектирования и траблшутинга). Иногда вам придется работать в условиях, когда все сломано и ничего не понятно, поэтому любопытство, пытливый ум и терпение тоже будут кстати.
Важно уметь подмечать проблемные места, которые можно улучшить: какие процессы можно автоматизировать, какие оптимизировать, а какие и вовсе упразднить. Очень полезно уметь читать логи и правильно формулировать вопросы в Google и для коллег.
О необходимом для специалиста стеке технологий
Советую изучать:
- ОС Linux;
- какой-нибудь из скриптовых языков (Python, например, но наверняка придется писать и на Bash);
- Docker;
- Kubernetes;
- Ansible;
- Prometheus;
- ELK-стек;
- инструменты для CI/CD (Jenkins/GitLab CI);
- полезно попробовать работать с публичными облаками (например, с AWS).
О проблемах, которые могут возникнуть в начале карьеры
Чем меньше опыта, тем сложнее разбираться с незнакомыми технологиями. Когда одну незнакомую концепцию объясняют с помощью других, легко отчаяться, но все большие и сложные вещи можно разобрать на маленькие и простые.
Стоит начать с самого малого и потихоньку разбираться с новыми понятия. Не нужно бояться задавать глупые вопросы более опытным коллегам. Обычно людям не составляет труда кратко и доходчиво объяснить то, в чем они хорошо разбираются – это помогает сэкономить время и избежать ошибок.
Мне кажется, неопытные инженеры чаще совершают ошибки по невнимательности. Например, мой коллега однажды перепутал имя базы и вместо того, чтобы создать новую, сломал старую. А в другой раз скопировал не ту команду и вместо бекапа удалил важные данные. Важно сохранять спокойствие, быстро найти того, кто компетентен решить проблему и объяснить ему, что произошло. И вынести из происшествия уроки на будущее, конечно же.
Дмитрий Евстюхин, Senior Cloud Solutions Architect компании Provectus
В какой-то момент я уволился с должности старшего сисадмина и занялся поисками новой работы. Мне сделали два предложения одновременно – начальником отдела в сфере ритейла и рядового инженера в маленькой геймдев-компании. Именно во втором предложении промелькнуло это самое слово 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. Как и во многих смежных направлениях, эти роли частично пересекаются. Системные администраторы уже имеют опыт написания сценариев и могут быть знакомы с технологиями автоматизации развертывания приложений, управления конфигурациями и так далее. Многие разработчики имеют представление о системном администрировании, так что изучать неофиту придется не половину (Dev или Ops), а немного меньше.
Если вы только собираетесь освоить популярную профессию, стоит обратить внимание на курс «Старт в DevOps: системное администрирование для начинающих» образовательной онлайн-платформы Skillbox. Там вы сможете получить навыки администрирования Linux, научитесь настраивать веб-серверы и поддерживать работу сайтов, а также усвоите базовые знания для развития в DevOps-инженерии.
За год занятий с экспертами-практиками вы соберете портфолио и сможете начать карьеру системного администратора в IT-компании. Если ваша цель – стать инженером DevOps, вы сможете попрактиковаться на реальных проектах и получите базовые навыки для развития. Продолжить обучение можно на продвинутых курсах: «Профессия DevOps-инженер», «Профессия DevOps-инженер PRO» и «Инфраструктурная платформа на основе Kubernetes». Все интересующие вопросы вы сможете задать куратору в чате Telegram, а ваши домашние задания лично прокомментирует преподаватель и даст полезные советы.