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

Kate

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

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

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

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

81c6a5f017b5e70893235efba5746277.png

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

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




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

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

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

2e22be83971ab0d70d9dc3c11245e232.jpeg

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, базы данных, ну и, конечно без английского языка ловить нечего.

oxnwohxd3g1qpbpx826kxziyjko.jpeg

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


Тут, как это обычно бывает, всё зависит от компаний. Бывает компания нанимает 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 это отличный вариант для устройства успешной карьеры.

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

 
Сверху