Escolha depende se cliente deve esperar resposta antes continuar.
Use Síncrona (Request-Response) quando:
- Resultado imediato necessário: Ações user-facing (login, search, checkout) onde UI bloqueia até servidor responder.
- Integridade transacional: Operações exigindo garantias ACID cross-services (ex.: transferência fundos).
- Interação tempo real: Chat, videochamadas, edição colaborativa, gaming — latência baixa crítica.
- Orquestração simples: Poucos serviços, latência previsível.
Use Assíncrona (Event-Driven) quando:
- Processamento background: Envio email, geração relatórios, processamento imagem, sync dados — utilizador não espera.
- Desacoplamento & resiliência: Serviços comunicam via message queues (Kafka, RabbitMQ) ou event buses; falhas não cascata imediata.
- Escalabilidade: Consumers escalam independentemente; picos tráfego absorvidos queue.
- Workflows longos: Cumprimento encomenda, aprovação empréstimo, provisioning multi-step.
Abordagem Híbrida
Maioria sistemas usam ambos: síncrona para APIs user-facing, assíncrona para workflows internos. Escolha baseada requisitos latência, necessidades consistência, semântica falha.