Questão de Engenharia de Software — DevOps, IaC, Integração Contínua e Entrega Contínua — FGV 2026
Engenharia de Software›DevOps, 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:
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. 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.
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.