В чем заключалась миграция с Django на FastAPI и какие были сложности
Что проверяют
Было ли решение о миграции обоснованным и понимаете ли вы, что именно теряется при уходе с Django. Интервьюера интересует не пересказ плана, а ваши инженерные компромиссы. Следом обычно спрашивают, как вы измеряли выигрыш и как две системы жили одновременно.
Как отвечать
Опирайтесь на свой проект и свои цифры. Каркас:
- причина: что конкретно не устраивало. Сильная формулировка звучит как «сервис почти целиком состоял из API и ждал внешние HTTP-вызовы», а не «Django медленный». Упомяните, что в Django есть асинхронные представления и частично асинхронный ORM, и объясните, почему этого не хватило;
- что пришлось заменить: ORM на SQLAlchemy 2.0, миграции на Alembic (для существующей схемы делают базовую ревизию и
alembic stamp), сериализаторы DRF на модели Pydantic, аутентификацию и права на зависимости черезDepends; - стратегия: переписывание целиком редко оправдано. Обычно работает постепенный перенос: новый сервис поднимается рядом, прокси направляет на него часть путей, обе системы какое-то время работают с одной базой;
- сложности: общая схема БД, которой владеют две системы; совместимость хешей паролей и сессий; синхронные библиотеки внутри
async def; фоновые задачи на Celery, которые переносятся отдельно; - результат: что мерили и чем (p95 задержки, RPS на инстанс, нагрузочный тест в Locust или k6).
Если такой миграции у вас не было, скажите прямо и перейдите к тому, как подошли бы к решению: какие метрики сняли бы до начала, какие части оставили бы на Django и почему.
Где спотыкаются
Называют «в три раза быстрее» без методики. Прирост от асинхронности появляется только там, где много ожидания I/O, и первым уточнением будет «как именно мерили».
Переносят синхронный код в async def один к одному. Синхронный драйвер БД блокирует цикл событий, и сервис становится медленнее, чем был на Django. Если библиотека синхронная, эндпоинт честнее объявить обычной def: FastAPI выполнит его в пуле потоков.
Забывают, что теряется. Админка, встроенные миграции и готовая аутентификация в Django работают из коробки, и без плана их замены команда неделями дописывает то, что раньше было бесплатно.