Pular para o conteúdo principal

Questão de Engenharia de Software — DevOps, IaC, Integração Contínua e Entrega Contínua — FGV 2026

Engenharia de SoftwareDevOps, IaC, Integração Contínua e Entrega Contínua
Código
fg157215
Banca
FGV
Órgão
TJ RJ
Ano
2026
Cargo
AJ ( )

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):

 

resource "aws_instance" "servidor_web" {

   ami = "ami-0c55b159cbfafe1f0"

   instance_type = "t2.micro"

   tags = {

     Name = "SistemaJudicial"

   }

}

 

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:

  1. AServerless Computing (computação sem servidor);
  2. BContinuous Integration (integração contínua - CI);
  3. CInfrastructure as Code (infraestrutura como código - IaC);
  4. DVirtual Machine Monitor (monitoramento de máquina virtual);
  5. 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. O trecho em HCL descreve o estado desejado de um recurso de nuvem (uma instância EC2 da AWS) e, ao ser versionado em Git, caracteriza a prática de Infrastructure as Code (IaC) — o gerenciamento e provisionamento de infraestrutura por meio de arquivos de definição legíveis por máquina, em vez de configuração manual ou interfaces gráficas. Essa é a definição central de IaC, conforme o próprio material de apoio: "a infraestrutura é provisionada e gerenciada usando técnicas de desenvolvimento de código e software, como controle de versão e integração contínua".

A questão é direta e conceitual: ela descreve exatamente o que é IaC e pede que você identifique o nome da prática. O código HCL é a assinatura clássica do Terraform, uma ferramenta declarativa de IaC — o administrador declara o que quer (uma instância com determinada AMI, tipo e tags) e a ferramenta se encarrega de aplicar e manter esse estado. A palavra-chave do enunciado é "descrever o estado desejado da infraestrutura através de arquivos de texto" — isso é a essência da abordagem declarativa de IaC, que se contrapõe à abordagem imperativa (que define os comandos passo a passo).

Para fixar: IaC trata de infraestrutura (servidores, redes, armazenamento) descrita como código versionável. Ela não é uma prática de desenvolvimento de software em si, nem um modelo de computação, nem uma técnica de programação — é uma prática de gerenciamento de operações de TI que aproxima o trabalho de infraestrutura do trabalho de desenvolvimento, permitindo automação, reprodutibilidade e auditoria. O controle de versão (Git) é um pilar: os arquivos de configuração são tratados como código-fonte, com histórico de mudanças e possibilidade de revisão.

A banca explora aqui a confusão entre práticas do universo DevOps que são relacionadas, mas distintas. A pegadinha está em alternativas como Integração Contínua (CI), que é uma prática de desenvolvimento (integrar código frequentemente), e Serverless, que é um modelo de computação em nuvem. O candidato que não domina os conceitos pode se perder. A dica de ouro: quando a questão falar em "infraestrutura programável e versionada", a resposta é IaC — como o próprio material de apoio destaca.

1O que é
Infraestrutura descrita em arquivos
Versionável (Git)
Auditável e reprodutível
2Abordagem
Declarativa (estado desejado)
Ex.: Terraform, Ansible, CloudFormation
3Benefícios
Ambientes idênticos
Automação
Histórico de mudanças
4Confusões comuns
CI (integração de código)
Serverless (infra abstraída)
VMM (virtualização)
IaC (Infrastructure as Code)
LEVELsoulevel.com.br
IaC (Infrastructure as Code): O que é (Infraestrutura descrita em arquivos, Versionável (Git), Auditável e reprodutível); Abordagem (Declarativa (estado desejado), Ex.: Terraform, Ansible, CloudFormation); Benefícios (Ambientes idênticos, Automação, Histórico de mudanças); Confusões comuns (CI (integração de código), Serverless (infra abstraída), VMM (virtualização))

Alternativa A — ❌ Incorreta

Serverless Computing é um modelo de execução em nuvem em que o provedor gerencia a infraestrutura e aloca recursos dinamicamente, cobrando por consumo (funções como serviço, por exemplo). Não tem relação com descrever infraestrutura em arquivos de código. O erro aqui é confundir "não gerenciar servidor" (serverless) com "gerenciar servidores via código" (IaC). São conceitos opostos: no serverless a infraestrutura é abstraída; na IaC ela é explicitamente definida.

Alternativa B — ❌ Incorreta

Continuous Integration (CI) é a prática de integrar alterações de código em um repositório central com frequência, executando compilações e testes automatizados. O foco é o código da aplicação, não a infraestrutura. Embora a CI seja uma prática complementar à IaC (e muitas vezes usada em conjunto), o trecho do enunciado descreve provisionamento de recursos de infraestrutura, não integração de código de software. A banca troca o objeto: IaC gerencia infraestrutura; CI gerencia integração de código.

Alternativa C — ✅ Correta ⟵ GABARITO

Infrastructure as Code (IaC) é exatamente a prática descrita: provisionar e gerenciar infraestrutura por meio de arquivos de definição legíveis por máquina, versionáveis e auditáveis, em vez de configuração manual ou interfaces gráficas. O código HCL do Terraform é um exemplo canônico — ele declara o estado desejado (AMI, tipo de instância, tags) e a ferramenta aplica e mantém esse estado. O enunciado menciona "ambientes de teste e produção idênticos e auditáveis", que são benefícios diretos da IaC: reprodutibilidade e versionamento.

Alternativa D — ❌ Incorreta

Virtual Machine Monitor (VMM), também chamado de hipervisor, é o software que cria e gerencia máquinas virtuais (ex.: VMware ESXi, KVM). É um componente de virtualização, não uma prática de gerenciamento de infraestrutura via código. A confusão aqui é associar "máquina virtual" a "infraestrutura", mas o VMM é uma tecnologia de virtualização, não uma metodologia de provisionamento declarativo.

Alternativa E — ❌ Incorreta

Object-Oriented Programming (OOP) é um paradigma de programação que organiza o código em objetos e classes. O trecho HCL não é programação orientada a objetos — é uma linguagem declarativa de configuração. A banca coloca essa alternativa para testar se o candidato reconhece que HCL não é uma linguagem de programação tradicional, mas sim uma linguagem de descrição de infraestrutura.

PEGA ESSA DICA!

Na prova, quando o enunciado falar em "infraestrutura como código", "estado desejado", "arquivos versionáveis" ou "provisionamento declarativo", a resposta é IaC. Guarde a diferença: IaC = infraestrutura descrita em código; CI = integração frequente de código de aplicação; CD = entrega/implantação contínua. Se a questão mostrar um trecho de Terraform/Ansible/CloudFormation, é IaC na certa.

Gabarito: letra C

Link permanente: /questoes/fg157215