Разделите HTTP-слой, сценарий приложения, адаптер внешнего API и репозиторий БД. Внешний сетевой вызов не стоит выполнять под длительной транзакцией с блокировками.
Как организовать архитектуру для запроса, который выполняет бизнес-логику, ходит во внешний сервис (Google) и сохраняет результат в БД? Опиши по слоям сверху вниз.
Разделите HTTP-слой, сценарий приложения, адаптер внешнего API и репозиторий БД. Внешний сетевой вызов не стоит выполнять под длительной транзакцией с блокировками.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Разделите HTTP-слой, сценарий приложения, адаптер внешнего API и репозиторий БД. Внешний сетевой вызов не стоит выполнять под длительной транзакцией с блокировками.
Handler проверяет транспортные данные и передаёт запрос use case. Use case применяет бизнес-правила, вызывает внешний gateway с timeout, проверяет ответ и сохраняет результат через repository. Конкретные клиенты и драйверы остаются за адаптерами.
Если операция длительная, можно вернуть идентификатор задания и обработать её фоново. Продумайте идемпотентность, повтор после частичного успеха и статус ошибки. Общая атомарная транзакция между произвольным Google API и вашей БД обычно отсутствует, поэтому сценарий должен учитывать эту границу.