Skip to content

Как стать DevOps в 2019

В настоящий момент DevOps действительно очень популярен, но когда дело доходит до обучения, возникает много вопросов. Так давайте разберемся, как стать DevOps в 2019.

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

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

Из-за того что DevOps не так давно набрал критическую массу, процесс обучения вызывает много вопросов. Очень трудно выбрать правильный путь в виду множества инструментов и практик. Я часто получаю вопросы от моих друзей и коллег, для которых являюсь «старшим товарищем» в мире ИТ. Как стать DevOps? Какие инструменты мне следует изучить? Каким практикам я должен следовать? Должен ли я знать Docker и Kubernetes, чтобы получить работу? Является ли автоматизация инфраструктуры частью DevOps? и так далее.

Ранее мы рассматривали визуализированный гайд от Kamran Ahmed о том, как стать веб-разработчиком. Тогда я рассказывал где можно приобрести навыки Frontend и Backend разработчика. Но в этом гайде также есть ветка для прокачивания навыков DevOps. Сегодня мы будем рассматривать именно ее.

Путь DevOps

Ниже вы найдете дорожную карту / гайд для прокачки навыков DevOps, а под ней мои комментарии с ссылками на полезные курсы, книги и другие материалы, по которым вы сможете освоить данные технологии. Обратите внимание на желтые прямоугольники, ими Kamran Ahmed отметил важные вещи, которые, по его мнению, необходимо изучить.

Как стать DevOps

Выучите язык программирования

Если вы уже являетесь разработчиком и хотите расширить свой кругозор и стать DevOps, то вы вероятно умеете программировать. Тем не менее, есть 3 основных языка, которые лучше всего подходят для DevOps — это Go, Python и JavaScript (Node.js).

Go — является языком #1 для DevOps. На это есть следующие причины:

  • Язык диктует жесткие правила и позволяет писать более качественный код, предотвращая подключение не используемых библиотек и объявления ненужных переменных;
  • Язык берет под контроль стиль кода и регламентирует процесс документации, позволяя разработчику сосредоточится на написании кода;
  • Код компилируется в исполняемый файл, который можно использовать для распространения;
  • Компилятор позволяет создавать бинарники для различных платформ. Так, например, со своей машины на Linux вы сможете компилировать бинарники как для своей системы, так и для MacOS и Windows.

Так что если вы решили стать DevOps инженером, рекомендую изучить Go. В этом вам поможет книга «Введение в программирование на Go» и курс на Coursera.

Python — очень популярный интерпретируемый язык программирования. Часто поставляется совместно с дистрибутивами Linux / MacOS, за счет чего так же является популярным выбором для решения задач по администрированию вместо Bash. Изучить данный язык вам помогут курсы «Python: основы и применение» и «Introduction to Python» на Stepik.

JavaScript (Node.js) — еще один популярный язык, область применения которого практически не ограничена благодаря платформе Node.js. Так же на нем можно писать консольные утилиты, которые будут взаимодействовать с операционной системой. В изучении вам помогут учебник JavaScript и этот курс на Stepik.

Освоить концепции операционных систем

Разобрались с Dev, теперь пора взяться за часть Ops. Раньше ей занимались только сисадмины, которые отвечали за знание работы операционных систем и железа. Но для внедрения практик DevOps вам так же необходимо знать это. По крайней мере, вам нужно знать об управлении процессами, потоках и параллелизме, сокетах, управлении вводом / выводом, виртуализации, хранении в памяти и файловых системах, как это предлагается в дорожной карте.

Помочь с изучением всех этих фундаментальных тем вам могут лекции «Администрирование Linux» и курс «Введение в Linux».

Научиться жить в терминале

Помимо фундаментальных знаний Linux вам понадобится так же умение работать с командной строкой. Знание некоторых оболочек, как Bash или Zsh, и таких инструментов, как find, grep, awk, sed, lsof и сетевых команд, таких как nslookup и netstat, является обязательным. Для изучения основ командной строки вы можете воспользоваться курсом на Hexlet.

Сети и безопасность

Чтобы стать хорошим DevOps инженером, вы должны знать об основных концепциях сетей и безопасности, таких как DNS, модель OSI, HTTP(s), FTP, SSH, SSL, TLS и т.д. Раскрытие многих тем вы найдете в вышеупомянутых лекциях и курсах по администрированию Linux.

Что такое «__» и как это настроить?

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

Инфраструктура как код

Это, наверное, самая важная вещь для DevOps инженера, а также это очень обширная область. Как DevOps инженер, вы должны уметь работать с контейнерами Docker и Kubernetes, уметь управлять конфигами с такими инструментами, как Ansible, Chef, Salt или Puppet, провизить (provisioning) инфраструктуру в облаке с Terraform и прочее.

Для изучения Docker рекомендую обратить ваше внимание на курс Docker Mastery: The Complete Toolset From a Docker Captain на Udemy. Он охватывает большинство инструментов, необходимых DevOps инженеру.

Если вы хотите научиться управлять контейнерами через Kubernetes, рекомендую вам присоединиться к курсу Learn DevOps: The Complete Kubernetes Course. Он научит вас собирать и деплоить контейнеры с вашим приложением в кластер Kubernetes, а также управлять самим кластером.

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

Изучите инструменты непрерывной интеграции (CI/CD)

Еще одна важная вещь для DevOps-гуру — это навыки по настройке конвейера непрерывной интеграции и доставки. Существует много инструментов CI/CD, как Jenkins, TeamCity, Drone и прочие, но я рекомендую взглянуть на Gitlab CI. Этот инструмент встроен в систему контроля версий Gitlab, которая используется во многих компаниях, но также возможно настроить взаимодействие с репозиториями в других системах. В изучении Gitlab CI вам поможет официальная документация.

Мониторинг ПО и инфраструктуры

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

На этом поле много игроком, например Nagios, Zabbix, Prometheus, Grafana, Monit, AppDynanic, New Relic и т.д. Вы можете изучить работу с некоторыми из них в зависимости от того, какой инструмент используется в вашей компании, например Prometheus или Zabbix.

Провайдеры облачной инфраструктуры

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

Безусловно, AWS является лидером среди облачных провайдеров. Но на рынке много других компаний, которые готовы взять на себя головную боль по администрированию серверов, например, Google Cloud, Microsoft Azure, Digital Ocean, Heroku, Scaleway и многие другие. На российском рынке есть Яндекс.Облако, Mail.Ru Cloud Solutions. В общем, выбирайте с расчетом на масштабы вашей компании.

Вместо заключения

Спасибо, что дочитали до этого момента. Желаю вам удачи в изучении DevOps. Конечно, это будет нелегко, но, следуя этой дорожной карте и используя полезные материалы из статьи, вы становитесь на один шаг ближе к тому, чтобы стать DevOps инженером. Следите за обновлениями на нашем блоге, чтобы не пропустить новые интересные материалы по Docker, DevOps или CI/CD.