FastAPI для профессионалов: Онлайн-школа на чистой архитектуре
О чём курс
Илья Перминов на платформе Stepik разбирает проектирование backend-системы для образовательной платформы на базе фреймворка FastAPI с применением чистой архитектуры. В процессе обучения вы разработаете сервис онлайн-школы с JWT-аутентификацией, автоматическими тестами, очередями задач, Docker-раннером для безопасной проверки кода учащихся и отслеживанием учебного прогресса.
О чём курс
Курс рассчитан на разработчиков, которые хотят перейти от создания простых API к проектированию архитектурно сложных backend-систем. Вся разработка строится вокруг принципов Clean Architecture с разделением слоёв приложения. Архитектура проекта изолирует бизнес-правила от внешних интерфейсов и баз данных, что упрощает масштабирование и сопровождение кодовой базы.
Проект разбивается на доменный слой, прикладной слой, инфраструктуру и уровень доставки данных. Вы освоите реализацию сценариев взаимодействия через Use Cases, организацию репозиториев для доступа к данным и паттерн Unit of Work для управления транзакциями. Работа с базой данных выстраивается через SQLAlchemy с миграциями схемы и изоляцией доменных моделей от persistence-слоя.
Архитектурные блоки проекта
Разработка онлайн-школы охватывает создание ключевых компонентов платформы:
- Базовый сервис курсов: сущности курсов, модулей, разделов, лекций, управление ролями пользователей и модель доступа.
- Интерактивные тесты: сущности вопросов с одиночным и множественным выбором, фиксация попыток прохождения, подсчёт баллов, статусов и сохранение прогресса студента.
- Автоматическая проверка кода: домен задач, жизненный цикл проверки решений и сценарии отправки кода.
- Изолированная среда выполнения: worker-процессы, очереди задач и Docker-runner для безопасного исполнения пользовательских скриптов и сбора артефактов проверки.
- Платформенные сценарии: каталог с карточками курсов, фильтрация по темам и уровню сложности, поиск, отзывы, комментарии и профиль пользователя.
- Аналитика и оптимизация: отслеживание сложных вопросов и завершения курсов для авторов и студентов, кеширование контента и настройка индексов в базе данных для ускорения чтения.
Формат и материалы
Материал представлен в текстовом формате и не содержит видеозаписей. Все модули ориентированы на последовательную реализацию кода. Исходный код проекта, создаваемого в ходе работы, размещён в репозитории на GitHub. Проверка решений включает написание unit-тестов, интеграционных и end-to-end тестов, а также ручное тестирование эндпоинтов через документацию OpenAPI.
Программа обучения
- MVP: Обзор проекта, стека и маршрута разработки Clean Architecture на практике
- Структура проекта: каркас, пакеты, стандарты
- Конфигурация и ошибки: фундамент production-подхода
- Сущность Course как бизнес-ядро
- Сущности Modules, Sections и структура курса
- Сущность Lecture и учебный материал
- Сущность User и роли: модель доступа
- Read-сценарии: первые Use Cases
- Write-сценарии: управление контентом через Use Cases
- Контракты слоёв: интерфейсы, границы, ответственность
- Persistence: ORM отдельно, домен отдельно
- Репозитории: доступ к данным
- Unit of Work: транзакции как часть архитектуры
- Миграции базы данных и инфраструктура
- FastAPI как слой доставки
- Эндпоинты чтения
- Эндпоинты управления
- OpenAPI: документация, теги, схемы ошибок
- Аутентификация: регистрация, логин, JWT
- Авторизация: роли, доступы, защита маршрутов
- Практическое тестирование проекта
- Автоматизированное тестирование проекта (Unit тесты)
- Интеграционное тестирование и End-to-End тесты
- Домашнее задание
- Интерактивное обучение: тесты, попытки, прогресс: Точка входа во второй модуль: от контента к активности
- Роли второго этапа: кто создает, кто проходит, кто управляет
- Cущность Question
- Сущность AnswerOption и варианты ответа
- Формы ответа: одиночный и множественный выбор
- Сущность QuestionAttempt и прохождение тестов
- Результаты теста, баллы и статус
- Авторские сценарии для тестов
- Домашнее задание
- Пользовательские сценарии прохождения
- Прогресс обучения как новая часть домена
- Баллы и учебная мотивация
- Persistence интерактивного этапа: ORM, репозитории, UoW
- FastAPI для интерактивного этапа: роуты, зависимости, схемы
- Практическое тестирование интерактивного этапа
- Автоматизированное тестирование тестового этапа
- Домашнее задание
- Кодовые задачи и Docker-runner: Точка входа в этап задач
- Сущность Task
- Попытка решения и история отправок
- Правила проверки простых задач
- Роли, владелец и доступы в домене задач
- Авторские сценарии простых задач
- Пользовательские сценарии простых задач
- Контракты и инфраструктурные границы
- Persistence простых задач и развитие схемы
- Кодовые задачи, сущность CodeTask
- Отправка кода и жизненный цикл проверки
- Авторские сценарии кодовых задач
- Application-слой кодовых задач
- Очередь и worker
- Среда исполнения: Docker-runner и артефакты проверки
- Безопасность и отказоустойчивость проверки кода
- Прогресс кодовых задач и итоговая учебная модель
- FastAPI и сценарии проверки задач
- Практическое тестирование этапа задач
- Внешний брокер и реальная очередь
- Поддержка других языков программирования в задачах
- Практическое тестирование этапа задач, ч.2
- Автоматизированное тестирование этапа задач
- Домашнее задание
- Платформенные сценарии вокруг обучения: Жизненный цикл курса: draft, published, archived
- Бизнес-сценарий публикации курса
- Каталог курсов и карточка курса
- Обложка, описание, сложность и теги курса
- Домашнее задание
- Поиск по каталогу курсов
- Фильтрация по темам, тегам и сложности
- Профиль пользователя
- Аналитика для студента: завершение, баллы, слабые места
- Домашнее задание
- Аналитика для автора: прохождение, сложные вопросы и задачи
- Рейтинг и отзывы о курсе
- Домашнее задание
- История активности студента по платформе
- Индексы, оптимизация чтения
- Кеширование контента
Теги курса
Другие материалы автора 6
ИП Илья Перминов Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.