Вопрос проверяет понимание проблем латентности, отказоустойчивости и контроля нагрузки при агрегации данных из внешних сервисов.
Основная сложность — рост latency, так как итоговое время ответа зависит от всех внешних вызовов. Возникают частичные отказы, таймауты и нестабильность из-за зависимостей. Параллелизация усложняет контроль лимитов и обработку ошибок. Ретраи могут привести к лавинообразной нагрузке. Без ограничений и деградаций сервис становится хрупким.
Сервисы-агрегаторы выглядят простыми логически, но быстро становятся сложными эксплуатационно.
Перед перечислением важно понимать: каждый внешний вызов — это неконтролируемая зависимость.
Рост latency
последовательные вызовы → суммарная задержка
параллельные вызовы → зависимость от самого медленного
Частичные отказы
один сервис недоступен, остальные работают
нужно решать: падать целиком или деградировать
Timeout management
разные SLA у разных сервисов
неправильные таймауты блокируют ресурсы
Retry storm
ретраи по таймаутам
умножение нагрузки на внешние системы
Rate limits
внешние API ограничивают RPS
требуется троттлинг и очереди
Сложная логика агрегации
неполные данные
разные форматы и версии API
async def handler():
results = await asyncio.gather(
call_a(),
call_b(),
call_c(),
)
return merge(results)
Если call_b() зависает или медленный, страдает весь запрос.
Таймауты и лимиты
Circuit breaker
Fallback-логика
Кеширование
Ограничение параллелизма
Чем больше внешних HTTP-запросов на один входящий, тем выше требования к управлению отказами, временем ожидания и деградацией. Без этого сервис становится нестабильным под нагрузкой.