Почему в DevOps нельзя прийти с нуля?
Во многих IT-компаниях разные отделы отвечают за разработку, эксплуатацию, поддержку и управление. Методология DevOps стремится объединить их для повышения производительности и более плавного рабочего процесса.
Основные задачи инженера DevOps:
- подготовка среды для создания продукта;
- развертывание поставленного разработчиками релиза;
- использование инструментов анализа качества разработки и автоматизации тестирования;
- установка, конфигурирование и обеспечение работы веб-серверов и серверов инфраструктуры разработки;
- автоматизация процессов тестирования и развертывания;
- непрерывное развертывание и управление непрерывной интеграцией (CI/CD);
- обеспечение бесперебойной работы приложений;
- написание спецификаций и документации.
В связи с широким стеком технологий, набором обязанностей и навыков, которыми должен обладать специалист DevOps, ему необходим предварительный опыт. Чаще всего в эту профессию приходят системные администраторы, а также специалисты по эксплуатации или тестированию, обязанности которых близки к DevOps. Младшие специалисты в этой отрасли – редкость. Грейдирование в DevOps начинается со среднего уровня, где требуется опыт работы от трех лет.
Что требуется знать для начала карьеры в DevOps?
О базовых знаниях, навыках и других нюансах работы DevOps мы расспросили у практикующего специалиста, старшего инженера DevOps компании iX.co, Андрея Мальцева. Он рассказал о своем опыте и дал ряд советов начинающим специалистам.
Моя карьера в DevOps началась с системного администрирования. Еще на уроках программирования в школе я понял, что настраивать компьютерные системы и заниматься автоматизацией процессов мне нравится больше, чем писать код.
В университете я работал техником на кафедре. Дальше последовала работа «эникейщиком» в ресторане. Позже я несколько лет работал с сетями в провайдинге, а уже после стал системным администратором в крупной международной компании. Постепенно удавалось расти и перейти в DevOps, так как задачи усложнялись, а компетенции и уровень ответственности повышались.
Часто можно услышать, что начинающему DevOps-специалисту нужно учить какой-то определенный набор технологий. Исходя из моего опыта, этот набор меняется каждые несколько лет, поэтому советую сфокусироваться на инструментах, которые будут нужны индустрии через несколько лет, а не прямо сейчас.
Сначала, изучите английский язык и практикуйте навыки общения. Так называемые soft skills важны, потому что специалист DevOps, который не умеет правильно коммуницировать, не нужен компании, особенно в наш век глобализации и удаленной работы.
Также стоит изучить паттерны проектирования, разработки и автоматизации. Они использовались во времена мейнфреймов и выделенных серверов, и продолжают использоваться сейчас, при повсеместной виртуализации и контейнеризации. Уверен, будут актуальны и в будущем. Ну и конечно же, изучайте операционную систему Linux, без нее в DevOps будет сложно.
Дадим еще несколько конкретных советов:
- Изучите язык программирования. Python – один из доминирующих языков в наши дни. Несколько менее популярен Go (Golang). Любой из этих двух вариантов отлично подойдет для начинающих специалистов;
- Ознакомьтесь с управлением серверами, поскольку это – одна из основных задач DevOps. Вам необходимо разбираться в аппаратном обеспечении (ЦП, архитектура, память) и в программной начинке (Windows, Linux);
- Изучите безопасность и основы работы в сети. Придется разобраться, как работают распространенные протоколы: HTTP, FTP, SSL и т.д. Также инженеру DevOps нужно обеспечивать безопасность развернутого программного обеспечения, предугадывать недостатки безопасности в коде и настраивать инфраструктуру сети;
- Изучите GIT. Распределенная система управления версиями позволяет разработчикам иметь много независимых веток кода, отслеживать изменения в файлах и хранить историю этих изменений. Быть экспертом в GIT нет необходимости, но работать с системой придется часто, поэтому разобраться в ней стоит;
- Узнайте, как создавать программное обеспечение. В DevOps процесс сборки заключается в создании отдельной версии программного обеспечения, которая будет работать на производственном сервере. Очень важно знать как можно больше об этой части жизненного цикла приложения;
- Изучите инфраструктуру как код. С помощью IaC можно быстро развернуть инфраструктуру, с помощью кода, а не вручную;
- Узнайте, как контролировать программное обеспечение и инфраструктуру. Развернутое в производстве ПО и инфраструктура, на которой оно установлено, должны контролироваться. Поэтому важно освоить инструменты мониторинга и оповещений;
- Изучите информацию о контейнерах и оркестровке. Инженеру DevOps необходимо обладать навыками создания, построения, развертывания и управления контейнерами в средах разработки и производства. Обязательны нужно изучить такие инструменты, как Docker и Kubernetes;
- Присоединитесь к сообществам DevOps. Обмен знаниями с опытными коллегами поможет вам быстрее освоиться в новой профессии и получить необходимые знания.
О DevOps-сообществах мы уже писали. Вот некоторые из них:
- Telegram-канал DevOps – русскоговорящее сообщество;
- Telegram-канал DevOps;
- форум для DevOps на Reddit Everything DevOps;
- крупное сообщество DevOps в соцсети LinkedIn DevOps.
Какие инструменты нужно освоить начинающим?
Из инструментов Андрей Мальцев рекомендует следующие:
- операционные системы Linux или macOS. В мире DevOps с операционной системой Windows вы будете сталкиваться крайне редко. Под Windows для освоения Linux существуют Vagrant, VirtualBox и прочие приложения для виртуализации;
- Docker – инструмент для автоматизации, развертывания и управления приложениями с помощью контейнеров. Этот инструмент важен, так как почти весь необходимый в DevOps системный софт может поставляться в контейнерах. А если не поставляется, то его можно (и нужно) упаковать самому;
- Microsoft Visual Studio Code – редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS. Из бесплатных универсальных IDE – Visual Studio Code подойдет лучше всего. Все, что может понадобиться в процессе работы в нем уже есть, или это можно доставить плагинами;
- Kind, Minikube, k3s. Kubernetes сейчас крайне популярен. Чтобы начать его осваивать, достаточно компьютера и одного из этих трех инструментов для автоматизации операций с контейнерами на выбор;
- Postman – инструмент тестирования API. В работе инженера DevOps часто нужно что-то проверить или протестировать. Базовые вещи проще делать cURL(ом), но в сложных или часто повторяющихся ситуациях подойдет Postman;
- Менеджер паролей. Советовать какой-то определенный нет необходимости, поскольку их много на рынке. Начинающим DevOps стоит приучать себя не хранить и не передавать никакие секретные данные (в том числе и пароли) открытым текстом.
Какие ресурсы, книги, видео и каналы пригодятся?
Начинающим специалистам будет полезен ресурс Developer Roadmaps. Сообщество DevOps расписало и оформило в виде дорожной карты базовые инструменты и знания, которые пригодятся на этапе обучения.
Книги:
- «Site Reliability Engineering: надежность и безотказность как в Google», Бейер Бетси, Джоунс Крис;
- «Continuous Delivery: практика непрерывных апдейтов», Вольф Эберхард;
- «Распределенные системы. Паттерны проектирования», Бернс Брендан;
- «Масштабирование приложений. Выращивание сложных систем», Атчисон Ли.
Об этих и других книгах для специалистов DevOps мы писали в отдельной статье.
Какие вопросы вам могут задать на собеседовании?
Чаще всего HR-специалисты, и даже инженеры DevOps не могут задать корректные вопросы соискателю. DevOps находится на стыке нескольких специализаций, но HR сдвигаются либо в сторону операционки, либо наоборот – в сторону разработки. Подготовиться придется всесторонне.
5 самых частых вопросов на собеседовании:
- Вопросы по операционной системе Linux: load average, inode, processes.
- Вопросы по сетям: маршрутизация, OSI model, TCP/UDP, IP subnets.
- Вопросы по программированию: Bash, Python, иногда Golang. Во время собеседования вас могут попросить написать функцию, которая выполняет конкретную задачу.
- Что такое Docker и какие особенности Linux он использует?
- Опишите, как вы видите простой CI/CD пайплайн?
- Стоит сюда включить и шестой вопрос: какие меры безопасности нужно предпринять, чтобы злые хакеры не взломали нашу инфраструктуру?
Чтобы подготовиться к собеседованию, сделайте следующее:
- Изучите информацию о предполагаемом работодателе. Вопросы на собеседовании могут касаться не только ваших профессиональных знаний, но и мотивации в выборе конкретной компании.
- Структурируйте информацию о вашем опыте. Даже если опыт в DevOps минимальный, на собеседовании вы можете перечислить знания и умения, которые получили самостоятельно, инструменты, которые использовали в процессе обучения, а также рассказать над какими личными проектами работали.
- Подготовьтесь к тестовому заданию. HR-специалист может попросить вас выполнить тестовое задание во время собеседования или привести примеры из личного опыта. Скорее всего вас попросят найти решение конкретной проблемы или привести в пример нестандартный кейс, с которым приходилось сталкиваться;
- Будьте готовы к проверке ваших soft-skills. Это важный аспект собеседования, так как специалисту DevOps нужно наладить коммуникацию, найти общий язык с разработчиками, командой по эксплуатации и заказчиками. Общение также происходит за пределами проекта, поэтому вы должны уметь отстаивать свое мнение, идеи, находить подход к коллегам, руководству и клиентам.
Где можно получить минимальный опыт в профессии?
Идеальный вариант – интернатура в крупных международных компаниях. Можно и в российских, но там реже практикуются стажировки и применять английский язык сложнее.
Кроме варианта стажировки вы можете еще несколько:
- Получить базовые знания самостоятельно, следуя дорожной карте. Для самостоятельного обучения также доступны: видеолекции, книги и сообщества для специалистов DevOps;
- Закончить курсы. Средняя их продолжительность – один год, а на изучение отдельных инструментов уйдет несколько месяцев. За это время вы получите структурированные знания и сможете применить их на практике. Выбирайте курсы с возможностью сдать итоговый проект и обратной связью от преподавателя. После окончания вам выдадут сертификат, который можно добавить в резюме, отметив там практический опыт;
- Найти ментора. Если вы уже имеете минимальный опыт в профессии, попробуйте найти ментора. Опытные специалисты любят делиться знаниями, поэтому стоит обратиться к ним за советом или проработать вместе сложные вопросы.
Обучение новой профессии и поиск работы – нелегкая задача. Если вы подойдете к этому вопросу с ответственностью и настойчивостью, сможете устроиться на желаемую должность. Главное – получите необходимые знания, реально оцените свои способности и составьте резюме. Удачи в обучении и поисках работы мечты!
Комментарии