Visitors have accessed this post 7494 times.

Кто такой DevOps-инженер, чем он занимается и как им стать

0
0
7494
27 мая 2020 11:39
Автор: Rebrain Me
DevOps

Visitors have accessed this post 7494 times.

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

Что такое DevOps?

Методология DevOps появилась еще в 2008 году. Прежде всего, как ответ на постоянно возникавшую проблему – во взаимодействии отделов разработки и эксплуатации. Классическая ситуация – разработчики пилят код, локально у них все работает, а вот при запуске в продакшн возникают неведомые проблемы и ошибки. С точки зрения команды эксплуатации проблема, конечно, на стороне разработки, а для разработчиков – в «кривых руках» службы эксплуатации, у них же все работало. Итог – один релиз допиливается и выпускается долго, что не может не сказаться на конечном качестве продукта.

На пике этой ситуации и появилась методология DevOps (сокращение возникло от Development Operations). Она позволила связать в единый процесс разработку, тестирование и эксплуатацию. А главное – прийти к тому, чтобы продукт можно было обновлять чаще без потери в качестве.

Кто такой DevOps-инженер, и чем он занимается

Как видно уже из названия, DevOps-инженер как раз выступает в роли того самого «связного» между разработкой и эксплуатацией (то есть он разбирается и в Development, и в Operations). Так как его деятельность находится на стыке нескольких специальностей сразу, то он зачастую и выполняет несколько ролей:

  • Build Engineer/Release Engineer — специалист, ответственный за сборку кода (build) и его доставку в тестирование и продакшн (собственно, release).
  • Automation Engineer — главный по автоматизации всего, что только возможно. Кстати, именно автоматизация – одна из важнейших составляющих методологии DevOps.
  • Security Engineer (или SecOps) — ответственный за информационную безопасность — PCI compliance, CIS compliance, patching, поиск уязвимостей и прогон тестов на безопасность.

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

Так кто же такие DevOps-инженеры, и чем они отличаются от системных администраторов?

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

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

Как правило, наше решение идет по такому пути:

  1. В отделе разработки разработчики пишут код.
  2. Отдел тестирования прогоняет результат через тестовые стенды, выявляя баги.
  3. А после устранения всех недостатков, выявленных при тестировании, системные администраторы из отдела эксплуатации разворачивают наши новоразработанные возможности решения на продакшн-серверах.

То есть, сисадмин включается в процесс только на последнем этапе – собственно, запуск в эксплуатацию.

У DevOps-инженера функции существенно шире, по сути, он связывает все три этапа в единое целое за счет автоматизации. Собирает код, описывает инфраструктуру, автоматически разворачивает тестовые среды и обновляет продакшн без потери качества.

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

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

Поэтому переходим к следующему этапу разбора специальности, чтобы понять, как стать специалистом по DevOps.

Минимальные знания, необходимые DevOps-инженеру

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

По данным hh.ru, наиболее востребованными являются навыки работы с Linux, Git, Python, Bash, Docker, Azure, RabbitMQ, Kubernetes.

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

  • знание окружения, с которым предстоит работать (Windows, Linux и др. на уровне Middle, а лучше Senior System Administrator);
  • знание сетей на базовом уровне — Networking — CCNA;
  • общее понимание принципов разработки на уровне Junior developer;
  • умение работать с базами данных на уровне Junior DBA.

Знать окружение

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

Где получить базовые знания:

Хорошее понимание ОС Linux – если у вас его пока нет, стоит озаботиться поиском обучающего курса. Например, мы предлагаем пользователям изучить эту ОС сразу на «боевых» кейсах и практике – на практикуме Linux by Rebrain.

Многие тонкости можно узнать, только с головой погрузившись в тему и попробовав сделать своими руками. Если нет возможности сделать это сразу на практике, стоит уделить внимание тематическим форумам и каналам в Телеграм.

Понимать, как работает сеть

Без понимания принципов сетевого взаимодействия DevOps-инженеру придется, мягко говоря, непросто, например, при поиске причин ошибки Connection Refused. Стоит изучить, как работают IP, TCP/UDP, DNS, OSI Model, HTTP, HTTP/2. HTTP, HTTPS, FTP, SSL, TLS.

Где получить базовые знания:

Пройти обучение по CCNA и самостоятельно потренироваться в настройках сетей при помощи эмулятора для изучения сетевых технологий GNS 3.

Понимание принципов разработки на уровне Junior Developer

Тут речь идет не о том, что вы должны уметь писать код. Но вам точно стоит разобраться, как это делается, начиная от базовых понятий объектно-ориентированного программирования до того, как создается конкретное приложение. Чем глубже вы разберетесь в вопросе, тем проще вам будет автоматизировать процессы его сборки, тестирования и запуска в эксплуатацию. А понимание возможных проблем и узких мест в его архитектуре сродни профилактике возможного заболевания и может уберечь от серьезных проблем.

Если перейти к конкретным пунктам, которым стоит уделить время в первую очередь, это:

  1. Знание основных типов данных и алгоритмов, которые могут использоваться.
  2. Понимание основных принципов программирования.
  3. Не помешает и более глубокое погружение в какой-нибудь из языков программирования, это может быть Python или golang.

Знание баз данных

Обязательный пункт, потому что на любом реальном проекте не обойтись без работы с базами данных. Поэтому DevOps-инженеру стоит научиться не только писать SQL-запросы, но и уметь работать с noSQL-решениями, понимать принципы работы с индексами, уметь пользоваться explain.

Где получить базовые знания:

Пройти курс по популярным БД или самостоятельно изучить документацию и попробовать на практике поработать с базами.

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

  1. Навык постоянно учиться и совершенствоваться. Постоянно выходят новые утилиты, методики и подходы. Чтобы уметь быстро и эффективно решать задачи — необходимо постоянно изучать что-то новое.
  2. Умение общаться. Чтобы выявить и решить проблему, зачастую необходимо провести целое расследование — поговорить с заинтересованными лицами, узнать, где, что и как должно работать, и, собственно, решить саму проблему (а не только ее последствия).
  3. Умение траблшутить. Это навык, который используется каждый день. Постоянно что-то не работает, падает — и в этом приходится разбираться.
  4. Умение разбираться (и жить) со старой архитектурой. Никому не нужны спецы, которые могут что-то сделать с нуля, но при этом не могут поддерживать уже существующие решения. Бизнесу невыгодно постоянно переделывать все с помощью новых технологий.
  5. Умение мыслить масштабно. Умение видеть всю систему в целом, а не отдельную ее часть, — очень важное качество — благодаря ему, можно находить самые оптимальные решения, не зацикливаясь на деталях конкретной проблемы.
  6. Кругозор. Все тоже — чтобы выбрать правильный инструмент, необходимо знать его аналоги, их плюсы и минусы. По долгу службы и девопсы знают множество софта и технологий, которые так или иначе облегчают жизнь. Соответственно, они могут выбрать подходящий инструмент в незнакомой ситуации.

Кто такой DevOps и как им стать: план обучения

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

Если путь постоянного самообучения вас не пугает, то вам стоит смотреть в сторону профессии DevOps-инженера.

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

Итак, начинаем путь DevOps-инженера по конкретным шагам.

  1. Для начала изучаем API, что это такое, какие виды бывают и как с ним работать. Потом полученные знания реализуем в написании приложения, например, для интернет-магазина.
  2. Теперь работаем с базой данных – добавляем БД MySQL или Postgress и настраиваем работу с запросами. Список пользователей лежит в базе, они могут проходить авторизацию. Настраиваем базу так, чтобы приложение могло синхронизироваться с ней при внесении изменений.
  3. Следующий этап – это начало автоматизации работы с кодом. Для этого мы выбираем хостинг GIT-репозитория – это может быть GitHub, Bitbucket, Gitlab – и заливаем туда наш код.
  4. Переходим к автоматизации сборки, для этого нам нужны будут Jenkins / TeamCity / Gitlab CI. Настраиваем их таким образом, чтобы приложение автоматически собиралось из БД. На этом же этапе мы занимаемся заготовкой для будущего паплайна.
  5. Следующий этап автоматизации касается уже сборки кода. Этот функционал будет, чтобы оперативно реагировать на внесение изменений в код. Тут можно или заставить CI/CD систему опрашивать Git-репозитории на наличие изменений, или воспользоваться web-хуками облачных провайдеров.
  6. Переходим к настройке автоматической проверки кода. Для этого можно добавить тесты в jenkins.
  7. Используем подход Infrastructure as a code – описываем инфраструктуру с помощью Ansible, Puppet, Chef.
  8. На следующем этапе нужно настроить автоматическое разворачивание тестовых или продакшн сред при помощи Vagrant или Terraform, чтобы инфраструктуру можно было поднять нажатием одной кнопки.
  9. Следующий шаг нашей автоматизации касается уже создания виртуальных машин. Используем для этого выбранный CI/CD инструмент.
  10. Пора переходить к поиску Best practices по деплою выбранного вами языка программирования. Как правило, их можно найти на сайте нужного языка.
  11. Воплощаем найденные best practices в нашем проекте.
  12. Для QA нам понадобится smoke-тест, который будет контролировать успешный или нет запуск приложения. И конечно, если приложение не работает, об этом нужно оперативно сообщать разработчикам.
  13. Добавляем функцию мониторинга в приложение – тут не обойтись без взаимодействия с разработчиками.
  14. Интегрируем с мониторингом дополнительные сервисы, которые позволят нам следить на происходящим в приложении, — pagerduty, slack, opsgenie.
  15. Подключаем к нашей автоматизации Docker – пишем файл для сборки образа приложения и выкатки в registry.
  16. На следующем этапе нам понадобятся системы оркестрации и Docker compose, чтобы поднимать и объединять несколько контейнеров в один. Это пригодится, если нужно, к примеру, поднять для вашего окружения базу данных.
  17. На последнем этапе мы переведем наш пайплайн на Docker. Для этого собираем приложение в контейнер, сохраняем образ в registry, запускаем его при помощи Kubernetes, прогоняет через smoke и нагрузочное тестирование. И после этого запускаем в продакшн.

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

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

Сколько платят DevOps-инженерам

Вакансия DevOps-инженера последние 3 года стабильно входит в ТОП-10 самых востребованных, по версии hh.ru. Кстати, согласно данным одного из крупнейших мировых сайтов по поиску работы Glassdoor, DevOps-инженер также в числе Top 10 tech jobs in America и 20 best jobs in America в 2019 году.

Давайте же посмотрим интересное — сколько получает DevOps-инженер.

На hh.ru разброс зарплат по интересующим нас вакансиям составляет от 75 до 355 тысяч рублей. Естественно, уровень зарплат зависит от требуемого опыта работы, компании, нужных навыков.

Условно DevOps-инженеров можно разделить на 3 категории (и 3 уровня зарплат, соответственно):

  1. Начинающие специалисты (опыт работы — до года, Junior) c зарплатой 80-100 тысяч рублей.
  2. Более опытные DevOps-инженеры (опыт работы — от 1 года до 3 лет, Middle) – это уже 120-150 тысяч рублей.
  3. Опытные специалисты (опыт работы — более 3 лет, Senior) зарабатывают от 150 тысяч рублей в месяц.

Если обратимся к данным из отчета международного рекрутингового центра Hays за 2019 год, то увидим, что средняя зарплата DevOps-инженера в Москве и МО составляет 230 тысяч, а DevOps-архитектора – 210 тысяч.

Еще для примера приведем уровень зарплат DevOps-инженера в США.

Средняя зарплата для DevOps-инженера начального уровня с сайта ziprecruiter.com
Средняя зарплата Senior DevOps с сайта glassdoor.com

Подытожим. Профессия DevOps-инженера – одна из наиболее востребованных и, что скрывать, хорошо оплачиваемых в сфере ИТ. Но связано это с тем, что DevOps-инженер – практически универсальный солдат, при помощи автоматизации связывающий между собой процессы разработки, тестирования и внедрения. А для этого ему нужно знание очень многих инструментов и технологий.

Если вы хотите стать DevOps-инженером, путь будет долгим и, вероятно, непростым. Но если вам нравится постоянно учиться, разбираться в новых фичах и инструментах, копаться в настройках – нет ничего невозможного. Для тех, кто хочет освоить самые актуальные навыки DevOps-инженера на практике — мы создали практикум DevOps by Rebrain.

А еще каждую неделю мы в live режиме решаем кейсы на наших открытых онлайн-практикумах, присоединяйтесь к нашему каналу в Телеграм, вся информация там.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Linux like One-c
array(1) { [0]=> object(WP_Term)#11558 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор статьи - Сергей Попов
Предистория
Мало кто из инфраструктурщиков на просторах России не сталкивался с «Великим и Ужасным» ОДИН-ЭС. Многие после этой встречи безвозвратно уходят в мир *nix, чтобы никогда больше не пересекаться с ним, и не жалеют об этом, остальным приходится устанавливать, обслуживать и поддерживать этого монстра многие...

0
8
3 августа 2020
Инструменты DevOps
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

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

7
0
16 октября 2020
Методология и принципы DevOps
array(1) { [0]=> object(WP_Term)#11157 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

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

9
0
4 сентября 2020