Ни за что не поверите, но оказывается IT это не только программисты. Индустрия очень стремительно разрастается и кроме разработчиков существуют project manager’ы, бизнес-аналитики, product owner’ы, scrum-мастера, тестировщики и DevOps’ы. Последние двое тесно связаны с программистами и принимают непосредственное участие в разработке ПО. К тестировщикам мы ещё вернёмся позже, а сегодня же попробуем разобраться, что скрывается за загадочным названием DevOps и как это всё связано с нашим любимым языком программирования Python.
Источник: 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
Переходим к общим знаниям и технологиям. Я приведу здесь необходимый минимальный набор, потому что сами понимаете, в 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’сов непосредственно к себе в штат, есть люди, работающие на аутсорсе, но в целом по российскому рынку наблюдается следующая картина:
Скриншот с сайта hh.ru на момент 08.08.2021
Требования к знаниям растут соответствующем образом.
Безусловно знать надо много, изучать придётся ещё больше, но это справедливо для абсолютно любой профессиональной деятельно. Если вы любите работать с технологиями и хотите получать солидные деньги, но при этом перспектива писать код по 8 часов в день вас не прельщает, или вы уже работаете системным администратором, но хотите чего-то больше, то DevOps это отличный вариант для устройства успешной карьеры.
Спасибо за внимание!
Предположим программист написал код программы, всё здорово. Однако, просто файлика с исходным кодом недостаточно, чтобы люди могли пользоваться программой. Она должна быть загружена на сервер, этот сервер (возможно облачный) должен быть определённым образом настроен, должна быть установлена база данных, прикручены утилиты и необходимые технологии, которые необходимы нашему файлику с кодом. При этом, если запущенный сервер по какой-то причине вырубится, его надо запустить заново в максимально кратчайшие сроки, потому что пользователи не смогут работать с программкой, а бизнес начнёт терять деньги.
Кроме того, было бы круто, если команда программистов написала новый кусочек кода, этот кусочек «сам» сразу протестировался, и, если с ним всё хорошо, автоматически добавился в рабочий проект. Некоторая автоматическая проверка, доставка и интеграция кода (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
Переходим к общим знаниям и технологиям. Я приведу здесь необходимый минимальный набор, потому что сами понимаете, в 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 и потолок ограничивается масштабами компании.
Требования к знаниям растут соответствующем образом.
Безусловно знать надо много, изучать придётся ещё больше, но это справедливо для абсолютно любой профессиональной деятельно. Если вы любите работать с технологиями и хотите получать солидные деньги, но при этом перспектива писать код по 8 часов в день вас не прельщает, или вы уже работаете системным администратором, но хотите чего-то больше, то DevOps это отличный вариант для устройства успешной карьеры.
Спасибо за внимание!
Про DevOps для тех, кто изучает Python
Ни за что не поверите, но оказывается IT это не только программисты. Индустрия очень стремительно разрастается и кроме разработчиков существуют project manager’ы, бизнес-аналитики, product owner’ы,...
habr.com