ВИДЕОКУРС: 3 МЕСЯЦА
Научим писать автоматизацию:
Docker, Gitlab, Prometheus, K8S и др.

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

Что будет на курсе
Не будет
Программа
Чтобы на курсе всё было понятно, должна быть определенная база знаний: входные требования.
№1: Основы синтаксиса и структур в Python
Открытие темы и встреча: 31 января.
Зачем: научиться понимать логику программ на Python и не только, а так же писать простые программы - важнейшая задача. "Самое то", если вы не знакомы с синтаксисом Python.

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

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

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

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

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

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

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

    Встречаемся, чтобы обсудить волнующие вопросы участников курса.
      №9: Юнит-тестирование своего приложения
      Открытие темы: 28 марта.
      Зачем: иногда лучше не иметь никакого кода, чем код, который работает нестабильно. Для того, чтобы не бояться сломать свой код нужно писать тесты.

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

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

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

      • После курса у вас останется проект на гите: можете автоматизировать рабочую задачу или сделать один из предложенных вариантов. Все итоговые проекты, выполненные в срок, получат ревью от спикера.
      • Готовый проект можно использовать в качестве кейса для портфолио и показывать при трудоустройстве.


      Чтобы на курсе всё было понятно, должна быть определенная база знаний.
      Входные требования
      — Базовые навыки администрирования Linux (взаимодействие с процессами, файлами, использование прикладных протоколов передачи данных).
      — Опыт работы с git.
      — Знать Docker на базовом уровне и уметь запускать его на своей машине.
      — Понимание предназначения 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
      Вебинар
      21.12.21 в 18:00 спикер курса Антон Рязанцев проведёт вебинар «Chatops c Errbot на Python».

      Откроете новый дивный мир мессенджеров для выполнения задач DevOps.

      Записаться на бесплатный вебинар по Python
      Пришлём письмо с трансляцией и напомним за день до проведения
      «Я согласен(на) с Политикой Конфиденциальности Слёрм и предоставляю Согласие на обработку персональных данных»
      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 часа. В качестве бонуса увеличилась лояльность клиентов, ведь теперь их запросы обрабатывались в считанные секунды.
      Денис Наумов
      R&D - архитектор, Слёрм, ISPsystem, ex Grid Dynamics
      — более 5 лет в анализе данных и разработке на Python;
      — в качестве DataOps развивает аналитические инфраструктуры и управляет потоками данных;
      — строит системы реагирования на триггерные события во взаимодействии пользователя с продуктами;
      — отвечал за CI/CD аналитических сервисов и ML моделей;
      — разрабатывал крупные модули в B2B продуктах.
      — более 3 лет в разработке и тестировании на Python;
      — разрабатывает фреймворки для тестирования;
      —отвечал за CI в продуктовой команде;
      — участвовал в разработке backend для веб-приложений.
      Антон Рязанцев
      Sr. Software engineer in Test, Auriga, ex ISPsystem

      Тарифы

      Что входит в тариф
      Standart
      Premium
      Vip
      Доступ к урокам
      Онлайн-встречи
      Чат потока
      С кураторами и ревьюерами
      Со спикерами
      Гарантированная проверка домашних заданий
      Проверяют ревьюеры при своевременной сдаче заданий: 2 недели от открытия темы
      Проверяют спикеры при сдаче заданий до окончания потока –
      29 апреля
      Дополнительная встреча группы со спикером
      Цена
      35 000 ₽
      50 000 ₽
      100 000 ₽

      Тарифы

      Standart
      Получаете доступ к урокам и онлайн-встречам.
      35 000
      Premium
      Получаете доступ к урокам и онлайн-встречам. Общаетесь в чате потока с кураторами и ревьюерами. Домашние задания гарантированно проверяются ревьюерами при своевременной сдаче: 2 недели от открытия темы.
      50 000
      Vip
      Получаете доступ к урокам и онлайн-встречам. Общаетесь в чате потока со спикерами. Домашние задания гарантированно проверяются спикерами при сдаче до окончания потока – 29 апреля. Будет дополнительная встреча группы со спикерами.
      100 000
      Заявка на консультацию по курсу
      «Я согласен(на) с Политикой Конфиденциальности Слёрм и предоставляю Согласие на обработку персональных данных»