Недавно я опубликовал заметку Что должен знать «сферический DevOps в вакууме», но мне кажется, что требования описанные в ней не знают даже многие Senior DevOps`ы. Уж слишком там много технологий (120 шт. если мне не изменяет память).

Сегодня же я хочу поднять тему «Что должен знать начинающий Junior DevOps». Каков же самый минимум знаний для этого?

Всем привет друзья, давайте разберемся!

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

Быть Middle System Administrator

Тут идея в том, что вы должны хорошо разбираться в среде, в которой будут работать ваши приложения. Как происходит запуск, что делать, если вы в логах увидели ошибку, как грамотно настроить ту же операционную систему. И да, сейчас речь шла про ОС *nix. Вам это очень сильно пригодится.

  • Вам необходимо пройти хотя бы базовый курс по Linux
  • Обычно это Ubuntu, Debian или же CentOS
  • Изучить bash, он вам точно пригодится
  • И главное во время обучения – полностью погрузиться в происходящее. Не просто читать, а еще и выполнять все прочитанное в терминале

Сети

Сети очень важная часть работы DevOps`а. Хотя многие про это и забывают. Необходимо знать хотя бы следующие основы:

  • Как работает IP, TCP/UDP
  • Как работает HTTP, HTTP/2

Как изучить сети? Пройдите курс CCNA, а также установите себе GNS 3 и пробуйте настраивать сетевое оборудование.

Нужно ли быть разработчиком?

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

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

С чего начать:

  • Изучить хотя бы базовые понятия Python или Golang

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

Тут все просто, вам нужно уметь писать SQL запросы. Всё, точка.

С чего начать:

  • Самое простое – пройти какой-нибудь курс по БД, например по PostgreSQL

Заключение и совет

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

  1. Напишите небольшое приложение. Язык программирование можно выбрать любой. Пусть приложение отдает инфу о пользователях через HTTP. Получится некое API.
  2. Добавьте в него работу с БД. Хранение информации о пользователях, например.
  3. Зарегистрируйте аккаунт на GitHub, если у вас его еще нет. Создайте репозиторий с вашим приложением.
  4. Установите себе на компьютер Jenkins, ну или TeamCity и настройте автоматическую сборку вашего приложения из репозитория по кнопке.
  5. Следующий этап. Настраиваем webhooks на GitHub, которые будут запускать сборку проекта на вашей машине (Jenkins/TeamCity).
  6. Добавьте тесты в Jenkins. Как минимум линтер по вашему коду.
  7. Создаем виртуальную машину и настраиваем ее с помощью Ansible, Chef или Puppet. Пользователи, библиотеки, зависимости и т. д.
  8. Подводим все это дело под Vagrant. Мы же хотим все автоматизировать.
  9. Подключаем Vagrant к Jenkins с помощью плагина. При пуше в Git приложение будет собираться, и подниматься на виртуалке с помощью Vagrant + Configuration System Management.

На этом пока всё. Можно еще прикрутить тесты, мониторинг, завернуть все это в Docker, использовать оркестрацию, поднять кластер и так далее. Но мы же говорим сейчас про Junior`а. Так что списка выше хватит на первое время с головой.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Или в группе в ВК: https://vk.com/it_transformation

От DevOps

DevOps or not...