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