Questão nº 40
Questão de Conhecimentos Específicos - Suporte · CESGRANRIO BANESE 01/2025 (nº 40)
J está gerenciando uma aplicação web em uma empresa que utiliza o Spring Boot para o backend e o Apache HTTP Server para o frontend. Recentemente, os usuários relataram lentidão ao acessar a aplicação. Após verificar os logs, J percebeu que o Apache HTTP Server está recebendo as solicitações, mas a comunicação com a aplicação Spring Boot está demorando.
Para esse problema de performance, J deve
- Aconfigurar o Apache HTTP Server para atuar como proxy reverso, redirecionando as requisições para o Spring Boot, de forma a otimizar o tempo de resposta. (alternativa correta)
- Bsubstituir o Apache HTTP Server por um servidor de aplicação dedicado, como o Tomcat, para gerenciar melhor o tráfego.
- Caumentar o número de threads no Apache HTTP Server para lidar com mais requisições simultâneas.
- Drealizar a configuração do Spring Boot para rodar diretamente no Apache HTTP Server, sem usar proxy.
- Econfigurar a aplicação Spring Boot para ser executada diretamente no navegador do usuário, evitando o tráfego para o servidor.
Resposta comentada
Gabarito Alternativa A
O problema não é o Apache "aguentar" requisições, mas sim ele não saber falar com o Spring Boot de forma eficiente. O Apache é um servidor web (estático) e o Spring Boot é um servidor de aplicação (dinâmico). Para eles conversarem rápido, o Apache precisa agir como um proxy reverso: ele recebe a requisição do usuário, repassa para o Spring Boot (que processa e devolve a resposta) e então entrega ao usuário. Isso otimiza o tempo porque o Apache usa conexões persistentes e balanceamento, evitando que cada requisição abra uma nova conexão lenta com o backend.
- (A) Correta: Configurar o Apache como proxy reverso é exatamente a prática correta para integrar frontend (Apache) com backend (Spring Boot), pois o Apache repassa as requisições dinâmicas para o Spring Boot via
mod_proxyemod_proxy_http, mantendo conexões persistentes e reduzindo a latência. - (B) Incorreta: Substituir o Apache pelo Tomcat não resolve a integração — o Tomcat é um servidor de aplicação (como o Spring Boot embutido), não um servidor web estático; você perderia o frontend e não ganharia performance na comunicação.
- (C) Incorreta: Aumentar threads no Apache só ajuda se o gargalo for conexões simultâneas no Apache; aqui o gargalo é a comunicação com o backend, não a capacidade de receber requisições.
- (D) Incorreta: O Spring Boot não roda dentro do Apache; ele é um processo Java separado. Essa alternativa é tecnicamente impossível (o Apache não executa Java/Spring).
- (E) Incorreta: Rodar Spring Boot no navegador é absurdo — Spring Boot é backend Java, não roda em browser; isso eliminaria a segurança e o processamento no servidor.
Armadilha da banca na (C): O aluno vê "lentidão" e pensa em "mais threads". Mas a lentidão está na comunicação Apache↔Spring Boot, não na capacidade do Apache de aceitar requisições. Aumentar threads só pioraria, pois cada thread tentaria abrir uma nova conexão lenta com o backend. A solução é o proxy reverso, que reutiliza conexões com o backend.
Fonte: CESGRANRIO BANESE 01/2025 Técnico Bancário III - Suporte (Caderno Prova C). Reproduzida para fins de estudo.