Технический долг (core)
🔴 Критическое
- Синхронная шина событий – все обработчики выполняются в том же процессе, что может замедлить ответ API при большом количестве слушателей. Планируется переход на асинхронную очередь (Redis Streams).
- Отсутствие rate-limiting – нет защиты от брутфорса и DDoS. Необходимо внедрить (например, через middleware).
- NotificationHub – тоже синхронный, отправка уведомлений (email, push) происходит в потоке запроса. Для высоких нагрузок нужно выносить в очередь.
🟡 Важное
JsonErrorHandler – дублирует логирование, требует рефакторинга (отдельный логгер).
JwtValidator – не проверяет nbf (not before) и не поддерживает асимметричные ключи (только HS256).
GlobalEventDispatcher – не поддерживает приоритеты слушателей и асинхронность.
🟢 Плановые улучшения
- Покрыть core-компоненты unit-тестами (сейчас только
BaseControllerTest).
- Документировать все порты (
port/) и use case'ы.
- Внедрить логгер с разными уровнями для каждого модуля (уже частично есть в
config/web.php).
- Добавить метрики (Prometheus) для мониторинга.
- Перейти на
league/container или другой PSR-11 контейнер (Yii2 не поддерживает PSR-11, но можно обернуть).