Экономящая 23 часа в месяц и повышающая лояльность клиентов за быстроту обработки запросов
Кейс от Данила Бахаева, DevOps-инженер в X5 Group
Раньше специалист техподдержки руками менял конфигурацию по запросу клиентов и вносил изменения в биллинг. Это занимало ~5 минут, а таких задач было 7-10 в день.
После автоматизации с помощью Python затраты на задачу сократились до 15 секунд.
Автоматизация изменения конфигурации сервера
Что смогли автоматизировать с Python наши студенты
Позволяющий сократить расходы на 40-50% или около 12 миллионов рублей в год.
Кейс от Артема Чекунова Senior DevOps Engineer в Chartboost
Компания активно пользуется облаком и тратит 2 миллиона рублей в месяц на инфраструктуру в AWS.
Можно написать инструмент на Python, который будет анализировать и отключать «холостые ресурсы».
Инструмент для анализа и отключения холостых ресурсов
Сокращающий рутину
Кейс от Владимира Гурьянова, Архитектора Флант
Написали на Python lint-тесты для ansible и kubernetes. Они позволяли проверять на наличие обязательных параметров, которые были стандартными в рамках компании.
До этого проверяли руками и глазами, что конечно же намного дольше и неэффективней.
Python lint-тест для Ansible и Kubernetes
Сводящий к минимуму простой платформы
Кейс от Артема Чекунова Senior DevOps Engineer в Chartboost
У компании было много экзотических сервисов, которые необходимо мониторить.
Мы написали несколько Prometheus-exporter'ов на Python, что позволило эффективнее мониторить приложения (актуально для Fintech, ADtech, крупных медийных и сервисных площадок).
Prometheus-exporter для метрик в кастомном формате
Что можно автоматизировать с Python
Инструмент для анализа и отключения холостых ресурсов
Компания активно пользуется облаком и тратит 2 миллиона рублей в месяц на инфраструктуру в AWS.
Можно написать инструмент на Python, который будет анализировать и отключать «холостые ресурсы». Это позволит сократить расходы на 40-50% или около 12 миллионов рублей в год.
Артем Чекунов Senior DevOps Engineer в Chartboost
Автоматизация изменения конфигурации сервера
Раньше специалист техподдержки руками менял конфигурацию по запросу клиентов и вносил изменения в биллинг. Это занимало ~5 минут, аналогичных задач было 7-10 в день.
После автоматизации с помощью Python затраты на задачу сократились до 15 секунд. Это экономит в среднем 23 часа в месяц и повышает лояльность клиентов за быстроту обработки запросов
Кейс от Данила Бахаева, DevOps-инженер в X5 Group
Python lint-тест для Ansible и Kubernetes
Написали на Python lint-тесты для ansible и kubernetes. Они позволяли проверять на наличие обязательных параметров, которые были стандартными в рамках компании.
До этого проверяли руками и глазами, что конечно же намного дольше и неэффективней.
Кейс от Владимира Гурьянова, Архитектора Флант
Prometheus-exporter для метрик в кастомном формате
У компании было много экзотических сервисов, которые необходимо мониторить.
Мы написали несколько Prometheus-exporter'ов на Python, что позволило эффективнее мониторить приложения и свести к минимуму простой платформы (актуально для Fintech, ADtech, крупных медийных и сервисных площадок).
Кейс от Артема Чекунова Senior DevOps Engineer в Chartboost
Чтобы на курсе всё было понятно, должна быть определенная база знаний.
Входные требования
— Базовые навыки администрирования Linux (взаимодействие с процессами, файлами, использование прикладных протоколов передачи данных — у нас есть бесплатный курс). — Опыт работы с git (у нас есть бесплатный курс). — Знать Docker на базовом уровне и уметь запускать его на своей машине. — Понимание предназначения Ansible и модулей Ansible. — Иметь представления о предназначении Kubernetes и операторов Kubernetes. — Желательно, опыт работы с GitLab и GitLab CI. — Желательно, базовые навыки автоматизации на Bash.
Зачем: научиться понимать логику программ на Python, а так же писать простые программы — важнейшая задача. «Самое то», если вы не знакомы с синтаксисом Python.
— Типы данных и переменные, мутабельные/иммутабельные и простые/составные типы данных, приемы отладки. — Условный оператор — логические операторы, простые условия, вложенные условия и замена оператора switch. — Базовые циклы — циклы while и for, итераторы, прерывания циклов. — Функции, методы строк, списков и словарей. — Генерация и обработка исключений.
Практика: набор небольших микрозаданий по каждому уроку.
Зачем: научиться понимать логику программ на Python, а так же писать простые программы — важнейшая задача. «Самое то», если вы не знакомы с синтаксисом Python.
— Типы данных и переменные, мутабельные/иммутабельные и простые/составные типы данных, приемы отладки. — Условный оператор — логические операторы, простые условия, вложенные условия и замена оператора switch. — Базовые циклы — циклы while и for, итераторы, прерывания циклов. — Функции, методы строк, списков и словарей. — Генерация и обработка исключений.
Практика: набор небольших микрозаданий по каждому уроку.
Зачем: Освоим особенности Python — именно за их счет он так прост и практичен. Также раскроем значение тех самых трех букв (мы про ООП) без академической теории и с понятным предназначением.
— Продвинутая работа с циклами — оператор yield и генераторы, инсайты о циклах в Python, оператор else в цикле, оптимизации циклов comprehensions, etc. — Специальные типы структур: frozendict, defaultdict, etc. — Базовые понятия ООП: классы, экземпляры классов, инкапсуляция, наследование и полиморфизм. — Создание контекстных менеджеров для своих типов: конструкция with.
Практика: набор небольших микрозаданий по каждому уроку. Продвинутая практика: аудит использования услуг. У CTO появилось подозрение, что некоторые услуги и сервисы уже не используются командами. Проблема заключается в том, что модуль мониторинга используемых услуг не обновлялся последние десять лет: он не может выгрузить агрегированные данные, да и формат возвращаемых значений не соответствует общепринятым стандартам. Вы были избраны, чтобы извлечь снятые показатели, агрегировать их по типу и команде и предоставить данную информацию CTO для первоначальной оценки масштабов проблемы.
Зачем: Практически каждый сервис имеет интерфейс для подключения по какому-либо сетевому протоколу. А без подключения невозможно взаимодействие. К счастью, в экосистеме Python найдутся модули-клиенты практически для любых протоколов.
— Пакет pip и установка сторонних модулей. — Модуль Paramiko для выполнения команд по ssh. — Модуль requests для выполнения HTTP запросов. — Обзор модулей для работы с базами данных и брокерами сообщений.
Практика. Команда разработки внедряет уже не новую методологию: Допустил возникновение алерта — получи задачу. Аналитическая подсистема ищет только отборные ошибки и складывает сообщения о них в брокер сообщений Kafka. Ваша задача завершить цикл возврата багов разработчикам: ваш консьюмер должен автоматически создавать задачи с нужным описанием и приоритетом в Trello.
Зачем: Подключение к сервису — только половина дела. Другая половина это обмен информацией. А информация зачастую представляет собой набор текстовых символов в определенном формате. Раскодировать и закодировать помогут модули. Информация не нужна вся целиком? Извлечь важное, отбросив остальное помогут регулярные выражения.
— Модуль re и регулярные выражения. — Модули работы с данными в разных форматах: separated values, json, yaml, xml. — Использование аргументов командной строки: модуль argparse.
Практика: создание источника данных об использовании услуг. В ходе аудита использования услуг вы выявили важную для бизнеса информацию, заинтересовался даже CEO. Было принято решение проанализировать потерянные деньги и больше не допускать таких ситуаций. Для этого нужно дать аналитикам инструмент получения данных, чтобы они подготовили отчеты. Проблема заключается в том, что модуль мониторинга возвращает лимиты по услугам по отдельному запросу в форматах yaml, а цены за услуги возвращаются биллинговой системой в формате xml. Необходимо срастить данные о текущей загрузке с лимитами и ценами. Агрегированную информацию отдел аналитики запросил в формате JSON с возможностью указать интервал времени и шаг агрегации.
Зачем: Важность взаимодействия с операционной системой не нужно объяснять дополнительно. Как подружить её с Python — в этом уроке.
— Чтение и запись файлов. — Модуль os — чтение environment variables, работа с директориями и правами, работа с процессами. — Модуль subprocess для интерактивного взаимодействия с процессами.
Практика: автоматическое предоставление доступов к серверам. В ходе кампании по отказу от неиспользуемых услуг возникла курьезная ситуация: сервер продуктовой команды отключили, но инфраструктурная команда периодически использовала его в качестве хоста для стейджинга. Выяснилось, что продуктовая команда не использовала его потому что периодически кто-то перезаписывал их настройки своими. Было решено, что теперь ресурс будет закрепляться только за членами одной команды, а избежать ошибок поможет автоматика. Вам, как заварившему эту кашу, необходимо написать агент, который будет периодически опрашивать систему управления правами и вносить изменения в конфигурации прав внутри установленных сервисов и по необходимости давать сервисам команду перечитать конфигурации.
Зачем: расширим возможности K8S под свои задачи.
Зачем: Ansible — мощная система управления конфигурациями, да еще и с возможностью расширения собственными модулями. Какое совпадение, что она сама и большинство модулей написаны на Python.
— Написание своих модулей для Ansible.
Практика: написание модуля управления правами. Давным-давно, в далёкой-далёкой галактике вы уже писали агент для выдачи прав к определенным сервисам. Пришло время поменять pull на push и в этом поможет Ansible. Все что нужно — лишь модуль.
Зачем: Подготовка кода к деплою — одна из важнейших задач. Сделать этот процесс гибче и удобнее помогают собственные скрипты для stage пайплайнов.
— Создание REST API на Flask. — Создание своего prometheus exporter с Prometheus Python Client и Flask.
Практика: выгрузка данных в стороннюю систему мониторинга. Затраты на неиспользуемое оборудование превысили даже пессимистичные прогнозы. Теперь у команды инженеров есть еще одна зона ответственности — мониторинг неиспользуемых услуг. Для этого вам необходимо периодически опрашивать биллинговую систему через ваш скрипт и передавать данные в Prometheus. Формат получаемых данных все еще не подходит. Вам необходимо реализовать коннектор. А заодно и написать эндпоинт, чтобы отдел аналитики всегда имел под рукой актуальную информацию в формате JSON.
Зачем: Иногда лучше не иметь никакого кода, чем код, который работает нестабильно. Для того чтобы не бояться сломать свой код, нужно писать тесты.
— Виды тестов: unit, интеграционные и end-to-end. — Обзор модуля pyhamcrest и его матчеров. — Архитектура и возможности pytest. — Использование pytest и pyhamcrest для написания юнит-тестов.
Практика: написание тестов при помощи pytest и pyhamcrest для вашего API.
— Использование сторонних модулей на примере интеграции в пайплайны Gitlab. — Использование pygit для получения информации об изменениях в коде.
Практика: генерация change log из коммитов. Ваши решения настолько понравились команде инженеров, что они вдохновились ими и начали писать свои. Только вот описания к релизам сделать всегда забывают. Для этого командой было принято решение внедрить commit conventions и генерировать ченджлоги прямо из коммитов при слиянии dev-бранча с релизным, а если название коммита не соответствует commit conventions — не допускать merge-request до merge.
Зачем: Основные проблемы бизнеса не в производительности приложений и даже не в возникающих в коде ошибках. Самые серьезные проблемы возникают когда коммуникация сотрудников происходит неэффективно. Chatops является одним из способов решения этой проблемы.
— Концепция Chatops: какие проблемы решает внедрение Chatops? — Фреймворк Errbot: установка, создание базового шаблон плагина, конфигурирование и запуск. — Фреймворк Errbot: создание своего плагина для Chatops с различными вариантами обработки сообщений.
Учите Python командой
С помощью Python компании автоматизируют задачи, которые годами делались вручную.
Что это значит для ваших сотрудников? Они перестают тратить время на рутину и концентрируются на действительно важных задачах, повышая эффективность работы.
Что это значит для вашей компании? Компании перестают тратить деньги на «холостые ресурсы» и начинают эффективнее мониторить приложения, сокращая расходы на 40-50%.
Чем больше команда — тем дешевле обучение
Авторы и спикеры курса
""
Денис Наумов, Techlead, Data Engineer в Skyeng
Сейчас оптимальное время для того, чтобы изучать Python. Уже существует множество библиотек и фреймворков, которые упрощают жизнь инженерам, но все еще есть возможность прикоснуться к основам, не скрытым за множеством слоев абстракций.
{
}
Python продолжает уверенно набирать популярность. Во многом это происходит благодаря его универсальности. На нем можно быстро автоматизировать какую-либо рутинную задачу, написать простую программу. Он проще в освоении, чем большинство других ЯП.
{
}
Антон Рязанцев, Expert Software Developer in Test, Align Technology
{}
;
Отзывы студентов
Ни капельки не сомневаясь, могу назвать его лучшим обучающим курсом, который я видел. Здесь идеально совпали несколько факторов. Очень порадовала направленность курса на инженеров. Рассмотренные тематики и примеры очень хорошо «легли» на канву моей фактической работы. Курс получился в меру теоретическим и в меру практическим.
Видеолекции в сочетании с АМА-сессиями, удобный личный кабинет с конспектами и практическими заданиями — всё это сделало ваш курс крайне интересным и крайне полезным. На вопрос «могли бы вы порекомендовать наш курс друзьям» я бы ответил, что уже рекомендовал и не раз.
Михаил, DevOps в Мегафон
Поступил на курс для систематизации знаний и понимания ООП в python, хотел узнать как взаимодействовать с k8s через python, как написать правильнее exporter для prometheus. Данный курс полностью покрыл все мои ожидания и даже больше, были рассмотрены интересные моменты , лектор объяснял все моменты во время написания кода и главное — логику, чтобы на основе ее можно было сделать что-то свое.
В целом курс мне понравился. Смог реализовать chatops с взаимодействием с yandex cloud api, k8s и gitlab и написал об этом свою первую статью на Хабре. В планах дальше вести по нему работы.
Константин, DevOps в ООО «Вебпрактик»
В целом всё замечательно, темы, рассмотреные в курсе, прям то, что надо для DevOps. Но мне, как новичку в программировании, было сложно поспевать за ходом лекций. Я бы сказал, что крайне важно читать «входные требования» для оценки ваших знаний, чтобы понять, подойдет вам курс или нет.
Хотелось бы больше времени уделить непосредственно Python-у, а только потом переходить к реализации всевозможных кейсов. Но курс отличный, вернусь к нему еще раз, после небольшой практики.
Александр
Курс на 100% оправдал ожидания. Сейчас получается автоматизировать некоторую часть повседневных задач, дальше остаётся только оттачивать приобретённые навыки.
Огромное спасибо авторам курса и ревьюерам за добросовестный труд!
Денис
Крутой курс, много полезной информации, в особенности для новичка-питониста.
Но тут и мидлу будет полезно: было много интересных задач и классный, полезный код-ревью. Спасибо!
Роман
Отзывы студентов
Ни капельки не сомневаясь, могу назвать его лучшим обучающим курсом, который я видел. Здесь идеально совпали несколько факторов. Очень порадовала направленность курса на инженеров. Рассмотренные тематики и примеры очень хорошо «легли» на канву моей фактической работы. Курс получился в меру теоретическим и в меру практическим.
Видеолекции в сочетании с АМА-сессиями, удобный личный кабинет с конспектами и практическими заданиями — всё это сделало ваш курс крайне интересным и крайне полезным. На вопрос «могли бы вы порекомендовать наш курс друзьям» я бы ответил, что уже рекомендовал и не раз.
Михаил, DevOps в Мегафон
Поступил на курс для систематизации знаний и понимания ООП в python, хотел узнать как взаимодействовать с k8s через python, как написать правильнее exporter для prometheus. Данный курс полностью покрыл все мои ожидания и даже больше, были рассмотрены интересные моменты , лектор объяснял все моменты во время написания кода и главное — логику, чтобы на основе ее можно было сделать что-то свое.
В целом курс мне понравился. Смог реализовать chatops с взаимодействием с yandex cloud api, k8s и gitlab и написал об этом свою первую статью на Хабре. В планах дальше вести по нему работы.
Константин, DevOps в ООО «Вебпрактик»
В целом всё замечательно, темы, рассмотреные в курсе, прям то, что надо для DevOps. Но мне, как новичку в программировании, было сложно поспевать за ходом лекций. Я бы сказал, что крайне важно читать «входные требования» для оценки ваших знаний, чтобы понять, подойдет вам курс или нет.
Хотелось бы больше времени уделить непосредственно Python-у, а только потом переходить к реализации всевозможных кейсов. Но курс отличный, вернусь к нему еще раз, после небольшой практики.
Александр
Курс на 100% оправдал ожидания. Сейчас получается автоматизировать некоторую часть повседневных задач, дальше остаётся только оттачивать приобретённые навыки.
Огромное спасибо авторам курса и ревьюерам за добросовестный труд!
Денис
Крутой курс, много полезной информации, в особенности для новичка-питониста.
Но тут и мидлу будет полезно: было много интересных задач и классный, полезный код-ревью. Спасибо!