Questão de Engenharia de Software — Gerência de Configuração — FGV 2026
Engenharia de Software›Gerência de Configuração
Código
fg133771
Banca
FGV
Órgão
TJ-RJ
Ano
2026
Nível
Superior
Cargo
Analista Judiciário - Tecnologia da Informação - Analista de Infraestrutura de TIC
Um administrador de sistemas deseja abandonar a configuração manual de servidores via console web para garantir que os ambientes de teste e produção sejam idênticos e auditáveis. Para isso, ele adotou uma ferramenta que permite descrever o estado desejado da infraestrutura através de arquivos de texto. Considere o trecho de código ilustrativo abaixo, escrito na linguagem HCL (HashiCorp Configuration Language):A prática de gerenciamento de operações de TI ilustrada pelo código acima, que permite o provisionamento e a gestão de recursos de tecnologia através de arquivos de definição versionáveis (como no Git), em vez de configurações manuais de hardware ou interfaces gráficas, é denominada:
CInfrastructure as Code (infraestrutura como código - IaC);
DVirtual Machine Monitor (monitoramento de máquina virtual);
EObject-Oriented Programming (programação orientada a objetos).
Revelar gabarito e comentário▾
GabaritoC — Infrastructure as Code (infraestrutura como código - IaC);
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”.
Infraestrutura como Código (IaC)
Gabarito: letra C. A prática descrita — descrever o estado desejado da infraestrutura em arquivos de texto versionáveis (como no Git) e provisionar recursos por meio dessas definições, em vez de configuração manual — é exatamente o conceito de Infrastructure as Code (IaC). O trecho em HCL (HashiCorp Configuration Language) é a assinatura típica de ferramentas como Terraform, que seguem a abordagem declarativa de IaC.
A infraestrutura como código é uma prática de engenharia de software que aplica princípios de desenvolvimento de software — como controle de versão, revisão de código e automação — ao gerenciamento de infraestrutura de TI. Em vez de um administrador configurar servidores manualmente via console web ou interfaces gráficas, ele escreve arquivos de definição (código) que descrevem o estado desejado dos recursos: servidores, redes, bancos de dados, balanceadores, etc. Esses arquivos são armazenados em repositórios versionados (Git), permitindo que qualquer mudança seja rastreada, auditada e revertida, e que os ambientes de teste e produção sejam provisionados de forma idêntica e reproduzível.
Existem duas abordagens principais de IaC, e a distinção entre elas é um ponto clássico de prova:
Critério
Declarativa
Imperativa
O que define
O estado desejado (o "quê")
Os comandos para chegar lá (o "como")
Execução
A ferramenta descobre como aplicar
O usuário define a sequência exata
Exemplo
Terraform, Ansible, CloudFormation
AWS CLI, scripts Bash/Python
Idempotência
Garantida pela ferramenta
Depende do script
O trecho em HCL do enunciado é declarativo: ele declara o estado desejado ("quero um servidor com esta imagem, esta rede, etc.") e a ferramenta (Terraform) se encarrega de provisionar e gerenciar o ciclo de vida desse recurso. Isso contrasta com a abordagem imperativa, em que o administrador escreveria uma sequência de comandos para criar o servidor passo a passo.
A pegadinha que a banca explora aqui é a confusão entre IaC e outras práticas de DevOps, como CI/CD. Enquanto a Integração Contínua (CI) foca em integrar e testar código de aplicação frequentemente, a IaC foca em gerenciar a própria infraestrutura como código. São práticas complementares — a IaC frequentemente é usada dentro de pipelines de CI/CD — mas conceitos distintos. O enunciado é claro ao descrever "provisionamento e gestão de recursos de tecnologia através de arquivos de definição versionáveis", o que aponta diretamente para IaC.
Guarde a fronteira: IaC = infraestrutura definida e gerenciada por código versionável; CI/CD = automação do ciclo de vida do software (integração, teste, entrega). É exatamente nessa fronteira que as alternativas se dividem.
Infraestrutura como Código (IaC)
1Abordagens
Declarativa (estado desejado)
Terraform, Ansible, CloudFormation
Imperativa (sequência de comandos)
AWS CLI, scripts Bash
2Princípios
Arquivos versionáveis (Git)
Ambientes idênticos
Auditoria e rastreabilidade
3Distinções
CI/CD: ciclo de vida do software
IaC: provisionamento da infraestrutura
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Serverless Computing (computação sem servidor) é um modelo de execução em nuvem em que o provedor gerencia dinamicamente a alocação de recursos, permitindo que o desenvolvedor execute código sem se preocupar com servidores. Não tem relação com descrever infraestrutura em arquivos versionáveis; é um paradigma de execução de aplicações, não de gerenciamento de infraestrutura.
Alternativa B — ❌ Incorreta
Continuous Integration (CI) é a prática de integrar código de desenvolvedores em um repositório central com frequência, executando builds e testes automatizados. Embora a IaC possa ser usada dentro de pipelines de CI, a CI em si trata do ciclo de vida do código da aplicação, não do provisionamento de infraestrutura via arquivos de definição.
Alternativa C — ✅ Correta ⟵ GABARITO
Infrastructure as Code (IaC) é exatamente a prática descrita: gerenciar e provisionar infraestrutura através de arquivos de definição versionáveis, em vez de configuração manual. O trecho em HCL é a linguagem usada pelo Terraform, uma das principais ferramentas declarativas de IaC. A definição bate perfeitamente com o enunciado: "provisionamento e gestão de recursos de tecnologia através de arquivos de definição versionáveis (como no Git)".
Alternativa D — ❌ Incorreta
Virtual Machine Monitor (VMM), também conhecido como hipervisor, é o software que cria e executa máquinas virtuais (ex.: VMware ESXi, KVM). É uma tecnologia de virtualização, não uma prática de gerenciamento de infraestrutura via código. O VMM é uma camada de software, enquanto IaC é uma metodologia de provisionamento.
Alternativa E — ❌ Incorreta
Object-Oriented Programming (OOP) é um paradigma de programação baseado em objetos que encapsulam dados e comportamentos. Embora a HCL seja uma linguagem de configuração, a prática descrita não é sobre programação orientada a objetos, mas sobre gerenciamento de infraestrutura. OOP é um conceito de desenvolvimento de software, não de operações de TI.
NÃO CAIA NESSA!
A banca mistura conceitos de DevOps para confundir. A alternativa B (CI) é a mais tentadora, pois IaC e CI são frequentemente mencionadas juntas. Mas a CI trata de integrar código de aplicação, enquanto a IaC trata de gerenciar a infraestrutura como código. O enunciado fala de "provisionamento e gestão de recursos de tecnologia" — isso é IaC, não CI. Fique atento ao objeto da prática: se é infraestrutura, é IaC; se é código de aplicação, é CI/CD.
PEGA ESSA DICA!
Para identificar IaC em provas, procure por palavras-chave como "arquivos de definição", "versionáveis", "estado desejado", "provisionamento automatizado", "Terraform", "HCL", "CloudFormation", "Ansible". Se a questão menciona "configuração manual" sendo substituída por "código", a resposta quase sempre é IaC. Memorize a tabela declarativo vs. imperativo — é o desdobramento mais cobrado depois do conceito básico.