Infraestrutura como Código – O que é, o que não é, Princípios
Publicados: 2020-04-23Tradicionalmente, as organizações sempre empregaram técnicas manuais para configurar a infraestrutura de TI. Isso vem acontecendo há muito tempo. Não foi até alguns anos atrás que a automação foi trazida para tornar as coisas mais fáceis, eficientes e precisas. Antes disso, as tarefas que envolviam o racking e empilhamento de servidores eram realizadas por humanos.
Não só thins, mas até mesmo o hardware também foi configurado manualmente de acordo com os requisitos e especificações do aplicativo que deve ser hospedado e do SO que está sendo usado para esse fim. O trabalho foi concluído com a implantação do aplicativo no hardware. Não é até esta etapa que o aplicativo pode ser iniciado.
Índice
Os processos para configurar a infraestrutura eram muitas vezes longos e complicados
Havia muitas coisas que precisavam ser gerenciadas adequadamente para que tudo saísse conforme o planejado e o tempo programado. Havia desafios que precisavam ser superados para garantir que nada fosse deixado ao acaso, mas fosse devidamente cuidado. A primeira coisa foi encontrar o hardware necessário. E você não pode fazer nada quando o fabricante não tem os estoques agora. Muitas vezes, levava meses para adquirir o hardware certo. Os produtos que foram adaptados a determinadas especificações levaram mais tempo para sair das instalações de produção do fabricante.
Contratar as pessoas certas para desempenhar diferentes funções também era muito importante e, ao mesmo tempo, bastante tedioso. Você precisou de engenheiros de rede para a configuração física da infraestrutura. Este foi apenas um dos trabalhos na configuração geral e manutenção do hardware. Tudo isso contribuiu significativamente para as despesas gerais e de gestão. Não era isso.
Você precisa de espaço para construir data centers para armazenar esse hardware. Os data centers requerem manutenção. Então, houve gastos na forma de HVAC, eletricidade, manutenção e segurança, entre outros. Geralmente, levava muito tempo para dimensionar um aplicativo e fazer com que ele lidasse sem problemas com o alto tráfego.
As empresas enfrentaram muitos desafios ao configurar os processos
Lembre-se, o processo de configuração de hardware continua sendo um processo demorado. No passado, muitos aplicativos não tinham o melhor desempenho ideal, devido ao tempo que o hardware usado para executá-los levava para começar a funcionar. Isso não era um bom presságio para muitas empresas, pois elas não conseguiam atender seus clientes da maneira que queriam e não conseguiam lançar produtos e serviços dentro do prazo que haviam imaginado.

Houve momentos em que essas empresas tiveram que provisionar o uso de mais servidores apenas para lidar com picos de tráfego resultantes da configuração lenta do hardware. Isso significava que muitos desses servidores não tinham muito o que fazer na maior parte do tempo. Mas, o custo de manutenção desses servidores que não foram usados em todas as suas capacidades não caiu apenas porque eles não foram totalmente usados.
Agora, como mencionamos anteriormente, o hardware estava sendo implantado manualmente, então as chances de as configurações serem inconsistentes eram bastante altas. Isso muitas vezes levou a discrepâncias que não funcionaram bem para a aplicação.
Introdução à computação em nuvem
A computação em nuvem tem sido capaz de lidar com a maioria dos problemas mencionados acima, se não com todos eles. Não há necessidade agora de rack e empilhar hardware. Os custos associados à configuração manual do hardware não existem mais. Também hoje existem muitos aplicativos de computação em nuvem no mundo real que ajudam a resolver os problemas. Bancos de dados, servidores e outras infraestruturas podem ser facilmente girados agora.
Não há nenhum problema quando se trata de disponibilidade e escalabilidade do seu aplicativo. No entanto, uma questão ainda permanece. A questão de manter a consistência da configuração associada à configuração manual da infraestrutura para computação em nuvem ainda existe. É aí que entra a infraestrutura como código (IaC).
O que é Infraestrutura como Código?
Infraestrutura como código ou IaC é o uso de um modelo descritivo para gerenciar diferentes aspectos da infraestrutura em nuvem, incluindo redes, topologia de conexão, máquinas virtuais e outros. A versão do modelo descritivo mencionado acima é a mesma usada no código-fonte pelas equipes de DevOps.
Os modelos IaC funcionam no princípio DevOps, que afirma que o mesmo código-fonte pode ser usado para gerar o mesmo binário – Sempre que aplicado, o IaC cria o mesmo ambiente. O IaC é considerado uma importante técnica de DevOps. É combinado com entrega contínua para alcançar o resultado desejado.
O IaC elimina a necessidade de usar scripts pontuais ou fazer alterações na configuração para fazer modificações na infraestrutura. Em vez disso, ele gerencia a infraestrutura de operações por meio das mesmas estruturas e regras usadas para o desenvolvimento de código.
O objetivo é não fazer com que engenheiros de sistema, administradores e outros operadores configurem uma nova máquina desde o desenvolvimento do código. O IAS permite que o código escrito traga as mudanças necessárias no estado da nova máquina. Quando esse código é executado, a máquina deve se mover para o estado desejado sem exigir intervenção humana.

O IaC permite que as equipes de DevOps comecem a testar aplicativos em um estágio muito inicial da fase de desenvolvimento. Essas equipes usam esse modelo para estabelecer esses ambientes para testes de forma confiável e sob demanda. O IaC também é usado para eliminar vários problemas de implantação. Com base em como o IaC funciona, a nuvem geralmente estabelece e derruba ambientes. Você pode saber mais sobre o tutorial de arquitetura DevOps aqui, que pode esclarecer mais sobre esse tópico.
O que IaC não é?
Há pessoas que consideram o IaC como uma alternativa aos princípios de rede, o que é um equívoco muito grande. Esses conceitos podem parecer semelhantes apenas para aqueles que não tiveram tempo para entendê-los adequadamente. Uma vez que você passe completamente por esses conceitos, você não terá nenhum problema em perceber que existem diferenças claras que existem entre eles.
Embora você possa usar esses dois conceitos para construir sua infraestrutura, ainda precisa saber como funcionam o roteamento de rede, a arquitetura de rede, o tráfego de rede e a configuração de rede. Esses são fundamentos de rede que também desempenham um papel crítico no IaC. A confusão não termina com os princípios conflitantes de ambos os conceitos.
Muitas pessoas também pensam que o IaC torna as operações redundantes ao transformá-las em desenvolvimento. Bem, isso está longe de ser verdade. As operações sempre têm um papel importante a desempenhar em todas as organizações.
A rede, há alguns anos, envolvia escrever scripts de configuração e configurar a infraestrutura e a rede manualmente. Muita gente ainda pensa que IaC não é nada além de usar a metodologia DevOps para esse gerenciamento de configuração, o que não é verdade. IaC automatiza até mesmo os scripts de configuração. Promove o uso de um sistema que pode ser configurado por código e que pode ser dimensionado.
Infraestrutura mutável e imutável
Uma das maiores decisões que você precisa tomar ao usar o IaC para automatizar a infraestrutura é escolher se deseja provisionar uma infraestrutura mutável ou imutável. Vamos ver como esses dois são diferentes.
A infraestrutura mutável pode ser atualizada ou alterada após ser provisionada. Ele fornece a flexibilidade necessária para personalizações ad hoc para lidar com vários problemas, incluindo um problema de segurança imediato ou relacionado à consideração de requisitos de aplicativo ou desenvolvimento.
Essa infraestrutura vem com uma desvantagem – ela não permite consistência entre versões ou implantação. O rastreamento de versão também é bastante difícil com infraestrutura mutável.
Essa é uma das razões pelas quais a maioria das pessoas usa o IaC para provisionar infraestrutura imutável. Uma vez provisionado, ele nunca poderá ser atualizado ou alterado. A única maneira de modificar a infraestrutura imutável é substituí-la. A infraestrutura imutável é mais prática e viável do que sua contraparte.
Ele permite que o IaC siga um caminho lógico, permitindo oferecer todos os benefícios que é capaz de oferecer. Ele elimina o desvio de configuração e torna os ambientes de teste e implantação mais consistentes. Mesmo a manutenção e o rastreamento de versões não são muito difíceis com a infraestrutura imutável.
Princípios do IAC
Poucas empresas conhecem a arte de usar adequadamente o IaC em seu benefício. Em outras palavras, são poucas as empresas que possuem o know-how tático para encaixá-lo em sua estrutura existente.
Portanto, existem maneiras erradas de implementá-lo também. Tentar fazer com que o IaC funcione junto com sua última geração e ferramentas legadas é uma das muitas maneiras erradas. Existem alguns princípios que podem ajudá-lo a lidar com essas questões.

1. Fácil reprodutibilidade do sistema: IaC pode ser usado para reproduzir qualquer parte da infraestrutura sem muito esforço e usando muito do seu tempo. IaC acaba com a incerteza que vem com o processo. O provisionamento de novos ambientes e serviços é algo que pode ser feito com muito mais confiança com o IaC.
2. Maior flexibilidade: você terá problemas se sua infraestrutura não oferecer soluções para os problemas que seu aplicativo apresenta. Esses problemas podem estar associados a muitas coisas diferentes, incluindo compatibilidade de rede, configuração e armazenamento. A IaC pode oferecer soluções flexíveis para questões relacionadas a essas coisas.
3. Design dinâmico: IaC segue um princípio que diz que enfatiza um design que pode ser alterado. Não é muito fácil dizer as mudanças que um sistema pode sofrer ao longo de um período de tempo. Seja uma atualização ou modificação, ter uma infraestrutura que possa ser alterada sempre que necessário é sempre melhor do que uma infraestrutura muito rígida nesse sentido.
Conclusão
As equipes de DevOps que usam IaC são capazes de provisionar rapidamente ambientes de natureza estável. Não há necessidade de configurar os ambientes manualmente, e isso traz mais consistência ao processo. Dependências ausentes ou desvio de configuração são problemas de tempo de execução que não existem quando você implanta a infraestrutura usando esse modelo.
Se você estiver interessado em aprender mais sobre aprendizado de máquina de computação em nuvem, confira o PG Diploma in Machine Learning & AI do IIIT-B & upGrad, projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, Status de ex-aluno do IIIT-B, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.