Created by AIImproved by people

Riqli · living documents · updated continuously

Where AI knowledge meets human practice.

Share with friends
image

Python (Django, Flask, FastAPI) для бэкенд-разработки Hard skill. (Python. Django. Flask. FastAPI. REST API. ORM. SQLAlchemy. Pydantic. Middleware. Authentication. Authorization. Self-study. Q&A. Tutorials. Documentation. Hard skill.)

sections

Введение

contents

Аннотация. В современной веб-разработке выбор правильного фреймворка для бэкенда на Python определяет не только скорость создания продукта, но и его масштабируемость, производительность и стоимость поддержки. Три основных игрока — Django, Flask и FastAPI — предлагают принципиально разные подходы: от «все в одном» до микро-фреймворков и асинхронных API-решений. Данный курс представляет собой полное руководство по каждому из этих инструментов: вы изучите их архитектуру, основные компоненты, сценарии использования и научитесь делать осознанный выбор в зависимости от требований проекта. Проблема «какой фреймворк учить» решается не через слепое следование трендам, а через глубокое понимание их внутреннего устройства, сильных и слабых сторон. Мы разберем не только теорию, но и практические аспекты: настройку окружения, работу с базами данных, авторизацию, тестирование и развертывание.

contents

Цель курса. После прохождения курса вы сможете самостоятельно спроектировать, разработать и развернуть бэкенд-приложение на Python, осознанно выбирая между Django, Flask и FastAPI в зависимости от архитектурных и бизнес-требований, а также грамотно применять лучшие практики и современные инструменты экосистемы.

contents

Результаты обучения.

  • Знать: архитектурные паттерны и философию каждого фреймворка; принципы работы синхронных (WSGI) и асинхронных (ASGI) серверов; механизмы ORM, валидации данных и авторизации; методы оптимизации запросов и кэширования.
  • Уметь: настраивать проект с нуля, создавать модели и миграции, разрабатывать RESTful API, подключать сторонние библиотеки, писать интеграционные тесты, использовать инструменты автоматической документации (OpenAPI), работать с асинхронными драйверами баз данных.
  • Владеть: навыками выбора фреймворка для MVP, микросервисной архитектуры или высоконагруженного корпоративного продукта; методами профилирования производительности и отладки; практиками безопасной разработки (XSS, CSRF, SQL-инъекции).
contents

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

Курс ориентирован на Python-разработчиков, имеющих базовое понимание языка (функции, классы, импорты), которые хотят систематизировать знания в области веб-разработки. Он будет полезен как начинающим backend-инженерам, стремящимся войти в профессию, так и опытным специалистам, использующим один фреймворк в повседневной работе, но желающим расширить свой стек инструментов. Также материал будет интересен техническим лидам и архитекторам, которые принимают решения о выборе технологического стека для новых проектов.

Этот курс НЕ для полных новичков в программировании: мы не объясняем синтаксис if/else или циклы, а также не рассматриваем базовые вопросы установки Python на операционную систему. Мы предполагаем, что вы умеете работать с командной строкой и виртуальным окружением. Для тех, кому нужна самая быстрая «точка входа», рекомендуется начать с FastAPI, как самого современного и интуитивного .

sections

Модуль 1. Эволюция и контекст: почему мы выбираем между Django, Flask и FastAPI

contents

История развития Python-фреймворков для бэкенда. Для понимания текущей ситуации важно знать историю. Django появился в 2005 году как «тяжеловесный» фреймворк для новостных редакций, реализующий паттерн MTV (Model-Template-View). Его философия — «batteries included», то есть максимальное число встроенных решений . Flask был создан в 2010 году как «обертка» над Werkzeug и Jinja2, предлагая минимализм и свободу выбора библиотек. FastAPI же вышел в 2018 году, вобрав в себя лучшие практики из Starlette и Pydantic, и был сразу нацелен на создание быстрых API с асинхронностью . Разница в возрасте этих инструментов объясняет их архитектурные различия. Django решал проблемы начала нулевых, FastAPI — проблемы облачной и AI-эры конца десятых .

contents

Эволюция стандартов: WSGI против ASGI. Ключевой технический фактор, разделяющий поколения фреймворков, — это интерфейсы взаимодействия с веб-серверами. WSGI (Web Server Gateway Interface) был стандартом синхронной обработки запросов. При каждом запросе он блокирует поток (thread), пока обрабатывается ответ. Это классика для Flask и большинства проектов на Django . ASGI (Asynchronous Server Gateway Interface) пришел на смену WSGI для поддержки асинхронности. Он позволяет одному процессу обрабатывать множество подключений одновременно, не блокируя выполнение при операциях ввода-вывода (запросы к БД, HTTP-запросы). FastAPI построен на ASGI (Uvicorn), а Django и Flask получили поддержку ASGI позже, но их корни лежат в WSGI . Понимание этой разницы — фундамент для выбора инструмента для высоконагруженных систем.

contents

Тренды 2026 года: AI-интеграции и микросервисы. К 2026 году ландшафт бэкенд-разработки на Python сместился в сторону AI-нагрузок и асинхронных микросервисов. Django остается лидером для корпоративных монолитов и CMS, тогда как FastAPI стал стандартом де-факто для serving AI-моделей благодаря Pydantic и async . Согласно исследованиям, FastAPI является рекомендованным выбором для проектов с API-first подходом в 2026 году . Интересно, что сообщество все чаще комбинирует Django для административной части и FastAPI для публичных или высоконагруженных API-слоев . Flask же находит свою нишу в прототипировании и легковесных внутренних сервисах, где не требуется сложная валидация.

sections

Модуль 2. Django: корпоративный стандарт «с батарейками»

contents

Архитектура Django: MTV и «batteries included». Django проектировался как монолитная структура, где каждый компонент тесно связан с другим. Модель (Model) описывает данные через ORM. Представление (View) обрабатывает логику (в отличие от классического MVC, здесь View отвечает за контроллер). Шаблон (Template) отвечает за отображение HTML. Это целостная система: если вы используете ORM, вам не нужно подключать SQLAlchemy отдельно; если вам нужна админка — она уже есть . Это позволяет разработчикам быстро стартовать, но снижает гибкость. Согласно данным, административный интерфейс и система авторизации — самые востребованные встроенные функции Django .

contents

Django ORM: миграции, модели и работа с базами данных. Django ORM — это интерфейс для работы с реляционными базами данных (PostgreSQL, MySQL, SQLite). В отличие от SQLAlchemy, ORM Django тесно интегрирован с фреймворком и имеет мощный инструмент миграций. Команда python manage.py makemigrations автоматически создает файлы миграций на основе изменений в models.py, а python manage.py migrate применяет их к БД. Эта система поддерживает версионирование и откат изменений . Однако Django ORM «из коробки» не поддерживает NoSQL-решения вроде MongoDB или Redis; лишь 6% разработчиков Django используют неофициальные БД . Для сложных запросов (например, JOINы с подзапросами) разработчикам часто приходится использовать сырой SQL.

contents

Админка и авторизация в Django. Django Admin — это автоматически генерируемый интерфейс для управления данными приложения. Регистрация моделей в admin.py дает возможность CRUD-операций через веб-интерфейс. Система аутентификации включает модели User и Group, а также механизмы разрешений, что покрывает 80% типовых задач . Для расширенных кейсов (SSO, двухфакторная аутентификация, LDAP) существует обширная экосистема пакетов. Важно: Flask и FastAPI не имеют административной панели «из коробки», поэтому если ваш проект требует быстрого управления данными, Django остается безусловным лидером .

contents

Django REST Framework (DRF) — стандарт для API. Для создания REST API на Django используется библиотека Django REST Framework (DRF). Она расширяет возможности Django, добавляя сериализаторы, классы для View (ModelViewSet) и систему аутентификации на основе токенов. DRF позволяет быстро создавать CRUD-эндпоинты с минимальным кодом . Однако DRF является синхронным по своей природе и требует дополнительных надстроек (Django Channels, ASGI) для асинхронности . По сравнению с FastAPI, DRF медленнее при высоком числе одновременных подключений, но предоставляет гораздо больше структуры для сложной бизнес-логики.

contents

Тестирование и логирование в Django. Django предоставляет встроенную поддержку тестирования на основе unittest. Для каждого теста создается изолированная тестовая база данных, что гарантирует чистоту окружения. Клиент тестирования (Client) позволяет имитировать HTTP-запросы без запуска сервера. Система логирования Django гибкая: в settings.py через словарь LOGGING можно настроить обработчики, форматтеры и уровни логов для любой части приложения. Это дает разработчикам полный контроль над тем, куда и как логировать события . DRF наследует Django-тестирование, но для тестов API часто используется APIClient из DRF, который умеет работать с JSON .

contents

Use Cases для Django: когда он выигрывает. Django идеален для крупных проектов с четкой структурой: интернет-магазины (e-commerce), корпоративные порталы, системы управления контентом (CMS), SaaS-панели управления . Он незаменим там, где нужна готовая админка и сложная система пользовательских ролей. Построение продукта на Django дешевле на старте, если требования полностью соответствуют его «батарейкам». Однако для простых микросервисов или API-шлюзов он избыточен — вы несете тяжелую базу синхронных компонентов, которую сложно масштабировать .

sections

Модуль 3. Flask: минимализм и гибкость

contents

Философия Flask: микроядро и свобода выбора. Flask создавался как микрофреймворк. Он предоставляет минимальный набор компонентов: маршрутизацию, обработку запросов/ответов и поддержку шаблонов Jinja2 . В нем нет ORM, нет форм, нет админки. Разработчик сам решает, использовать ли SQLAlchemy или MongoDB, как аутентифицировать пользователей и кэшировать страницы. Это «DIY»-подход. Flask известен своей понятной кодовой базой и низким порогом входа, что делает его отличным выбором для маленьких проектов и для обучения веб-разработке . Однако из-за этого ответственность за архитектуру и безопасность ложится полностью на плечи разработчика .

contents

Экосистема расширений Flask. Хотя сам Flask минимален, его сила в сотнях расширений. Flask-SQLAlchemy — для работы с БД через ORM, Flask-Migrate — для миграций (обертка над Alembic), Flask-Login и Flask-Security — для аутентификации, Flask-Admin — для создания админки . Проблема такой экосистемы в том, что эти расширения живут своей жизнью: они не являются частью ядра Flask, их циклы выпуска не синхронизированы, что может приводить к конфликтам версий и несовместимости (breaking changes) . Это основная «головная боль» при поддержке Flask-проектов, переросших размер прототипа.

contents

Flask для прототипов и микросервисов. Благодаря отсутствию связанности компонентов, Flask часто используется для создания микросервисов в легковесной архитектуре. Однако, в отличие от FastAPI, Flask «из коробки» не умеет обрабатывать асинхронные запросы эффективно, хотя и поддерживает ASGI через расширения . Это ограничивает использование Flask в high-load системах. Если проект начинается как «простое API» на Flask, то с ростом количества эндпоинтов поддержка усложняется из-за необходимости писать ручную валидацию и тесты, которые FastAPI предлагает автоматически .

contents

Тестирование и логирование во Flask. Во Flask тестирование осуществляется с помощью встроенного тестового клиента. Отличие от Django в том, что Flask не управляет базой данных автоматически. Разработчик должен позаботиться о создании отдельной тестовой БД или использовании транзакционных тестов (например, через pytest-flask), чтобы не засорить продакшн-данные . Логирование в Flask обычно строится поверх стандартного модуля Python logging. Flask предоставляет app.logger, который можно конфигурировать. Вместе с Werkzeug логируются все входящие HTTP-запросы .

contents

Use Cases для Flask: гибкость на первом месте. Flask выбирают для прототипов, внутренних инструментов (internal tools), легковесных API и микросервисов с простой логикой. Он позволяет разработчикам «собрать» приложение из лучших библиотек, а не подстраиваться под шаблоны Django. Flask популярен в стартапах на ранних стадиях, где требования постоянно меняются . Однако, согласно современным трендам, FastAPI вытесняет Flask в нише создания внешних API благодаря автодокументации и типизации, оставляя Flask для узкоспециализированных кейсов, где встроенный асинхрон не требуется.

sections

Модуль 4. FastAPI: современный, быстрый и асинхронный

contents

Архитектура FastAPI: Starlette + Pydantic. FastAPI — это не монолит. Он построен «на плечах гигантов». Starlette — это ASGI-фреймворк, отвечающий за маршрутизацию, WebSocket-подключения, работу с middleware и обработку запросов . Pydantic — это библиотека для валидации данных на основе Python type hints. Разработчик создает модель данных (наследника BaseModel), и Pydantic автоматически валидирует входящий JSON, преобразует типы и генерирует ошибки. Такая модульность (сборка Lego) позволяет FastAPI быть невероятно быстрым и гибким, оставляя «тяжелую» работу проверенным библиотекам.

contents

Мощь type hints и Pydantic: автовалидация и схемы. Ключевое преимущество FastAPI — использование аннотаций типов Python. Вместо ручной проверки (if 'name' in request) вы описываете модель. FastAPI автоматически: 1) Валидирует типы (строка, целое, email). 2) Генерирует JSON Schema. 3) Добавляет это в OpenAPI схему . Pydantic также поддерживает сложные структуры данных и пользовательские валидаторы. Это снижает количество ошибок (TypeError) на этапе выполнения. В отличие от Flask, где данные часто приходят в виде словарей, FastAPI дает разработчику строгие объекты с автодополнением в IDE .

contents

Async/await «из коробки» и ASGI-сервер. FastAPI поддерживает async def изначально. Это означает, что внутри эндпоинта вы можете использовать await для вызовов внешних API, чтения из базы данных или файловых операций, не блокируя основной поток . Сервер Uvicorn (асинхронный) управляет циклом событий. Благодаря этому FastAPI показывает лучшие результаты в бенчмарках: он примерно в 2-3 раза быстрее Flask и Django для типичных JSON-ответов, обрабатывая до 15 000 запросов в секунду против 5 000 у Flask . Важно: FastAPI не магия, он эффективен для I/O-bound задач, но для CPU-bound задач (тяжелые вычисления) его тоже нужно использовать с осторожностью (обычно вынося в отдельные процессы).

contents

Автоматическая документация: Swagger UI и ReDoc. Это одна из самых любимых функций разработчиков. После запуска FastAPI (с установленными зависимостями) вы автоматически получаете два интерфейса для документации: /docs (Swagger UI) и /redoc (ReDoc) . Они отображают все ваши эндпоинты, схемы запросов/ответов, а также позволяют «потыкать» API прямо из браузера. Flask или Django REST Framework требуют подключения сторонних пакетов (например, flask-swagger или drf-yasg) и дополнительной конфигурации для достижения такого же уровня интерактивности .

contents

Внедрение зависимостей (Dependency Injection). FastAPI предлагает простой, но мощный механизм внедрения зависимостей. Вы описываете функцию (например, для проверки авторизации), и FastAPI передает результат в эндпоинт. Это позволяет переиспользовать логику аутентификации, проверки прав, подключения к БД и сессий. В отличие от сложных реализаций DI в Java/C#, в FastAPI это просто функции или классы, которые возвращают нужное значение, что делает код чистым и легко тестируемым .

contents

Testing and Logging in FastAPI. Для тестирования FastAPI использует TestClient из библиотеки httpx (или Starlette), который работает без запуска сервера. Тесты обычно пишутся с pytest. Логирование часто настраивается через стандартный Python logging или через конфигурацию Uvicorn . Поскольку FastAPI асинхронный, важно правильно настраивать логгеры для работы в асинхронной среде. В целом, подход к тестированию ближе к Flask (нужно самим управлять состоянием БД), но благодаря DI подменять зависимости для тестов становится проще .

contents

FastAPI для AI и ML: идеальный хост для моделей. FastAPI стал главным выбором для AI-инженеров . Почему? Асинхронность позволяет обслуживать множество параллельных запросов инференса без лишних потоков. Pydantic строго описывает структуру входных данных для моделей (например, изображение массивом или текст). В FastAPI легко интегрировать библиотеки типа PyTorch, TensorFlow, Hugging Face Transformers и LangChain . Более того, FastAPI часто используется как бэкенд для RAG-систем (Retrieval-Augmented Generation) и векторных баз данных (Pinecone, Weaviate, Milvus) благодаря стабильной работе с веб-сокетами и стримингом ответов .

contents

Use Cases для FastAPI: API-first и микросервисы. FastAPI рекомендуется для создания высокопроизводительных RESTful API, систем реального времени (чаты, стриминг данных), микросервисов и AI-сервисов . Он отлично ложится на облачные архитектуры и контейнеризацию благодаря малому размеру образа и быстрому старту. Однако, как и Flask, он не имеет встроенной админки и ORM, но эту проблему решают внешние библиотеки (SQLAlchemy). FastAPI также имеет меньший размер сообщества по сравнению с Django, что может сказаться на доступности «решений на коленке» для специфических проблем .

sections

Модуль 5. Сравнительный анализ и выбор стратегии

contents

Сравнение производительности: тесты и реальность. Бенчмарки стабильно показывают, что FastAPI быстрее Django и Flask в синтетических тестах благодаря асинхронному ядру . Однако в реальных проектах производительность чаще упирается в базу данных, медленные сторонние API и архитектуру кэширования, а не в скорость маршрутизации фреймворка. Поэтому не стоит выбирать FastAPI только ради 15 000 RPS (запросов в секунду), если ваша база данных выдает 1 000 RPS. Выбор между ними — это выбор между структурой, гибкостью и скоростью разработки, а не только между сырыми цифрами производительности. Однако для I/O-bound приложений (много внешних вызовов) FastAPI даст заметное преимущество .

contents

Decision Tree: как выбрать фреймворк? При принятии решения используйте четкие критерии . Если вы строите масштабный корпоративный проект с управлением пользователями и админкой — выбирайте Django. Если вы создаете прототип или внутренний инструмент с кастомной архитектурой, и скорость старта для вас важнее долгосрочной поддержки — Flask. Если вы пишете API-first сервис, микросервис, модернизируете архитектуру, или используете AI/ML — выбирайте FastAPI. Также учитывайте компетенции команды: если команда привыкла к синхронному коду и ORM Django — внедрение асинхронного FastAPI может быть рискованным .

contents

Гибридная архитектура: Django + FastAPI. Тренд 2026 года — использование Django и FastAPI вместе в одной экосистеме . Django берет на себя роль «мозга» приложения: управление пользователями, админку, сложную бизнес-логику, работу с реляционными данными. FastAPI ставится «спереди» как API-шлюз для внешних клиентов или мобильных приложений, обеспечивая быстрый доступ к данным и асинхронную обработку тяжелых запросов. Такая стратегия позволяет совместить скорость разработки (через админку Django) и высокую производительность публичного API (через FastAPI). Обмен данными между ними может происходить через очереди сообщений или общую базу данных.

sections

Модуль 6. Практические инструменты, библиотеки и командная строка

contents

Утилиты командной строки (CLI). У каждого фреймворка есть свой основной инструмент CLI. В Django это manage.py (или django-admin), с помощью которого запускают сервер, создают миграции и приложения . В Flask есть команда flask run, но для серьезных проектов используется gunicorn (на проде) или flask CLI. FastAPI обычно запускается через uvicorn (например, uvicorn main:app --reload) . PyCharm предлагает удобные консоли для выполнения этих команд с автодополнением, что упрощает работу с миграциями в Django .

contents

Инструменты для локальной разработки и туннелирования. Для тестирования вебхуков и демонстрации локального API внешним клиентам используются туннелирующие сервисы. ngrok и LocalXpose позволяют создать публичный URL, который перенаправляет трафик на ваш локальный сервер (например, на порт 8000) . Это актуально для всех трех фреймворков, так как работает на уровне сети, а не внутри приложения. Если вы интегрируете платежный шлюз или получаете коллбэки от внешних систем, без туннеля вам не обойтись.

contents

Стандарты и протоколы: OAuth2, OpenAPI, JSON Schema. FastAPI лидирует по поддержке современных стандартов . OAuth 2.0 встроен в систему безопасности (включая «токены носителей»). OpenAPI и JSON Schema генерируются из кода автоматически, что позволяет интегрировать ваш API с любыми системами, понимающими эти форматы. Django и Flask могут интегрироваться с OAuth2 через сторонние библиотеки (django-oauth-toolkit), но не предоставляют автоматической генерации схемы для всех эндпоинтов с такой же легкостью .

contents

Работа с нереляционными БД (NoSQL). Django официально не поддерживает NoSQL . Если вам нужна MongoDB, Cassandra или Redis в качестве основного хранилища, Django будет «чужим» (хотя есть неофициальные пакеты). Flask и FastAPI в этом плане гибче: вы можете использовать Flask-PyMongo, motor (асинхронный драйвер для MongoDB в FastAPI), или redis-py напрямую . Для современных Big Data и AI-проектов, работающих с неструктурированными данными, FastAPI часто оказывается более подходящим, чем привязанность к реляционной парадигме Django.

sections

Модуль 7. Вопросы безопасности и архитектуры

contents

Безопасность в Django: встроенная защита. Django «из коробки» защищает от основных веб-уязвимостей: SQL-инъекции (через ORM), XSS (через экранирование шаблонов), CSRF (токены в формах), Clickjacking (X-Frame-Options) . Административный интерфейс Django прошел проверку временем и сотнями проектов. Во Flask и FastAPI безопасность — ответственность разработчика. Вам самим нужно будет использовать библиотеки для защиты от XSS (например, через экранирование в Jinja2, если вы используете шаблоны) и обязательно настраивать CORS (механизм разрешения кросс-доменных запросов) с помощью fastapi.middleware.cors или Flask-CORS .

contents

Аутентификация и Authorization: сравнение подходов. В Django аутентификация встроена и управляется сессиями. FastAPI рекомендует использовать OAuth2 и JWT (JSON Web Tokens) через стандартные пути, что идеально для API . В FastAPI токен получается эндпоинтом, а затем передается в заголовке Authorization. В Flask для JWT часто используют Flask-JWT-Extended. Важно понимать разницу: Аутентификация — это проверка «кто ты» (логин/пароль), Авторизация — «что тебе можно» (роли, права). У Django есть готовые группы и разрешения, тогда как в FastAPI/Flask вам придется реализовывать логику проверки прав самостоятельно .

contents

Структура проекта и лучшие практики организации кода. Правильная структура — залог поддержки проекта. Для Django существует стандартная структура с корневым проектом и приложениями. Для Flask и FastAPI нет жесткого шаблона, но рекомендуется разделять слои: schemas (Pydantic), models (SQLAlchemy), services (бизнес-логика) и routers (эндпоинты) . В FastAPI для снижения нагрузки на основной файл принято выносить эндпоинты в роутеры (APIRouter) и подключать зависимости через DI. В Flask для этой же цели используют Blueprints. Игнорирование этих правил быстро превращает код в «спагетти».

contents

Анти-паттерны в разработке на Python-фреймворках. Самые частые ошибки: смешивание синхронного и асинхронного кода в FastAPI (использование requests вместо httpx внутри async def), что блокирует цикл событий ; попытка «впихнуть» бизнес-логику во View в Django (следует выносить в сервисные слои); излишнее использование глобальных переменных и зависимостей «синглтонов». Для Flask характерна «смертельная» ошибка — разрастание кода в одном файле app.py до тысяч строк. Для всех трех — работа с сырым SQL без экранирования (SQL-инъекции), даже если используется ORM.

sections

Модуль 8. Производительность и бенчмаркинг

contents

Метрики производительности: RPS, Latency, CPU/Memory. Оценка производительности бэкенда обычно включает метрики: RPS (Requests per Second) — сколько запросов может обработать приложение в секунду; Latency (Задержка) — время ответа (p50, p95, p99), и утилизация ресурсов (CPU/Memory) . Сравнительные исследования показывают, что FastAPI превосходит Django и Flask по RPS и задержке в тестах с эхо-ответами. Для I/O операций (вызовы БД, внешние API) FastAPI особенно эффективен благодаря асинхронности, тогда как Flask и Django (в синхронном режиме) блокируют потоки . Однако важно учитывать, что Flask и Django могут использовать несколько воркеров (через Gunicorn), чтобы догнать FastAPI в многопоточности.

contents

Бенчмарки из реальных проектов. В одном из бенчмарков, проведенном исследователями, FastAPI на Uvicorn показал примерно 15 000 RPS с задержкой около 2 мс для простого JSON-ответа, тогда как Flask на Gunicorn показал около 5 000 RPS с задержкой около 5 мс . Однако эти цифры справедливы только для «hello world». При добавлении работы с PostgreSQL через ORM разница нивелируется. Самые заметные отличия проявляются при большом количестве параллельных запросов на операции ввода-вывода (десятки и сотни). FastAPI также лучше справляется с длительными подключениями (WebSockets, Streaming), встроенными в Starlette .

contents

Масштабирование: монолит против микросервисов. Монолитная архитектура (классический Django) проще в разработке и деплое, но сложнее масштабируется на уровне отдельных модулей. Микросервисы (часто на Flask или FastAPI) требуют больше DevOps-инфраструктуры, но позволяют масштабировать только горячие компоненты. Django с его ORM и глобальной настройкой исторически ассоциируется с монолитами, хотя использует паттерн «приложений» внутри проекта . FastAPI же изначально строился как "API-first" и легче ложится на микросервисную архитектуру, позволяя легко разбивать логику на независимые сервисы .

sections

Модуль 9. Тестирование и логирование: практический гайд