Курс на Stepik
Обложка курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство» на Stepik
7 990 ₽

Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство 0.000

Открыть на
STEPIK.ORG

Что происходит с сервисом после мержа: как он исполняется, почему встаёт под нагрузкой и как его чинят ночью. Каждое утверждение ты проверяешь замером на стенде с открытыми исходниками — не на слово.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Учеников на курсе 1
Сертификаты, выданные на курсе «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Сертификатов выдано 0
Отзывы о курсе «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Отзывов получено 0
Рейтинг курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Рейтинг курса 0.000
Уроки в курсе «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Количество уроков 70
Тесты в курсе «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Количество квизов 318
Стоимость курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Стоимость курса 7 990 ₽
Обновления курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Обновления курса
Дата публикации курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Дата публикации курса
Последнее обновление курса «Python-бэкенд в проде: профайлеры, наблюдаемость и дежурство»Последнее обновление
Сложность hard

Чему вы научитесь

  • Ставить диагноз по сигналам: сводить график, трейс и профиль в одну проверяемую гипотезу и называть замер, который её отвергнет
  • Объяснять, как исполняется твой сервис: GIL и что его отпускает, event loop против процессов-воркеров, где он считает, а где ждёт
  • Профилировать живой процесс, не останавливая его: снять флеймграф, найти узкое место, показать разницу цифрой до и после
  • Разбирать память процесса: отличать утечку от фрагментации, находить держателя ссылки, считать бюджет памяти и лимит числом
  • Убирать то, что душит event loop: блокирующий вызов, отсутствующий таймаут, неограниченную конкурентность, потерянные фоновые задачи
  • Считать и защищать конфигурацию сервиса: воркеры, пулы, таймауты, лимиты — и останавливать процесс, не теряя начатые запросы
  • Делать сервис наблюдаемым: трейс сквозь async-код, метрики RED и доменные, структурный лог со сквозным идентификатором — и ходить между тремя сигналами, не теряя запрос
  • Работать по логам ночью: довезти их от вывода контейнера до хранилища с поиском, найти причину запросом, собрать дашборд дежурного и алерт, к которому приложено действие
  • Проводить нагрузочный прогон: описать профиль нагрузки, найти точку насыщения и сделать замер «до и после», который выдержит встречные вопросы
  • Эксплуатировать фон в обеих моделях: идемпотентный обработчик, повторы без лавины, мёртвые письма — руками и штатным механизмом брокера, видимость очереди; и потребитель лога, который переживает выкатку: смещения, ребаланс, дренаж, лаг группы
  • Дежурить по хранилищам: PgBouncer и режим пулинга, лаг реплики и переключение, проба восстановления из бэкапа, сигналы Postgres, Redis под давлением
  • Собирать образ, за который отвечаешь: установка по локфайлу, которая падает на расхождении вместо тихого пересчёта версий, посчитанные вес и время старта, аудит дерева и аудит собранного образа — и решение по каждой находке
  • Довозить изменение до артефакта: пайплайн, в котором ворота стоят в порядке цены, тесты без флейков, образ, опознаваемый по digest, а не по тегу, и миграция на живой базе — с пределом ожидания замка
  • Договариваться с кластером за свой процесс: три пробы под три разные болезни, дренаж и срок остановки, requests и limits против OOMKilled и незаметного троттлинга, конфигурация и секреты снаружи образа, выкатка и откат
  • Отрабатывать инцидент от алерта до причины — на чужой поломке и на своей, внесённой в собственный стенд, — писать постмортем без поиска виноватых и защищать свои решения цифрами на прод-ревью и на собеседовании

О курсе

Что происходит с сервисом после мержа: как он исполняется, почему встаёт под нагрузкой и как его чинят ночью. Каждое утверждение ты проверяешь замером на стенде с открытыми исходниками — не на слово.

Для кого этот курс

Курс для тех, чей код уже в проде, но сам прод — чужая территория. Кому сюда: — Python-разработчику с полутора-четырьмя годами коммерческого опыта: пишет сервисы на FastAPI, Django или Flask, ими пользуются живые люди, а выкатывает и смотрит дашборды кто-то другой. — Тому, кто пишет async каждый день и не может объяснить, почему один эндпоинт вешает весь сервис и почему конкурентных запросов много, а упираются они в размер пула. — Тому, кого позвали отвечать за сервис целиком: поставили в ротацию дежурств, отдали задачу «ускорь», повесили тикет про сервис, который перезапускают по крону. — Тому, кто идёт на грейд выше и упирается в вопросы про рантайм и эксплуатацию, а не про фреймворк. — Тому, кто держит прод небольшой командой, где SRE нет, а дежурят те же, кто пишет код.

Начальные требования

Что нужно знать

  • пишешь HTTP-сервис на Python: роутинг, валидация, слои, ORM, миграции, тесты
  • читаешь и пишешь SQL на рабочем уровне
  • пользуешься async и await — синтаксиса достаточно, модель исполнения разбираем здесь
  • Docker и docker compose: соберёшь образ, поднимешь окружение локально
  • git и CI хотя бы как пользователь: пайплайн настроил кто-то другой, ты им пользуешься
  • обязательных курсов-пререквизитов нет. Вход — свой сервис на Python в работе, а не другой курс. Соседние курсы линейки — соседи, а не ступени: если проседают базы, есть Базы данных для бэкенда: PostgreSQL вглубь и карта хранилищ, если архитектура — System design: архитектура бэкенда и межсервисное взаимодействие. Проходить их до этого курса не требуется

Что нужно на машине

  • Docker и docker compose — на них держится вся практика курса
  • стенд лежит в открытом репозитории: github.com/kipyatl0/python-backend-production-lab. Забирается одной командой, доступа ни у кого просить не надо и ждать нечего
  • ноутбук, на котором это поднимется рядом с твоими рабочими контейнерами: сервис, база, Redis, брокеры, метрики и логи. Стенд ступенчатый — сначала минимальный профиль (сервис и база), а тяжёлое поднимается только в том модуле, где оно нужно: стек наблюдаемости, брокер лога, локальный кластер
  • сколько это стоит, замерено: минимальный профиль занимает около 0,2 ГБ памяти и 1,3 ГБ образов, стек наблюдаемости — около 0,9 ГБ памяти и около трёх гигабайт образов. Самый тяжёлый профиль курса — локальный кластер в модуле про Kubernetes, около 1,3 ГБ памяти; профиль разбора инцидента, где рядом работает всё сразу, — около 1,1 ГБ. Мерили на ноутбуке, где Docker получил четыре ядра и четыре гигабайта памяти
  • место на диске под образы и интернет на первое скачивание
  • остальное ставится по ходу: профайлеры, генератор нагрузки, локальный кластер k3d в модуле про Kubernetes

Преподаватели курса

Как проходит обучение

Курс устроен так: сначала механика — что происходит внутри процесса и почему, потом стенд — ты видишь это своими глазами и снимаешь цифру. Пятнадцать модулей, девяносто одна сцена на стенде. Это закрытый учебный стенд с docker compose, профилями по модулям и исходниками Python-сервиса доставки с намеренно вшитыми дефектами. Доступ к нему выдаётся через Telegram-бота. Сцена запускается одной командой.

Три формы практики

  • Сцена на стенде. Поднимаешь профиль, воспроизводишь поломку, снимаешь артефакт: флеймграф, профиль памяти, график, трейс, вывод команды.
  • Квиз по наблюдению. Вопрос ставится по тому, что ты только что увидел, и ответ проверяется по твоим же цифрам, а не по определению из учебника.
  • Проектный шаг. Очередной раздел в твой эксплуатационный пакет: бюджет ответа, расчёт конфигурации, дашборд, runbook, план выкатки, постмортем — а в финале чек-лист, по которому пакет проверяется целиком.

Чем здесь меряется прогресс. Своей цифрой: p99 до правки и после, RSS, который перестал расти, очередь, которая начала разгребаться, ровный график ошибок после того, как ты починил дренаж. Задач с автопроверкой в курсе нет, и это осознанно: заблокированный event loop, утечка под нагрузкой, лаг реплики и выкатка, уронившая p99, не помещаются в грейдер, который запускает функцию в песочнице. Зато свой замер можно принести на планирование, в спор с SRE и на собеседование — зелёную галочку нельзя.

Двойной трек. Всё делается на учебном сервисе, и каждый раздел пакета есть куда перенести — на свой рабочий сервис. Доступа к рабочему проду курс не требует: стенд твой, ронять его можно как угодно и сколько угодно.

Гильдия вайба. У курса есть живое сообщество — в Telegram и в Discord. Это место, где можно показать свой флеймграф, расчёт воркеров, дашборд или постмортем и спросить «я правильно это читаю?»: на работе такого ревью часто просто нет — SRE занят, а тимлид тот самый человек, который ставит тебе грейд. Там же помощь по стенду, разбор чужих инцидентов и поиск тиммейтов. Чем активнее участвуешь, тем больше берёшь от курса.

Что вы получите

  • Эксплуатационный пакет своего сервиса: бюджет ответа, расчёт конфигурации с обоснованием каждого числа, дашборд и алерты, разделы про хранилища и про сборку, runbook на типовые отказы, план выкатки и отката, постмортем — один документ, который несут на работу и на собеседование
  • Закрытый учебный стенд с исходниками Python-сервиса доставки, Postgres с репликой и PgBouncer, Redis, брокерами очереди и лога, метриками, трейсами и логами. Доступ выдаётся через Telegram-бота
  • Свои замеры: флеймграфы, профили памяти, нагрузочные прогоны «до и после» — с цифрами, которые ты можешь объяснить и защитить
  • Чек-лист прод-готовности и опыт прохода по нему: список вопросов, который задают сведённому пакету целиком, а не каждой записи по отдельности — и находит то, что внутри отдельных записей не видно
  • Инцидент, разобранный руками: от алерта до причины, с митигацией, откатом и постмортемом без поиска виноватых — плюс второй, который ты внёс в свой стенд сам и отработал по своей записи
  • Пройденный руками прод-стек: py-spy и memray, OpenTelemetry, Prometheus и Grafana, логи в Loki с поиском, PgBouncer и реплика, очередь с воркерами и потребитель лога, сборка по локфайлу и аудит зависимостей, CI-пайплайн, локальный кластер
  • Ответы на вопросы про рантайм и эксплуатацию — по своим замерам и своим решениям, а не по чужой статье
  • Сообщество «Гильдия вайба», которое остаётся и после курса: код-ревью, помощь и люди с таким же прод-опытом

Нагрузка

10-15 часов в неделю

Расскажите о курсе друзьям