O que é infraestrutura como código (IaC)?

Infraestrutura como código (IaC) é uma metodologia para gerenciar e provisionar infraestrutura de computação. Ela depende de arquivos de definição legíveis por máquina para configuração, em vez de ajustes manuais de hardware físico ou ferramentas de configuração interativas. Ao tratar a configuração da infraestrutura da mesma forma que os desenvolvedores tratam o código do aplicativo, as equipes podem automatizar a implantação de redes, máquinas virtuais, clusters do Kubernetes, bancos de dados e balanceadores de carga de forma rápida e confiável. Ela serve como um componente das práticas modernas de DevOps, ajudando as organizações a escalonar com consistência e velocidade.

Como a infraestrutura como código funciona

A IaC funciona automatizando o processo de provisionamento por meio de código, eliminando a necessidade de configurações manuais em um console de nuvem. Primeiro, os desenvolvedores definem as especificações de infraestrutura desejadas em arquivos de configuração, que geralmente são armazenados em um sistema de controle de versões. Uma ferramenta de automação, como o Terraform, processa esses arquivos e faz as chamadas de API necessárias ao provedor de nuvem para criar, atualizar ou excluir os recursos reais. Esse fluxo de trabalho normalmente segue um caminho do código (definição) ao controle de versões, passando por um pipeline de CI/CD e, por fim, ao provisionamento.

Infográfico do fluxo de trabalho da infraestrutura como código

Declarativo versus imperativo

Ao implementar a IaC, as equipes geralmente escolhem entre duas abordagens: declarativa e imperativa. A principal diferença é se você se concentra no resultado final ou nas etapas para chegar lá.

Abordagem

Descrição

Exemplo

Modo indicativo


Você define como quer que o estado final seja. A ferramenta descobre as etapas necessárias para alcançar esse estado. Esse é o padrão moderno para ferramentas como Terraform e Kubernetes.

"Quero três máquinas virtuais com 8 GB de RAM cada."

Imperativos

Você define como mudar a infraestrutura listando comandos ou scripts específicos para executar em ordem.

"Execute o script A para iniciar o servidor 1. Em seguida, execute o script B para configurar a rede. Depois execute o script C…"

Abordagem

Descrição

Exemplo

Modo indicativo


Você define como quer que o estado final seja. A ferramenta descobre as etapas necessárias para alcançar esse estado. Esse é o padrão moderno para ferramentas como Terraform e Kubernetes.

"Quero três máquinas virtuais com 8 GB de RAM cada."

Imperativos

Você define como mudar a infraestrutura listando comandos ou scripts específicos para executar em ordem.

"Execute o script A para iniciar o servidor 1. Em seguida, execute o script B para configurar a rede. Depois execute o script C…"

Segurança e verificação de IaC

Como as definições de infraestrutura são movidas para repositórios de código, as práticas de segurança precisam se adaptar para proteger esses arquivos. "Segurança de IaC" e "verificação de IaC" se referem à prática de analisar arquivos de configuração em busca de vulnerabilidades antes que a infraestrutura seja implantada. Esse conceito é conhecido como segurança "Shift Left". Ferramentas especializadas verificam o pipeline de código para detectar configurações incorretas, como buckets de armazenamento abertos ao público ou bancos de dados não criptografados, impedindo que riscos de segurança cheguem ao ambiente de produção.

Casos de uso da IaC

Além de ser compatível com padrões de implantação comuns, como aplicativos de geração aumentada de recuperação (RAG), a IaC ajuda a resolver desafios em implantações operacionais complexas.

As empresas geralmente precisam executar cargas de trabalho em diferentes ambientes. Com uma ferramenta como o Terraform, uma equipe pode usar um único fluxo de trabalho de configuração para implantar e gerenciar recursos no Google Cloud ou em outros ambientes de nuvem e em data centers no local simultaneamente. Isso reduz a complexidade de aprender diferentes ferramentas proprietárias para cada plataforma.

Os desenvolvedores precisam com frequência de lugares seguros para testar novos recursos. Com a IaC, uma equipe pode criar um ambiente temporário de "preparação" que espelha a produção exatamente, executar os testes e destruir o ambiente imediatamente depois. Isso ajuda a garantir a precisão dos testes e evita o custo de manter um servidor de preparo permanente em execução 24 horas por dia, 7 dias por semana.

No caso de uma interrupção regional catastrófica, a recuperação manual pode levar dias. A IaC permite a "recuperação de desastres como código", permitindo que uma organização reprovisione rapidamente toda a infraestrutura em uma região diferente usando as definições de código atuais. Isso pode reduzir drasticamente o tempo de inatividade e garantir a continuidade dos negócios.

Benefícios de IaC

A adoção de IaC pode oferecer vantagens significativas para organizações que buscam modernizar as operações de TI.

Velocidade

A automação permite implantar ambientes complexos em minutos, em vez de dias ou semanas.

Consistência

Como o mesmo código implanta o mesmo ambiente todas as vezes, a IaC elimina o "desvio de configuração", em que os servidores ficam inconsistentes devido a mudanças manuais ad hoc.

Economias de custo

As equipes podem desativar facilmente os recursos não utilizados quando não são necessários, como desligar os ambientes de desenvolvimento nos fins de semana, o que ajuda a gerenciar os gastos com a nuvem.

Controle de versões

Como a infraestrutura é definida como código, todo o histórico das mudanças na infraestrutura é armazenado em um só lugar. Isso facilita o rastreamento de quem mudou o quê e a reversão para uma versão anterior se algo der errado.

Implementação de IaC no Google Cloud

O Google Cloud oferece um conjunto abrangente de ferramentas para apoiar sua jornada de infraestrutura como código, desde o design inicial até a implantação e o gerenciamento contínuo. Um ótimo ponto de partida é o App Design Center, que permite explorar, personalizar e criar arquiteturas de referência pré-criadas. Isso ajuda a projetar a pilha de aplicativos com base nas práticas recomendadas do Google Cloud antes de escrever uma única linha de código, garantindo que a infraestrutura seja bem arquitetada desde o início.

Depois de ter um design, o ecossistema aberto do Google Cloud facilita a implementação como código. A plataforma trata padrões de código aberto como o Terraform como um cidadão de primeira classe, e não como uma reflexão tardia. Serviços como o Infrastructure Manager permitem implantar e gerenciar recursos do Google Cloud usando o Terraform diretamente, enquanto o Config Connector permite gerenciar recursos do Google Cloud pelo Kubernetes, ajudando a diminuir a distância entre a infraestrutura de nuvem e a orquestração de contêineres.

Cloud Resource Manager

O Cloud Resource Manager é o serviço para gerenciar de forma programática a hierarquia de recursos do Google Cloud, incluindo organizações, pastas e projetos. Embora muitas equipes usem IaC para implantar recursos como máquinas virtuais, o Cloud Resource Manager permite definir a estrutura do projeto como código. Isso ajuda as equipes a automatizar a configuração de novos ambientes com políticas consistentes de gerenciamento de identidade e acesso (IAM) e restrições organizacionais, garantindo que a governança seja integrada à infraestrutura desde o início.

Automatizar ambientes de pré-visualização temporários

Uma das maneiras mais valiosas de usar a IaC é resolver o problema comum dos desenvolvedores: "Funcionou na minha máquina, então por que quebrou na produção?" Você pode resolver isso criando ambientes temporários.

Nesse fluxo de trabalho, quando um desenvolvedor abre uma solicitação de envio (PR), as ferramentas de IaC criam automaticamente uma cópia temporária e isolada do app. Quando a PR é mesclada, o ambiente se autodestrói.

Etapa 1: nomenclatura dinâmica no Terraform

Para que isso funcione, o código do Terraform não pode ter nomes codificados. Você precisa usar variáveis para criar recursos exclusivos para cada PR.

main.tf (Snippet)

  • Terraform
Carregando...

Etapa 2: a configuração do Cloud Build

No arquivo cloudbuild.yaml, você injeta o número do PR no Terraform usando a variável de substituição _PR_NUMBER fornecida pelo Cloud Build.

cloudbuild.yaml (Snippet)

  • YAML
Carregando...

Esse fluxo de trabalho transforma a IaC de uma tarefa estática de manutenção em uma ferramenta dinâmica de produtividade que acelera o ciclo de revisão.

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.

Outros recursos

Vá além

Comece a criar no Google Cloud com mais de 20 produtos sem custo financeiro e ganhe US$ 300 em créditos.

Google Cloud