Pular para o conteúdo principal

Questão de Arquitetura de Software — Arquitetura de Software — TJ-PI 2025

Arquitetura de SoftwareArquitetura de Software
Código
qg614914
Banca
TJ-PI
Órgão
TJ-PI
Ano
2025
Nível
Superior
Cargo
Residente Tecnológico
O sistema de autenticação unificada (Single Sign-On) do TJPI, que atende ao PJe, SEl e outros sistemas internos, depende de um serviço externo de validação de identidade. Recentemente, falhas intermitentes nesse serviço externo têm causado um efeito cascata: as requisições para o serviço de autenticação ficam presas aguardando resposta, esgotando o pool de threads do servidor de aplicação e, consequentemente, derrubando o acesso a todos os sistemas integrados. Qual padrão de resiliência de software é o mais indicado para prevenir esse tipo de falha em cascata?
  1. APadrão Retry, que consiste em tentar novamente a chamada ao serviço externo várias vezes antes de desistir.
  2. BPadrão Bulkhead, que consiste em isolar as chamadas para o serviço externo em um pool de threads limitado e separado, para que sua falha não consuma todos os recursos do sistema principal.
  3. CPadrão Circuit Breaker, que monitora as falhas nas chamadas ao serviço externo e, após atingir um limiar, "abre o circuito", fazendo com que as chamadas subsequentes falhem imediatamente por um determinado período, sem tentar contatar o serviço falho.
  4. DPadrão Load Balancer, que consiste em distribuir a carga entre múltiplas instâncias do serviço de autenticação do TJPI.
  5. EPadrão Cache-Aside, que consiste em armazenar em cache as respostas bem-sucedidas do serviço externo para evitar chamá-lo repetidamente para o mesmo usuário.
Revelar gabarito e comentário

GabaritoC — Padrão Circuit Breaker, que monitora as falhas nas chamadas ao serviço externo e, após atingir um limiar, "abre o circuito", fazendo com que as chamadas subsequentes falhem imediatamente por um determinado período, sem tentar contatar o serviço falho.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Padrões de Resiliência em Sistemas Distribuídos

Gabarito: letra C. O Padrão Circuit Breaker é o mais indicado porque, ao monitorar falhas e abrir o circuito após um limiar, faz com que as chamadas subsequentes falhem imediatamente, evitando que threads fiquem presas aguardando resposta do serviço externo falho. Isso interrompe o efeito cascata de exaustão do pool de threads do servidor de aplicação.

A banca testa a compreensão dos principais padrões de resiliência (Resilience Patterns) usados em sistemas distribuídos. O cenário descreve um serviço externo de autenticação que falha intermitentemente, causando retenção de requisições e esgotamento do pool de threads. O padrão que previne esse tipo de falha em cascata é o Circuit Breaker.

1Retry
Agrava espera
2Bulkhead
Isola mas não falha rápido
3Circuit Breaker
Falha imediata após limiar
4Load Balancer
Não resolve falha intermitente
5Cache-Aside
Não evita espera em falha
Padrões de resiliência
LEVELsoulevel.com.br
Padrões de resiliência: Retry (Agrava espera); Bulkhead (Isola mas não falha rápido); Circuit Breaker (Falha imediata após limiar); Load Balancer (Não resolve falha intermitente); Cache-Aside (Não evita espera em falha)

Alternativa A — ❌ Incorreta

O Padrão Retry consiste em tentar novamente a chamada ao serviço externo várias vezes antes de desistir. No cenário, isso agravaria o problema, pois cada tentativa adicional manteria as threads ocupadas por mais tempo, acelerando a exaustão do pool e piorando o efeito cascata.

Alternativa B — ❌ Incorreta

O Padrão Bulkhead isola as chamadas para o serviço externo em um pool de threads separado e limitado. Embora evite que a falha consuma todos os recursos do sistema principal, ainda permite que as requisições fiquem presas aguardando resposta, esgotando o pool isolado e não solucionando o problema de espera prolongada. O Circuit Breaker é mais eficaz por falhar rapidamente.

Alternativa C — ✅ Correta ⟵ GABARITO

O Padrão Circuit Breaker monitora as falhas nas chamadas ao serviço externo. Quando o número de falhas ultrapassa um limiar configurado, o circuito "abre" e todas as chamadas subsequentes falham imediatamente (sem tentar contatar o serviço), por um período de tempo. Isso evita que threads fiquem aguardando, protege o pool de threads e dá tempo para o serviço externo se recuperar, prevenindo o efeito cascata.

Alternativa D — ❌ Incorreta

O Padrão Load Balancer distribui a carga entre múltiplas instâncias do serviço. Se todas as instâncias estiverem falhando (mesmo que parcialmente), o problema de espera persistirá. O Load Balancer não resolve a falha intermitente nem evita o esgotamento de threads.

Alternativa E — ❌ Incorreta

O Padrão Cache-Aside armazena em cache as respostas bem-sucedidas para evitar chamadas repetidas ao serviço externo. No entanto, em caso de falha (cache miss), a chamada ainda será feita e poderá ficar presa. Além disso, o cache não se aplica a chamadas de autenticação que exigem validação atualizada (o cache pode conter dados obsoletos).

NÃO CAIA NESSA!

A banca pode confundir o candidato com o Padrão Bulkhead (alternativa B). Embora o Bulkhead isole recursos, ele não interrompe as chamadas que já estão esperando — apenas limita o estrago. O Circuit Breaker é o único que efetivamente "quebra" o circuito para evitar a espera prolongada, sendo a solução mais direta para o efeito cascata descrito.

Critério

Circuit Breaker

Bulkhead

Retry

Ação diante de falha

Abre o circuito e falha rápido

Isola threads, mas ainda espera

Tenta novamente (piora espera)

Objetivo principal

Evitar chamadas desnecessárias

Limitar impacto de um componente

Aumentar chance de sucesso

Adequado para falhas intermitentes?

Sim (recupera após timeout)

Não (não resolve espera)

Não (posterga falha)

Gabarito: letra C — Circuit Breaker.

Link permanente: /questoes/qg614914