O que é a infraestrutura como código (IaC)?
A infraestrutura como código (IaC) automatiza o provisionamento da infraestrutura, permitindo que sua organização desenvolva, implemente e dimensione aplicativos em cloud com maior velocidade, menos riscos e custos reduzidos.
DevOps
Túnel de rastros de luz, denotando velocidade
O que é a infraestrutura como código (IaC)?

Infraestrutura como código (IaC) usa uma linguagem de programação descritiva de alto nível para automatizar o fornecimento de infraestrutura de TI. Essa automação evita que desenvolvedores precisem provisionar e gerenciar servidores, sistemas operacionais, conexões de banco de dados, armazenamento e outros elementos de infraestrutura toda vez que quiserem desenvolver, testar ou implementar aplicativos de software.

Atualmente, não é incomum para uma empresa colocar centenas de aplicativos em produção todos os dias; quando a infraestrutura precisa ser constantemente acionada, desmontada e dimensionada tanto para mais quanto para menos, em resposta a demandas de desenvolvedores e de usuário, é essencial que uma organização automatize a infraestrutura para controlar custos, reduzir riscos e responder rapidamente a novas oportunidades de negócios e a ameaças competitivas. A IaC possibilita esse tipo de automação.

A IaC também é uma prática essencial de DevOps , indispensável para entregar um ciclo de vida de software com duração competitiva. Ela possibilita que equipes DevOps criem infraestruturas rapidamente da mesma forma que fazem com versões de código-fonte e acompanhem essas versões de forma a evitar inconsistências entre ambientes de TI que possam levar a perdas graves durante a implementação.

Sai Vennam analisa a IaC em detalhes no vídeo a seguir, "O que é Infraestrutura como Código?":

Benefícios da infraestrutura como código

O provisionamento tradicional de TI é um processo caro e demorado, exigindo a instalação física do hardware, instalação e configuração do software do sistema operacional e a conexão de middlewareredesarmazenamento, etc. por equipes de especialistas.

A virtualização e o desenvolvimento nativo da cloud eliminam o problema de gerenciamento de hardware físico, permitindo que desenvolvedores provisionem seus próprios servidores virtuais ou contêineres sob demanda. No entanto, o provisionamento de infraestrutura virtualizada ainda assim tira o foco dos desenvolvedores na programação, ainda exige que repitam o trabalho de provisionamento para cada nova implementação e não fornece nenhuma maneira simples de acompanhar mudanças no ambiente e impedir inconsistências que impactam as implementações.

A infraestrutura como código (IaC) é a etapa final para permitir que os desenvolvedores 'encomendem', de maneira eficiente, infraestrutura totalmente documentada e com controle de versão por meio da execução de um script. Os benefícios são exatamente o que você pode imaginar:

  • Menor tempo de produção/lançamento no mercado: A automação da IaC acelera drasticamente o processo de fornecimento de infraestrutura para desenvolvimento, teste e produção (e também para ajustar a escala ou desativar a infraestrutura de produção conforme necessário). Como ela codifica e documenta todos os itens, a IaC pode até mesmo automatizar fornecimento de infraestrutura legada, algo geralmente regido por processos demorados (como criar um chamado).

  • Melhor consistência, menor desvio de configurações: O desvio de configuração ocorre quando mudanças e atualizações na configuração ad hoc resultam em divergências nos ambientes de desenvolvimento, teste e implementação. Isso pode resultar em problemas de implementação, vulnerabilidades de segurança e riscos ao desenvolver aplicativos e serviços que precisam cumprir padrões rígidos de conformidade regulamentar. A IaC evita o desvio ao sempre fornecer o mesmo ambiente.

  • Desenvolvimento mais rápido e eficiente: Ao simplificar fornecimento e garantir a consistência da infraestrutura, a IaC pode acelerar, de maneira confiável, todas as fases do ciclo de vida de entrega software. Os desenvolvedores podem provisionar sandboxes e ambientes de integração contínua/implementação contínua (CI/CD) rapidamente. A área de QA pode provisionar rapidamente ambientes de teste com fidelidade total. As operações podem provisionar infraestrutura rapidamente para segurança e teste de aceitação do usuário. E quando o código passa pelo teste, o aplicativo e a infraestrutura de produção na qual ele é executado pode ser implementado em uma única etapa.

  • Proteção contra rotatividade: Para maximizar eficiência em organizações sem IaC, o fornecimento geralmente é delegado a alguns engenheiros ou funcionários de TI qualificados. Se um desses especialistas deixa a organização, é possível que outros precisem reconstruir o processo. A IaC garante que a inteligência de provisionamento sempre permanecerá com a organização.

  • Custos mais baixos e melhor ROI: Além da redução drástica no tempo, esforços e no conhecimento especializado necessário para provisionar e dimensionar a infraestrutura, a IaC permite às organizações aproveitar ao máximo a estrutura de custo baseado em consumo da computação em cloud . Ela também permite que os desenvolvedores gastem menos tempo com detalhes e mais tempo com soluções de software inovadoras e de missão crítica.
Infraestrutura imutável vs. infraestrutura mutável

Uma decisão importante a fazer ao automatizar a infraestrutura com Infraestrutura como Código (IaC) e ao escolher uma solução IaC é estabelecer uma infraestrutura mutável ou imutável .

Infraestrutura mutável é a infraestrutura que pode ser modificada ou atualizada após ser originalmente provisionada. A infraestrutura mutável dá às equipes de desenvolvimento a flexibilidade para fazer customizações ad hoc no servidor para atender os requisitos de desenvolvimento ou de aplicativos, ou responder a um problema de segurança emergente. Mas ela também prejudica um dos principais benefícios da IaC: a capacidade de manter a consistência entre implementações ou dentro de versões, além de possivelmente tornar o acompanhamento de versões de infraestrutura muito mais difícil.

Por esses motivos, a maioria das IaCs são implementadas como infraestrutura imutável, ou seja, infraestrutura que não pode ser modificada após ser provisionada. Caso seja necessário alterar uma infraestrutura imutável, ela deverá ser substituída por uma nova infraestrutura. Uma vez que uma nova infraestrutura pode ser criada rapidamente na cloud, especialmente com IaC, a infraestrutura imutável é muito mais viável e prática do que parece.

A infraestrutura imutável leva a IaC para o próximo passo lógico, essencialmente reforçando a IaC para assegurar ainda mais os benefícios que ela oferece. Ela elimina todos os desvios de configuração e torna ainda mais fácil manter a consistência entre os ambientes de teste e implementação. Ela também torna mais fácil manter e acompanhar versões de infraestrutura, além de acessar qualquer versão anterior quando necessário.

Abordagem declarativa vs. imperativa

Ao escolher uma solução IaC, também é importante entender a diferença entre uma abordagem declarativa ou imperativa para automação de infraestrutura.

Na maioria organizações, a abordagem declarativa , conhecida como a abordagem funcional é a ideal. Na abordagem declarativa, você especifica o estado final desejado da infraestrutura que desejar provisionar e o software de IaC cuida do resto, gerando a máquina virtual (VM) ou o contêiner, instalando e configurando o software necessário, resolvendo as interdependências entre sistema e software e gerenciando as versões. A principal desvantagem da abordagem declarativa é que normalmente ela requer um administrador qualificado para fazer a configuração e o gerenciamento; geralmente, esses administradores se especializam em suas soluções preferidas.

Na abordagem imperativa , também conhecida como abordagem processual, a solução ajuda você a preparar scripts de automação que provisionam sua infraestrutura uma etapa específica por vez. Embora isso possa gerar mais trabalho de acordo com o ajuste de escala, pode ser mais fácil para equipe administrativa existente entender e utilizar os scripts configuração que já estão implementados.

A escolha de uma abordagem declarativa ou imperativa é análoga a usar um GPS ou seguir instruções passo a passo. Com um GPS, você digitar um endereço e o GPS faz o resto, calculando a rota mais rápida e evitando trânsito, mas você provavelmente precisaria de um especialista para entender por que o GPS fez aquelas escolhas. As instruções passo a passo são baseadas na experiência pessoal; o provedor conhece a rota e sabe por que a escolheu, mas se encontrar obstáculos ou desejar otimizar a rota, terá que pedir ajuda ou fazer o serviço ele mesmo.

Ferramentas de infraestrutura como código

Embora existam muitas ferramentas de IaC baseadas em software livre, as ferramentas adotadas com maior frequência são Ansible e Terraform:

O que é Ansible?

Ansible (link externo ao domínio ibm.com) é o projeto de uma comunidade de software livre patrocinada pela Red Hat, criado para ajudar organizações a automatizar o provisionamento, o gerenciamento das configurações e a implementação de aplicativos. Uma ferramenta de automação declarativa, a Ansible permite criar 'playbooks' (criados na linguagem de configuração YAML) para especificar o estados desejado para sua infraestrutura e em seguida fazer o provisionamento para você. Ansible é uma opção muito utilizada para automatizar o provisionamento de contêineres Docker e implementações Kubernetes.

O que é o Terraform?

Terraform é outra ferramenta declarativa de provisionamento e orquestração de infraestrutura que permite a engenheiros automatizar o provisionamento de todos os aspectos da infraestrutura baseada em cloud e on-premises da empresa.

A Terraform é compatível com os principais provedores de cloud e permite automatizar a geração de recursos em diversos provedores em paralelo, não importa onde os servidores físicos, servidores DNS ou os bancos de dados residam. Ela também é capaz de provisionar aplicativos criados em qualquer linguagem.

Ao contrário da Ansible, a Terraform não oferece recursos de gerenciamento de configuração, mas trabalha em conjunto com ferramentas de gerenciamento de configuração (por exemplo, Cloud Formation) para provisionar infraestrutura automaticamente no estado descrito pelos arquivos de configuração e para mudar automaticamente o fornecimento de atualizações quando necessário em resposta a mudanças de configuração.

Para obter informações mais detalhadas sobre uma ferramenta IaC, veja "Infraestrutura como código: Chef, Ansible, Puppet ou Terraform?"

Soluções relacionadas
IBM Cloud® Schematics

Use a infraestrutura como código para configurar e automatizar recursos para que você possa se concentrar em seus aplicativos mais importantes.

Explore o IBM Cloud® Schematics
Soluções IBM DevOps

O poderoso software DevOps para construir, implementar e gerenciar aplicativos altamente seguros, nativos de nuvem entre múltiplos dispositivos, ambientes e nuvens.

Conheça as soluções IBM DevOps
Recursos O que é DevOps?

O DevOps acelera a entrega de software de qualidade superior combinando e automatizando o trabalho de desenvolvimento de software e equipes de operações de TI.

O que é cloud computing?

A computação em cloud permite conectar-se à infraestrutura de TI por meio da Internet e usar recursos de computação sem precisar instalá-los ou mantê-los on-premises.

Infraestrutura como código: Chef, Ansible, Puppet ou Terraform?

Aprenda a escolher uma ferramenta de Infraestrutura como Código.

Dê o próximo passo

Desenvolvido com Terraform, a IBM® Cloud Schematics é uma solução simplificada para automação do gerenciamento de infraestrutura e pode ajudar organizações a melhorar o desempenho de aplicativos com provisionamento e orquestração consistentes.

Saiba mais sobre o IBM Cloud® Schematics