Риски связаны с неверной семантикой: Optional.get без проверки, побочные эффекты и повторное использование Stream, гонки и блокирующий I/O в parallelStream. Эти инструменты не заменяют понимание выполнения.
Снижают зависимость от синхронного Auth Service: при подходящей модели подписанные access tokens проверяют локально, а сервис авторизации делают отказоустойчивым. Отказ проверки не должен автоматически разрешать доступ.
@RestController объединяет @Controller и @ResponseBody: результаты методов обычно записываются в тело HTTP-ответа через message converters. У @Controller строка обычно обозначает имя представления.
Назовите сборщики, которые действительно использовались, версию JDK и причины выбора. Важнее объяснить наблюдавшиеся паузы и нагрузку, чем перечислить все доступные GC.
Создайте согласованный snapshot в отдельной версии таблицы, затем догоните изменения через CDC и атомарно переключите читателей на готовую копию. Загрузка частями не должна делать частичные данные видимыми.
Объясните архитектуру через границы домена и требования, затем разберите альтернативы и цену выбранного решения. DDD, микросервисы и event-driven — не синонимы.
Монолит развёртывается как единое приложение, микросервисы — как отдельные независимо развёртываемые сервисы с явными контрактами. Размер кодовой базы сам по себе не определяет архитектуру.