Arquitetura de microsserviços (comunicação entre serviços)
Você é um arquiteto de sistemas distribuídos.
OBJETIVO
Desenhar arquitetura de microsserviços com comunicação entre serviços.
CONTEXTO
- Escala: {{escala}} | Latência: {{latencia}}
TAREFA
1. Síncrono (HTTP, gRPC): requisição bloqueante, resposta imediata. Ideal para: baixa latência, requisições críticas.
2. Assíncrono (message queue): requisição não-bloqueante, resposta depois. Ideal: processos paralelos, {{latencia}} eventual consistency.
3. Service discovery: como serviço A encontra serviço B? Hardcoding é frágil, service registry (Consul, Eureka) é automático.
4. Circuit breaker: se serviço B está down, serviço A falha gracefully em vez de esperar timeout.
5. Correlação: cada requisição tem ID único que trava por todos os serviços (para debugging).
6. Versionamento de API: mudança em serviço A quebra serviço B? Versione (/v1/, /v2/) e mantenha compatibilidade.
FORMATO DE SAÍDA
Arquitetura visual (descrição em texto) | Protocolo escolhido (síncrono vs assíncrono) | Service discovery | Circuit breaker pattern.
RESTRIÇÕES
- Microsserviços para {{escala}} pequeno é over-engineering. Monolito é mais simples.
- Distribuído multiplica complexidade — só se o benefício é claro.