Pull to refresh

Про DevOps для тех, кто изучает Python

Reading time5 min
Views31K

Ни за что не поверите, но оказывается IT это не только программисты. Индустрия очень стремительно разрастается и кроме разработчиков существуют project manager’ы, бизнес-аналитики, product owner’ы, scrum-мастера, тестировщики и DevOps’ы. Последние двое тесно связаны с программистами и принимают непосредственное участие в разработке ПО. К тестировщикам мы ещё вернёмся позже, а сегодня же попробуем разобраться, что скрывается за загадочным названием DevOps и как это всё связано с нашим любимым языком программирования Python.

Источник: vk.com/pylounge
Источник: vk.com/pylounge

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

Кроме того, было бы круто, если команда программистов написала новый кусочек кода, этот кусочек «сам» сразу протестировался, и, если с ним всё хорошо, автоматически добавился в рабочий проект. Некоторая автоматическая проверка, доставка и интеграция кода (CI/CD).

Вот всем вышеперечисленным и занимается DevOps. DevOps инженер делает всё, чтобы код, написанный программистами, можно было использовать на практике. Собирает код, настраивает оборудование, разворачивает и поддерживает проекты. Если в вашей работе нужны такие страшные вещи, как Docker, Ansible, Kubernetes или AWS, то вам определённо к этим ребятам.

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

К слову у Лекса с канала АйТиБорода есть два классных интервью с матёрыми DevOps’ами. Прикрепляю.

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

Казалось бы, причём тут вообще Python? Как вы уже поняли DevOps подразумевает работу с циклом доставки, включая планирование, разработку, тестирование, развертывание, запуск и мониторинг ПО.

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

Python отличный кандидат, главный любимец и негласный стандарт для большинства DevOps’ов. К тому же многие инструменты, например, Ansible, написаны на Python. Кроме Python иногда используют Ruby или Go, но всё-таки реже.

Надо понимать, что DevOps – не Python-программист и ему не надо обладать невероятно глубокими познаниями в языке и соответствующими best practice’сами. Достаточно базовых, но уверенных знаний и навыков программирования.

Надо разобраться с:

  • Переменными, типами и структурами данных (list, dict, set).

  • Стандартными конструкциями, к которым относится if и циклы

  • Функции, декораторы функций и области видимости

  • Ввод/вывод данных

  • Работа с файлами

  • Пакеты, модули, импорты

  • Исключения

  • ООП и классы на базовом уровне

  • пакетный менеджер pip и модулю для работы с виртуальным окружением venv

  • и немного асинхронности asyncio и многопоточности/многопроцессности в лице multithreading/multiprocessing также не помешает

Из библиотек и модулей особое внимание стоит уделить:

  • Для работы с командной строкой: sys и subprocess 

  • Модули, которые позволяют работать с операционной системой: os

  • Часто приходится работать с датой и временем поэтому datetime и time

  • Регулярные выражения мощный подручный инструмент – re

  • Selenium, requests, lxml для тестирования

  • Библиотека для написания юнит-тестов pytest

  • Ну и logging или Loguru для ведения логов.

Есть кстати отличная книжка Python for DevOps, рекомендую ознакомиться.

Python for DevOps: Learn Ruthlessly Effective Automation
Python for DevOps: Learn Ruthlessly Effective Automation

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

Обязательно надо разбираться в операционных системах, в частности Linux. Причём обладать надо действительно уверенными знаниями, понимать, как он устроен, уметь работать с командной строкой, знать команды, утилиты и т.д. Linux – это «Отче наш» для DevOps. Советую разобраться с каким-нибудь одним дистрибутивом семейства Debian, например, сам Debian или Ubuntu Server, и с одним дистрибутивом семейства RedHat, например, CentOS.

Иногда также необходимо уметь работать с Windows, если там проект на .NET, например. Тут всё понятно. Тут Windows Server.  

Из этого плавно вытекает умение писать скрипты на Bash в Linux и PowerShell в Windows.

Людям, планирующим начать изучение Linux рекомендую канал Kirill Semaev. Лучший, по моему мнению, канал в RU сегменте по данной тематике.

Весь мир уходит в облачные платформы, поэтому необходимо ознакомиться с одним из облачных сервисов Amazon Web Service, Google Platform или Azure. Я рекомендую начать с AWS.

К слову у нас на канале есть видео, посвящённое MS Azure. Также оставлю здесь.

Далее следует освоить ряд таких инструментов как: Docker для работы с контейнерами, Kubernetes для оркестрации, управления контейнерами, обязательно систему контроля версий Git, Ansible в качестве системы управления конфигурациями, ну и Jenkins, как основной инструмент непрерывной интеграции ПО.

Кроме того, надо в целом понимать, процесс CI/CD, что такое API, базы данных, ну и, конечно без английского языка ловить нечего.

А теперь вопрос от зрителей. Некий Юрий Дудь спрашивает, что там по зарплатам?  

Тут, как это обычно бывает, всё зависит от компаний. Бывает компания нанимает DevOps’сов непосредственно к себе в штат, есть люди, работающие на аутсорсе, но в целом по российскому рынку наблюдается следующая картина:

  • Junior DevOps может рассчитывать на 50-90 000 р.

  • Middle DevOps в среднем 100 000 – 180 000 р.

  • Senior DevOps получает от 200 000 и потолок ограничивается масштабами компании.

Скриншот с сайта hh.ru на момент 08.08.2021
Скриншот с сайта hh.ru на момент 08.08.2021

Требования к знаниям растут соответствующем образом.


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

Спасибо за внимание!

Tags:
Hubs:
Total votes 3: ↑1 and ↓2+1
Comments9

Articles