Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — VUNESP 2025

Engenharia de SoftwareGeral
Código
vu222967
Banca
VUNESP
Órgão
TJ SP
Ano
2025
Cargo
AnaSistJ ( )
A respeito de aplicações baseadas em arquitetura monolítica, no caso geral, é correto dizer que
  1. Asão consideradas sistemas legados e, portanto, devem ser migradas para arquitetura de microsserviços assim que possível.
  2. Bpodem ser construídas de forma modular, mas tipicamente apresentam limitações de escalabilidade para alta demanda.
  3. Cpodem utilizar bancos de dados relacionais, mas não bancos de dados NoSQL.
  4. Dprecisam ser desenvolvidas em linguagens compiladas, uma vez que precisam ser distribuídas na forma de um único arquivo executável.
  5. Epodem ser escaladas horizontalmente para atender a demanda, mas não verticalmente.
Revelar gabarito e comentário

GabaritoB — podem ser construídas de forma modular, mas tipicamente apresentam limitações de escalabilidade para alta demanda.

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”.

Arquitetura Monolítica: características e limitações

Gabarito: letra B. A arquitetura monolítica, no caso geral, pode ser construída de forma modular, mas tipicamente apresenta limitações de escalabilidade para alta demanda. Isso ocorre porque, embora o código possa ser organizado em módulos, a aplicação é implantada como uma única unidade, o que dificulta a escalabilidade independente de partes específicas do sistema.

A arquitetura monolítica é um estilo de arquitetura de software em que todos os componentes da aplicação — interface de usuário, lógica de negócio, acesso a dados — são combinados em um único programa, executado em um único processo. Essa é a forma mais tradicional de construir sistemas, e ainda é amplamente utilizada, especialmente em aplicações de menor porte ou em fases iniciais de projetos.

A principal característica do monolito é a unidade de implantação: todo o sistema é empacotado e implantado junto. Isso traz vantagens como simplicidade de desenvolvimento, facilidade de teste e depuração, e menor complexidade operacional inicial. No entanto, a medida que o sistema cresce, surgem limitações significativas, principalmente em relação à escalabilidade.

A escalabilidade pode ser vertical (aumentar os recursos de uma única máquina, como CPU e memória) ou horizontal (adicionar mais máquinas ao sistema). Em um monolito, a escalabilidade horizontal é limitada porque, ao replicar a aplicação, você replica todo o sistema, inclusive as partes que não estão sob alta demanda. Isso gera desperdício de recursos e pode se tornar um gargalo. A escalabilidade vertical, por sua vez, tem limites físicos e de custo.

É importante destacar que a arquitetura monolítica não é sinônimo de "sistema legado" ou "código ruim". Um monolito pode ser bem estruturado, com módulos bem definidos e alta coesão, e pode atender perfeitamente às necessidades de muitos negócios. A decisão de migrar para microsserviços deve ser baseada em necessidades reais de escalabilidade, complexidade e evolução, não em uma regra geral.

A alternativa correta captura exatamente essa nuance: o monolito pode ser modular, mas tipicamente tem limitações de escalabilidade para alta demanda. As demais alternativas apresentam afirmações absolutas e incorretas sobre o que um monolito "deve" ou "não pode" fazer.

Guarde essa distinção: a arquitetura monolítica é uma questão de implantação (tudo junto), não de organização interna (que pode ser modular). É essa fronteira que separa a alternativa correta das incorretas.

Alternativa A — ❌ Incorreta

Afirma que sistemas monolíticos são considerados legados e devem ser migrados para microsserviços "assim que possível". Isso é uma generalização indevida. Um sistema monolítico não é, por definição, um sistema legado. Ele pode ser moderno, bem mantido e atender perfeitamente às necessidades do negócio. A migração para microsserviços é uma decisão estratégica que deve considerar custos, riscos e benefícios, e não uma obrigação. Muitos sistemas monolíticos continuam sendo a melhor escolha.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta alternativa está correta porque reconhece duas características reais do monolito: (1) ele pode ser construído de forma modular, ou seja, o código pode ser organizado em módulos, pacotes ou camadas bem definidas; e (2) ele tipicamente apresenta limitações de escalabilidade para alta demanda, pois a aplicação inteira é implantada como uma única unidade, o que dificulta escalar apenas as partes que precisam de mais recursos. A palavra "tipicamente" é crucial, pois reconhece que há exceções, mas que a regra geral é essa.

Alternativa C — ❌ Incorreta

Afirma que sistemas monolíticos podem usar bancos de dados relacionais, mas não bancos NoSQL. Isso é falso. A escolha do banco de dados é independente da arquitetura da aplicação. Um monolito pode perfeitamente utilizar um banco NoSQL, como MongoDB ou Cassandra, assim como um sistema de microsserviços pode utilizar um banco relacional. A arquitetura monolítica não impõe nenhuma restrição ao tipo de banco de dados.

Alternativa D — ❌ Incorreta

Afirma que sistemas monolíticos precisam ser desenvolvidos em linguagens compiladas, pois precisam ser distribuídos como um único arquivo executável. Isso é falso por dois motivos. Primeiro, um monolito pode ser desenvolvido em linguagens interpretadas, como Python, Ruby ou JavaScript (Node.js). Segundo, a distribuição como um único arquivo executável não é um requisito da arquitetura monolítica; é apenas uma forma possível de empacotamento. A arquitetura monolítica se refere à estrutura lógica e de implantação, não à linguagem de programação.

Alternativa E — ❌ Incorreta

Afirma que sistemas monolíticos podem ser escalados horizontalmente, mas não verticalmente. Isso inverte a realidade. Na prática, o monolito é mais facilmente escalado verticalmente (aumentando os recursos da máquina), pois não há necessidade de coordenar múltiplas instâncias. A escalabilidade horizontal (adicionar mais máquinas) é possível, mas limitada, pois exige replicar todo o sistema, o que pode gerar problemas de consistência e desperdício de recursos. Portanto, a afirmação está incorreta ao inverter as capacidades.

NÃO CAIA NESSA!

A banca explora a confusão entre escalabilidade vertical e horizontal. No monolito, a escalabilidade vertical é mais simples (aumentar CPU/memória da máquina), enquanto a horizontal é limitada (replicar tudo). A alternativa E inverte essa lógica, e o candidato desatento pode marcar sem perceber. Lembre-se: o monolito escala "para cima" (vertical) com facilidade, mas "para fora" (horizontal) com dificuldade.

PEGA ESSA DICA!

Para questões sobre arquitetura monolítica, foque na unidade de implantação. Pergunte-se: "o sistema é implantado como um todo?" Se sim, é um monolito. A partir daí, as limitações de escalabilidade e a independência dos módulos são consequências diretas. Compare com microsserviços: cada serviço é implantado de forma independente, permitindo escalar apenas o que precisa.

Gabarito: letra B

Link permanente: /questoes/vu222967