Check

Слои приложения и разделение ответственности

Python Senior Яндекс
Опишите типичную многослойную архитектуру backend-приложения на Python (например, контроллеры, сервисы, репозитории). Как Python-специфичные особенности (динамичность, протоколы) упрощают или усложняют такую архитектуру?
Ответы
Слои приложения
Типичная схема: - слой представления/transport (FastAPI/Django views) → HTTP, сериализация; - слой бизнес-логики (services/use-cases); - слой доступа к данным (repositories/DAO); - инфраструктурный слой (клиенты внешних сервисов, брокеры). В Python границы слоёв удобно выражать через интерфейсы (`Protocol`/ABC), а реализации подменять в тестах/mocks. Динамичность облегчает DI (можно собрать граф зависимостей без тяжёлых фреймворков), но при отсутствии дисциплины архитектура легко превращается в «big ball of mud».