Explorar o ambiente de implantação
Suponha que você já tenha recebido uma chamada de suporte de emergência no meio da noite por causa de um servidor com falha.
Nesse caso, você sabe a dor de pesquisar várias planilhas ou até mesmo sua memória para acessar as etapas manuais de configuração de um novo computador.
Em seguida, há também a dificuldade de manter os ambientes de desenvolvimento e produção consistentes.
Uma maneira mais fácil de remover a possibilidade de erro humano ao inicializar computadores é usar a Infraestrutura como Código.
Implantação manual versus infraestrutura como código
Uma analogia comum para entender as diferenças entre a implantação manual e a infraestrutura como código é a distinção entre possuir animais de estimação e possuir gado.
Quando você tem animais de estimação, você nomeia cada um deles e os considera como indivíduos; se algo terrível acontecer com um de seus animais de estimação, você está inclinado a se importar muito.
Se você tem um rebanho de gado, você ainda pode nomeá-los, mas você considera seu rebanho.
Em termos de infraestrutura, pode haver sérias implicações com uma abordagem de implantação manual se uma única máquina falhar e você precisar substituí-la (animais de estimação).
Se você adotar a infraestrutura como uma abordagem de código, poderá provisionar outra máquina com mais facilidade sem afetar negativamente toda a infraestrutura (gado) se uma única máquina falhar.
Implementando a infraestrutura como código
Com a infraestrutura como código, você captura seu ambiente (ou ambientes) em um arquivo de texto (script ou definição).
Seu arquivo pode incluir redes, servidores e outros recursos de computação.
Você pode verificar o script ou o arquivo de definição no controle de versão e, em seguida, usá-lo como a origem para atualizar ambientes existentes ou criar novos.
Por exemplo, você pode adicionar um novo servidor editando o arquivo de texto e executando a linha de liberação, em vez de acessá-lo remotamente no ambiente e provisionar manualmente um novo servidor.
A tabela a seguir lista as diferenças significativas entre a implantação manual e a infraestrutura como código.
Implantação Manual | infraestrutura como de código |
---|---|
Servidores Snowflake. | Um servidor consistente entre ambientes. |
As etapas de implantação variam de acordo com o ambiente. | Os ambientes são criados ou dimensionados facilmente. |
Mais etapas de verificação e processos manuais mais elaborados. | Criação totalmente automatizada de atualizações de ambiente. |
Documentação aumentada para considerar as diferenças. | Transição para a infraestrutura imutável. |
Implantação nos fins de semana para permitir tempo de recuperação de erros. | Use implantações azul/verde. |
Cadência de liberação mais lenta para minimizar a dor e fins de semana longos. | Trate os servidores como gado, não animais de estimação. |
Benefícios da infraestrutura como código
A lista a seguir são benefícios da infraestrutura como código:
- Promove a auditoria facilitando o rastreamento do que foi implantado, quando e como. (Em outras palavras, melhora a rastreabilidade).
- Fornece ambientes consistentes de uma versão para outra.
- Maior consistência em ambientes de desenvolvimento, teste e produção.
- Automatiza processos de aumento de escala e expansão horizontal.
- Permite que as configurações sejam controladas por versão.
- Fornece recursos de revisão de código e teste de unidade para ajudar a gerenciar alterações de infraestrutura.
- Usa processos de serviço imutáveis de , ou seja, se uma alteração for necessária em um ambiente, um novo serviço é implantado e o anterior é removido, sem ser atualizado.
- Permite implantações azul/verde . Essa metodologia de versão minimiza o tempo de inatividade em que existem dois ambientes idênticos: um está ativo e o outro não. As atualizações são aplicadas ao servidor que não está ativo. Quando o teste é verificado e concluído, ele é trocado com os diferentes servidores dinâmicos. Ele se torna o novo ambiente ao vivo, e o ambiente ao vivo anterior não é mais o ativo.
- Trata a infraestrutura como um recurso flexível que pode ser provisionado, desprovisionado e reprovisionado como e quando necessário.