Чему вы научитесь
- Проектировать контракт REST API до написания кода: ресурсы, форматы, ошибки, правила совместимости
- Собирать Flask-приложение фабрикой с конфигурацией по окружениям и разделением на слои
- Описывать валидацию входа и формирование ответа схемами Pydantic 2
- Работать с PostgreSQL через SQLAlchemy 2.0: модели, ограничения, индексы, транзакции
- Писать миграции, применимые к непустой базе без длительных блокировок
- Выносить бизнес-логику в сервисный слой и доступ к данным в репозитории
- Реализовывать аутентификацию по токенам, роли, права и доступ к конкретному объекту
- Обеспечивать идемпотентность операций и корректное поведение при конкурентном доступе
- Разделять доменные и инфраструктурные ошибки и приводить все ответы к единому формату
- Выносить отложенную работу в очередь задач и писать задачи, безопасные при повторе
- Кешировать данные с осознанными ключами, сроками жизни и сбросом
- Настраивать таймауты, повторы и размыкатель для обращений к внешним сервисам
- Писать тесты четырёх уровней: правила домена, сценарии, HTTP, сквозные
- Порождать документацию OpenAPI из кода и проверять совместимость API автоматически
- Собирать компактный Docker-образ, настраивать Gunicorn и разворачивать сервис на VPS
- Планировать релизы так, чтобы откат кода был безопасным
О курсе
Flask даёт HTTP-слой и останавливается. Работа с базой, валидация входных данных, аутентификация, права доступа, фоновые задачи, кеширование, документация — всё это backend-разработчик выбирает и собирает сам. Именно в этих решениях и состоит содержание курса.
Материал построен вокруг одного проекта — Depot, API сети пунктов проката профессионального оборудования. Домен выбран так, чтобы в нём естественно появились задачи, ради которых существует backend: конкурентный доступ к ресурсу при бронировании, права на конкретный объект, деньги и счета, отложенные операции, обращение к ненадёжному внешнему сервису.
Репозиторий проекта можно клонировать здесь.
Как устроен курс
Каждый слой появляется в ответ на конкретную задачу, а не потому, что «так принято». Сначала один обработчик отдаёт каталог. Затем в нём заводится дублирование — появляются blueprints. Затем логика бронирования перестаёт помещаться в обработчик — появляется сервисный слой. Затем тесты начинают требовать базы на каждый случай — появляются репозитории.
Такой порядок даёт понимание, зачем нужен каждый слой. Готовый шаблон проекта этого понимания не даёт.
Что разбирается подробно
Контракт API: формат ответов и ошибок, коды состояния, пагинация и сортировка, правила совместимости и версионирование.
Данные: SQLAlchemy 2.0, ограничения и индексы, транзакции и уровни изоляции, миграции, применимые к непустой базе без блокировок.
Архитектура: фабрика приложения, схемы валидации, сервисный слой, репозитории, единица работы, внедрение зависимостей без контейнера.
Безопасность: хеширование паролей, пара токенов с ротацией, роли и права, доступ к конкретному объекту, правила видимости в списках.
Устойчивость: разделение доменных и инфраструктурных ошибок, таймауты, повторы, идемпотентность, размыкатель, деградация вместо отказа.
Эксплуатация: структурные логи, метрики, проверки живости и готовности, Docker, Gunicorn, Compose, деплой на обычный VPS и безопасный откат.
Отдельное внимание — задачам, которые обычно узнают на инцидентах
Почему проверка пересечения интервалов в коде не спасает от гонки и что даёт гарантию. Что произойдёт при повторе запроса после таймаута. Почему доменная ошибка не должна возвращать 5xx и что при этом происходит с мониторингом. Как изменить схему базы без простоя и почему план отката — это совместимость, а не обратная миграция. Что случится с сервисом при отказе каждой из его зависимостей.
Чего в курсе нет
Пользовательского интерфейса, интеграции с реальным платёжным провайдером (используется учебная заглушка), Kubernetes, микросервисной декомпозиции, полнотекстового поиска на отдельном движке. Каждая из этих тем требует отдельного изучения и не добавляет понимания backend как такового.
Курс не обучает Python с нуля: главы 3–5 повторяют язык в объёме, нужном для backend, но предполагают, что программировать вы уже умеете.
Для кого этот курс
Начальные требования
Знание основ программирования: переменные, функции, условия, циклы, работа с исключениями. Опыт на любом языке подойдёт — материал по Python дан в объёме, нужном для backend.
Базовое представление о HTTP: что такое запрос, ответ, метод и код состояния.
Знакомство с SQL на уровне select, insert, join. Проектирование схемы разбирается в курсе.
Умение работать в терминале: запуск команд, переменные окружения.
Из программного обеспечения: Python 3.13 или новее (курс написан под 3.15, всё существенное работает и на предыдущих версиях), Docker и Docker Compose для PostgreSQL и Redis, любой редактор кода, git.
Оборудование: любая машина, на которой запускается Docker. Отдельный сервер не нужен: развёртывание разбирается на примере, а проверить его можно на локальном стенде.
Программа курса
В курс входят
- 127 уроков
- 105 тестов
Наши преподаватели
Сертификат
Что вы получаете
- 127 текстовых уроков
- 105 задач с выбором ответа и разбором каждого варианта
- Сквозной проект Depot: API сети пунктов проката, который собирается по ходу курса
- Практическое задание и вопросы для самопроверки в каждом уроке
- Готовые к использованию решения: единый формат ошибок, фабрика приложения, единица работы, обвязка фоновых задач, проверки границ слоёв
- Проверочные списки: перед выкладкой, при проектировании эндпоинта, при написании задачи, при разборе инцидента
- Набор скриптов проекта: развёртывание, откат, резервное копирование, проверка архитектуры
- Инструкция по эксплуатации: что делать, когда сервис не отвечает, растёт доля ошибок или очередь задач