Explore a implantação do ambiente

Concluído

Suponha que você já recebeu 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 em várias planilhas ou até mesmo na sua memória — para acessar as etapas manuais de configuração de uma nova máquina.

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 máquinas é usar a infraestrutura como código.

Implantação manual versus infraestrutura como código

Uma analogia comum para entender as diferenças entre implantação manual e 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 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 implicações graves 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 mais facilmente outra máquina sem afetar negativamente toda a sua infraestrutura (gado) se uma única máquina cair.

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 fonte para atualizar ambientes existentes ou criar novos.

Por exemplo, você pode adicionar um novo servidor editando o arquivo de texto e executando o pipeline de liberação em vez de recuperá-lo 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.

Implementação manual Infraestrutura como 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.
Aumento da documentação para ter em conta as diferenças. Transição para infraestrutura imutável.
Implantação nos fins de semana para dar tempo de recuperação de erros. Use implantações azuis/verdes.
Cadência de liberação mais lenta para minimizar a dor e fins de semana prolongados. Trate os servidores como gado, não como animais de estimação.

Benefícios da infraestrutura como código

A lista a seguir é os benefícios da infraestrutura como código:

  • Promove a auditoria, facilitando o rastreamento do que foi implantado, quando e como. (Por outras palavras, melhora a rastreabilidade).
  • Fornece ambientes consistentes de versão para versão.
  • Maior consistência em ambientes de desenvolvimento, teste e produção.
  • Automatiza os processos de scale-up e scale-out.
  • 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 na infraestrutura.
  • Usa processos de serviço imutáveis , ou seja, se uma alteração for necessária em um ambiente, um novo serviço será implantado e o antigo foi retirado, ele não será atualizado.
  • Permite implantações azuis/verdes . Essa metodologia de lançamento minimiza o tempo de inatividade quando existem dois ambientes idênticos — um é 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 ativos. Torna-se o novo ambiente ao vivo, e o ambiente ao vivo anterior não é mais o ao vivo.
  • Trata a infraestrutura como um recurso flexível que pode ser provisionado, desprovisionado e reprovisionado conforme e quando necessário.