Início
topics
Infraestrutura como código
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.
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 middleware, redes, armazenamento, 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:
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.
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.
Embora existam muitas ferramentas de IaC baseadas em software livre, as ferramentas adotadas com maior frequência são Ansible e Terraform:
Ansible é 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.
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.
Use a infraestrutura como código para configurar e automatizar recursos para que você possa se concentrar em seus aplicativos mais importantes.
O poderoso software DevOps para construir, implementar e gerenciar aplicativos altamente seguros, nativos de nuvem entre múltiplos dispositivos, ambientes e nuvens.