Explorar o ambiente de implantação

Concluído

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.