Недавно я опубликовал заметку Что должен знать «сферический 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 должен обладать действительно широким кругозором. Вам придется постоянно заниматься самообучением. Ниже приведу примерные шаги, которые помогут вам в начале пути.
- Напишите небольшое приложение. Язык программирование можно выбрать любой. Пусть приложение отдает инфу о пользователях через HTTP. Получится некое API.
- Добавьте в него работу с БД. Хранение информации о пользователях, например.
- Зарегистрируйте аккаунт на GitHub, если у вас его еще нет. Создайте репозиторий с вашим приложением.
- Установите себе на компьютер Jenkins, ну или TeamCity и настройте автоматическую сборку вашего приложения из репозитория по кнопке.
- Следующий этап. Настраиваем webhooks на GitHub, которые будут запускать сборку проекта на вашей машине (Jenkins/TeamCity).
- Добавьте тесты в Jenkins. Как минимум линтер по вашему коду.
- Создаем виртуальную машину и настраиваем ее с помощью Ansible, Chef или Puppet. Пользователи, библиотеки, зависимости и т. д.
- Подводим все это дело под Vagrant. Мы же хотим все автоматизировать.
- Подключаем Vagrant к Jenkins с помощью плагина. При пуше в Git приложение будет собираться, и подниматься на виртуалке с помощью Vagrant + Configuration System Management.
На этом пока всё. Можно еще прикрутить тесты, мониторинг, завернуть все это в Docker, использовать оркестрацию, поднять кластер и так далее. Но мы же говорим сейчас про Junior`а. Так что списка выше хватит на первое время с головой.
Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)
Или в группе в ВК: https://vk.com/it_transformation