Бесплатный курс «Разработчик, или от Мидла до Сеньора», старт 8 ноября
Close
ВИДЕОКУРС: 3 МЕСЯЦА
Научим писать автоматизацию:
Docker, Gitlab, Prometheus, K8S и др.

Python для инженеров

Денис Наумов
R&D - архитектор, Слёрм, ISPsystem, ex Grid Dynamics
— более 5 лет в анализе данных и разработке на Python;
— в качестве DataOps развивает аналитические инфраструктуры и управляет потоками данных;
— строит системы реагирования на триггерные события во взаимодействии пользователя с продуктами;
— отвечал за CI/CD аналитических сервисов и ML моделей;
— разрабатывал крупные модули в B2B продуктах.
Что будет на курсе
Не будет
Программа
31 января 2022
31 января 2022
Основы синтаксиса и структур в Python
Тема откроется заранее, чтобы вы успели с ней ознакомиться до 19.00, затем состоится онлайн установочная встреча.

Зачем: научиться понимать логику программ на Python и не только, а так же писать простые программы - важнейшая задача. "Самое то", если вы не знакомы с синтаксисом Python

  • Типы данных и переменные, мутабельные/иммутабельные и простые/составные типы данных, приемы отладки
  • Условный оператор - логические операторы, простые условия, вложенные условия и замена оператора switch
  • Базовые циклы - циклы while и for, итераторы, прерывания циклов
  • Функции, методы строк, списков и словарей
  • Генерация и обработка исключений
  • Практика: набор небольших микрозаданий по каждому уроку
7 февраля
7 февраля
Улучшенное владение Python: оптимизации и ООП
Зачем: Освоим особенности Python - именно за их счет он так прост и практичен. Также раскроем значение тех самых трех букв (мы про ООП) без академической теории и с понятным предназначением.

  • Продвинутая работа с циклами - оператор yield и генераторы, инсайты о циклах в Python (оператор else в цикле, оптимизации циклов comprehensions, etc.)
  • Специальные типы структур (frozendict, defaultdict, etc.)
  • Базовые понятия ООП: классы, экземпляры классов, инкапсуляция, наследование и полиморфизм
  • Создание контекстных менеджеров для своих типов (конструкция with)
  • Практика: набор небольших микрозаданий по каждому уроку
  • Продвинутая практика: аудит использования услуг. У CTO появилось подозрение, что некоторые услуги и сервисы уже не используются командами. Проблема заключается в том, что модуль мониторинга используемых услуг не обновлялся последние десять лет: он не может выгрузить агрегированные данные, да и формат возвращаемых значений не соответствует общепринятым стандартам. Вы были избраны, чтобы извлечь снятые показатели, агрегировать их по типу и команде и предоставить данную информацию CTO для первоначальной оценки масштабов проблем
    14 февраля
    14 февраля
    Подключения по сети
    Зачем: Практически каждый сервис имеет интерфейс для подключения по какому-либо сетевому протоколу. А без подключения невозможно взаимодействие, к счастью в экосистеме Python найдутся модули-клиенты практически для любых протоколов.

    1. Пакет pip и установка сторонних модулей
    2. Модуль Paramiko для выполнения команд по ssh
    3. Модуль requests для выполнения HTTP запросов
    4. Обзор модулей для работы с базами данных и брокерами сообщений.
    5. Практика: Практика: Команда разработки внедряет уже не новую методологию: Допустил возникновение алерта - получи задачу. Аналитическая подсистема ищет только отборные ошибки и складывает сообщения о них в брокер сообщений Kafka. Ваша задача завершить цикл возврата багов разработчикам: ваш консьюмер должен автоматически создавать задачи с нужным описанием и приоритетом в Trello.
      21 февраля
      21 февраля
      Работа с текстом в различных форматах
      Зачем: Подключение к сервису - только половина дела. Другая половина это обмен информацией. А информация зачастую представляет собой набор текстовых символов в определенном формате. Раскодировать и закодировать помогут модули. Информация не нужна вся целиком? Извлечь важное, отбросив остальное помогут регулярные выражения.

      • Модуль re и регулярные выражения
      • Модули работы с данными в разных форматах: separated values, json, yaml, xml
      • Использование аргументов командной строки: модуль argparse
      • Практика: создание источника данных об использовании услуг
        В ходе аудита использования услуг вы выявили важную для бизнеса информацию, заинтересовался даже CEO. Было принято решение проанализировать потерянные деньги и больше не допускать таких ситуаций. Для этого нужно дать аналитикам инструмент получения данных, чтобы они подготовили отчеты. Проблема заключается в том, что модуль мониторинга возвращает лимиты по услугам по отдельному запросу в форматах yaml, а цены за услуги возвращаются биллинговой системой в формате xml. Необходимо срастить данные о текущей загрузке с лимитами и ценами. Агрегированную информацию отдел аналитики запросил в формате JSON с возможностью указать интервал времени и шаг агрегации
      28 февраля
      28 февраля
      Взаимодействие с операционной системой
      Зачем: Важность взаимодействия с операционной системой не нужно объяснять дополнительно. Как подружить её с Python - в этом уроке.

      • Чтение и запись файлов.
      • Модуль os - чтение environment variables, работа с директориями и правами, работа с процессами
      • Модуль subprocess для интерактивного взаимодействия с процессами
      • Практика: автоматическое предоставление доступов к серверам
        В ходе кампании по отказу от неиспользуемых услуг возникла курьезная ситуация: сервер продуктовой команды отключили, но инфраструктурная команда периодически использовала его в качестве хоста для стейджинга. Выяснилось, что продуктовая команда не использовала его потому что периодически кто-то перезаписывал их настройки своими. Было решено, что теперь ресурс будет закрепляться только за членами одной команды, а избежать ошибок поможет автоматика. Вам, как заварившему эту кашу, необходимо написать агент, который будет периодически опрашивать систему управления правами и вносить изменения в конфигурации прав внутри установленных сервисов и по необходимости давать сервисам команду перечитать конфигурации
        9 марта
        9 марта
        K8S operator на Python (live-coding stream)
        Зачем: расширим возможности K8S под свои задачи.

        Встреча пройдет онлайн в 19.00.
        14 марта
        14 марта
        Пишем свой модуль для Ansible
        Зачем: Ansible - мощная система управления конфигурациями, да еще и с возможностью расширения собственными модулями. Какое совпадение, что она сама и большинство модулей написаны на Python.

        • Написание своих модулей для ansible
        • Практика: написание модуля управления правами
          Давным-давно, в далёкой-далёкой галактике вы уже писали агент для выдачи прав к определенным сервисам. Пришло время поменять pull на push и в этом поможет ansible. Все что нужно - лишь модуль
            21 марта
            21 марта
            Создание и кейсы использования своего API
            Зачем: подготовка кода к деплою - одна из важнейших задач. Сделать этот процесс гибче и удобнее помогают собственные скрипты для stage пайплайнов.

            • Создание REST API на Flask
            • Создание своего prometheus exporter с Prometheus Python Client и Flask
            • Практика: выгрузка данных в стороннюю систему мониторинга.
              Затраты на неиспользуемое оборудование превысили даже пессимистичные прогнозы. Теперь у команды инженеров есть еще одна зона ответственности - мониторинг неиспользуемых услуг. Для этого вам необходимо периодически опрашивать биллинговую систему через ваш скрипт и передавать данные в Prometheus. Формат получаемых данных все еще не подходит. Вам необходимо реализовать коннектор. А заодно и написать эндпоинт, чтобы отдел аналитики всегда имел под рукой актуальную информацию в формате JSON
            25 марта
            25 марта
            АМА-сессия + неформальная встреча
            В 19.00 встретимся онлайн, чтобы обсудить волнующие студентов вопросы.
            28 марта
            28 марта
            Юнит-тестирование своего приложения
            Зачем: иногда лучше не иметь никакого кода, чем код, который работает нестабильно. Для того, чтобы не бояться сломать свой код нужно писать тесты.

            • Виды тестов: unit, интеграционные и end-to-end
            • Обзор модуля pyhamcrest и его матчеров
            • Архитектура и возможности pytest
            • Использование pytest и pyhamcrest для написания юнит-тестов
            • Практика: написание тестов при помощи pytest и pyhamcrest для вашего API.

            4 апреля
            4 апреля
            Взаимодействие с CVS и DevOps системами
            • Использование сторонних модулей на примере интеграции в пайплайны Gitlab
            • Использование pygit для получения информации об изменениях в коде
            • Практика: генерация change log из коммитов
              Ваши решения настолько понравились команде инженеров, что они вдохновились ими и начали писать свои. Только вот описания к релизам сделать всегда забывают. Для этого командой было принято решение внедрить commit conventions и генерировать ченджлоги прямо из коммитов при слиянии dev-бранча с релизным, а если название коммита не соответствует commit conventions - не допускать merge-request до merge
                11 апреля
                11 апреля
                Chatops с Errbot на Python
                Зачем: Основные проблемы бизнеса не в производительности приложений и даже не в возникающих в коде ошибках. Самые серьезные проблемы возникают когда коммуникация сотрудников происходит неэффективно. Chatops является одним из способов решения этой проблемы.

                • Концепция Chatops: какие проблемы решает внедрение Chatops?
                • Фреймворк Errbot: установка, создание базового шаблон плагина, конфигурирование и запуск.
                • Фреймворк Errbot: создание своего плагина для Chatops с различными вариантами обработки сообщений.
                18 апреля
                18 апреля
                Итоговый проект
                Начинаем работать над собственным проектом.
                29 апреля
                29 апреля
                Дедлайн ревью итогового проекта
                Чтобы получить сертификат курса, нужно сдать все домашки, а особенно итоговый проект до оговоренной даты.

                В 19.00 Открытая защита финального проекта (для желающих).
                Поток стартует 31 января 2022 года. Присоединяйся и начинай осваивать Python для инженерных задач.
                После курса у вас останется проект на гите: придумайте свой или сделайте один из предложенных вариантов.

                Спикер даст всем студентам обратную связь.

                Готовый проект можно использовать в качестве кейса для портфолио и показывать при трудоустройстве.

                Итоговый проект

                Требования
                — Базовые навыки администрирования Linux (взаимодействие с процессами, файлами, использование прикладных протоколов передачи данных).
                — Опыт работы с git.
                — Понимание предназначения Ansible и модулей Ansible.
                — Иметь представления о предназначении Kubernetes и операторов Kubernetes.
                — Желательно, опыт работы с GitLab и GitLab CI.
                — Желательно, базовые навыки автоматизации на Bash.


                Нескончаемое стремление автоматизировать ручной труд!
                Чтобы вам на курсе все было понятно, у вас должна быть определенная база знаний.
                Примеры, что можно автоматизировать с Python
                Владимир Гурьянов
                Инженер Southbridge
                Данил Бахаев
                DevOps-инженер в X5 Group
                Владимир Гурьянов
                Инженер Southbridge
                Артем Чекунов
                Senior DevOps Engineer в Chartboost, ex Liberty Global
                Артем Чекунов
                Senior DevOps Engineer в Chartboost, ex Liberty Global
                Артем Чекунов
                Senior DevOps Engineer в Chartboost, ex Liberty Global
                Senior DevOps Engineer в Chartboost, ex Liberty Global – Артем Чекунов
                Инструмент для анализа и отключения холостых ресурсов
                Компания активно пользуется облаком и тратит 2 миллиона рублей в месяц на инфраструктуру в AWS. Можно написать инструмент на Python, который будет анализировать и отключать "холостые ресурсы". Это позволит сократить расходы на 40-50% или около 12 миллионов рублей в год.
                Senior DevOps Engineer в Chartboost, ex Liberty Global – Артем Чекунов
                Prometheus-exporter для метрик в кастомном формате
                У компании много экзотических сервисов, которые необходимо мониторить. Можно написать несколько Prometheus-exporter'ов на Python, что позволит эффективнее мониторить приложения и свести к минимуму простой платформы. Актуально для Fintech, ADtech, крупных медийных, социальных и сервисных площадок.
                Senior DevOps Engineer в Chartboost, ex Liberty Global – Артем Чекунов
                Генерация status page с информацией о развернутых сервисах
                Часто документация о серверах ведётся в Jira. Иметь единый источник информации хорошо, но переносить серверы из Jira куда-либо - неудобно. Пример с Ansible. Можно держать честный инвентори в Ansible-репозитории и по завершении деплоя обновлять страницу в Jira, записывая какие сервера для каких целей используются. Или можно с помощью Python генерировать status page - писать, какие версии каких сервисов сейчас задеплоены в каждом environment.
                Senior DevOps Engineer в Chartboost, ex Liberty Global – Артем Чекунов
                Сбор статистики о потреблении ресурсов в облаке и bare-metal
                У меня был случай, когда я писал сводную систему chef-opscode + AWS + webazilla.com, чтобы понимать за что и сколько мы платим. Chef в качестве глобального инвентори + базовая статистика по загрузке системы + провайдерские API.
                Инженер Southbridge – Владимир Гурьянов
                Python lint-тестов для Ansible
                и Kubernetes
                В практике был опыт написания на Python lint-тестов для ansible и kubernetes. Они позволяли проверять на наличие обязательных параметров, которые были стандартными в рамках компании. Без автоматизации проверяли руками и глазами, что конечно же намного дольше и неэффективней.
                Инженер Southbridge – Владимир Гурьянов
                Автоматизация создания задач об инцидентах в таск-трекере
                В Southbridge 4 года назад была написана прослойка между системой мониторинга и внутренним таск-менеджером. Скрипт получает сырые алерты от zabbix, обрабатывает их в соответствии с определенной логикой и создает конкретную задачу в трекере. Дежурные специалисты оперативно получают точную информацию и не тратят время на выяснение "очага возгорания" среди сотен клиентских серверов.
                DevOps инженера в X5 Retail Group – Данил Бахаев
                Автоматизация изменения конфигурации сервера
                На прошлой работе автоматизировал рутинные задачи для саппорта. Раньше приходил клиент и писал запрос на изменение конфигурации (напр., увеличить диска на гипервизоре и/или диск внутри виртуальной машины), специалист техподдержки шел и руками менял конфигурацию, после этого вносил изменения в биллинг. Это занимало в среднем 5 минут на одного клиента, аналогичных задач было 7-10 штук в день. После автоматизации процесса с помощью Python затраты на задачу сократились до 15 секунд. Экономия в месяц — примерно 23 часа. В качестве бонуса увеличилась лояльность клиентов, ведь теперь их запросы обрабатывались в считанные секунды.
                Большая статья Артема Чекунова, Senior DevOps Engineer в Chartboost о том, как он применяет Python в своей практике. Нестандартно, но очень интересно.
                Три кейса использования Python для DevOps
                Стоимость
                40 000 ₽
                Старт 31 января 2022, обучение 3 месяца
                Начать учиться
                10 000 ₽/мес
                Рассрочка на 4 месяца, без переплат. Первая оплата через месяц.
                Оплатить как юр.лицо
                Мы свяжемся с вами, ответим на вопросы и отправим счёт