A infraestrutura imutável é a prática de substituir, e não modificar, servidores e outros recursos de TI quando são necessárias alterações.
As organizações podem gerenciar a infraestrutura por meio de duas abordagens: mutável e imutável. A infraestrutura imutável substitui totalmente os servidores em vez de modificá-los. A infraestrutura mutável modifica os servidores no local, aplicando atualizações, patches e alterações de configuração diretamente aos servidores de produção.
Como está modificando principalmente servidores existentes, a infraestrutura mutável pode parecer mais eficiente. No entanto, dois fatores geralmente tornam a infraestrutura imutável mais prática e preferível.
Primeiro, a computação em nuvem e a conteinerização transformaram a velocidade da implementação. As organizações agora podem substituir máquinas virtuais (VMs) e contêineres em minutos, em vez das horas necessárias para servidores físicos. As ferramentas de automação de infraestrutura podem provisionar e configurar novos servidores e recursos de TI e aplicar alterações uniformes em escala.
Em segundo lugar, a infraestrutura imutável pode reduzir significativamente o desvio de configuração, uma funcionalidade comum da infraestrutura mutável, em que um sistema diverge gradualmente de seu estado pretendido à medida que as alterações se acumulam. O desvio de configuração é especialmente comum quando problemas de rede interrompem o processo de implementação, causando atualizações parciais ou com falha. Esse desvio pode levar a um desempenho insatisfatório, vulnerabilidades de segurança e violações de conformidade.
Por exemplo, ao implementar uma atualização de segurança em 100 servidores de produção, as ferramentas de automação podem criar 100 novos servidores com a atualização pré-instalada e validá-los de forma isolada. Uma vez validados, eles redirecionam o tráfego e descomissionam os servidores antigos, tudo em minutos com downtime zero.
A infraestrutura imutável segue um fluxo de trabalho de três fases: provisionar novos recursos, implementá-los e permitir a recuperação instantânea quando necessário.
Esse fluxo de trabalho se aplica a servidores, contêineres, VMs, funções ou qualquer outro recurso de infraestrutura durante todo o seu ciclo de vida.
O provisionamento cria automaticamente novos componentes de infraestrutura de TI que usam infraestrutura como código (IaC), uma prática que utiliza modelos declarativos ou código para definir os estados de infraestrutura pretendidos.
Para atualizar um ambiente imutável, as equipes criam um recurso totalmente novo com a configuração definida, em vez de usar o SSH (um protocolo de rede para acesso seguro a servidores remotos) para modificar os existentes.
Todas as alterações de infraestrutura são, então, documentadas em sistemas de controle de versão como o Git, garantindo que sejam testadas e reproduzíveis.
As ferramentas comuns de provisionamento incluem:
Terraform: a plataforma de infraestrutura como código da HashiCorp provisiona e gerencia infraestrutura nos ambientes AWS, Google Cloud, Azure e no local por meio de suas APIs, com sintaxe HCL declarativa e arquivos de estado para rastrear alterações.
Docker: cria imagens de containeres leves com base em sistemas de arquivos em camadas e virtualização no nível do sistema operacional, principalmente em sistemas Linux, mas também Windows e macOS, permitindo uma implementação mais rápida do que VMs tradicionais.
Packer: a ferramenta da HashiCorp que cria imagens de máquinas idênticas simultaneamente para múltiplos provedores de nuvem e plataformas (AMIs para AWS, modelos VMware, contêineres Docker) a partir de uma única configuração JSON ou HCL.
AWS CloudFormation: ferramenta nativa da AWS baseada em modelos JSON/YAML para provisionar recursos da AWS com reversão integrada e detecção de desvio.
Pulumi: plataforma de IaC que usa linguagens de programação familiares (Python, TypeScript, Go) em vez de linguagens específicas do domínio, permitindo que os desenvolvedores usem construções de programação padrão como loops e condicionais.
Vale a pena mencionar que o Puppet e o Chef foram originalmente projetados para infraestrutura mutável, onde atualizam servidores no local, embora algumas equipes agora os adaptem juntamente com abordagens imutáveis.
As implementações na infraestrutura imutável são atômicas: ou elas são completamente bem-sucedidas ou não ocorrem. Essa abordagem se alinha às práticas de DevOps e pipelines de integração contínua, que enfatizam testes automatizados, iteração rápida e implementações confiáveis.
As ferramentas de automação implementam a nova versão do recurso, redirecionam o tráfego para ele e, em seguida, desativam o antigo. Se surgirem problemas durante a implementação, o recurso antigo permanecerá intocado e operacional, eliminando o downtime e os riscos de dependência.
Ferramentas comuns de implementação e orquestração incluem:
Kubernetes: plataforma de orquestração de contêineres de código aberto que gerencia aplicações conteinerizadas nativas da nuvem em escala por meio de autocorreção, expansão automática e atualizações contínuas em agrupamentos de máquinas.
Como os servidores na infraestrutura imutável são efêmeros (estão sendo constantemente substituídos), os dados persistentes devem ser armazenados externamente. As organizações usam cloud databases, block storage ou object storage para manter os dados separados dos servidores que estão sendo substituídos.
Quando um novo servidor fica on-line, ele se reconecta aos dados existentes por meio desses sistemas de armazenamento externo. A configuração e os metadados frequentemente residem em sistemas de controle de versão como o Git.
Cada atualização cria uma nova instância, mantendo uma imagem limpa para reversão. As mesmas ferramentas de automação que provisionam e implementam podem restaurar versões anteriores em minutos. As equipes reimplementam a imagem anterior em vez de depurar e solucionar problemas de servidores modificados, reduzindo muito o trabalho de investigação tradicionalmente necessário quando as alterações de gerenciamento de configuração falham.
Boletim informativo do setor
Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.
Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.
Os benefícios de uma infraestrutura imutável estão amplamente relacionados ao processo de implementação, cuja imutabilidade a torna mais simples e consistente.
A infraestrutura imutável elimina estados de servidor ambíguos por meio de implementações atômicas: as atualizações são completamente bem-sucedidas ou não ocorrem.
As infraestruturas mutáveis correm o risco de atualizações parciais que levam a estados “intermediários” imprevisíveis, com características que não são totalmente conhecidas pelos administradores. Essa situação pode dificultar a solução de problemas e aumentar os riscos de segurança.
Uma infraestrutura imutável elimina a possibilidade de tal estado. Se uma atualização falhar, o servidor permanecerá em seu estado bem documentado. Se tiver sucesso, o novo servidor chegará totalmente configurado e testado.
A infraestrutura imutável ajuda a permitir o rápido escalonamento horizontal, a prática de atender à demanda adicionando um número maior de máquinas menores a uma rede (em vez de uma máquina grande). Um sistema escalonado horizontalmente é mais tolerante a falhas e pode reduzir gargalos de processamento distribuindo sua carga de trabalho.
Essa abordagem é realizada usando balanceadores de carga, que distribuem o tráfego de rede entre vários servidores para melhorar o desempenho. Ferramentas como o Nginx e o AWS Elastic Load Balancing (ELB) da Amazon ajudam a apoiar essa prática usando um algoritmo para atribuir solicitações de usuário ao servidor mais eficiente em qualquer momento específico.
Essa combinação de balanceamento de carga e orquestração de contêineres torna a infraestrutura imutável, com seus modelos reproduzíveis, essencial para levantar vários servidores idênticos em curto prazo. Essa configuração pode ser especialmente útil quando as redes esperam grandes picos de tráfego, como durante um feriado de compras ou venda de ingressos. Também ajuda na coordenação entre regiões globais onde o tráfego aumenta em horas diferentes e, às vezes, sobrepostas.
A infraestrutura imutável fortalece a segurança, eliminando "estados de floco de neve" imprevisíveis (servidores com configurações desconhecidas após atualizações com falha) e mantendo trilhas de auditoria completas de todas as alterações.
Cada servidor está em conformidade exatamente com o arquivo de imagem de origem que o descreve, simplificando a identificação de vulnerabilidades de segurança, como instalações não autorizadas de software ou escalada de privilégios, e a execução de auditorias de segurança. Os sistemas de controle de versão rastreiam cada alteração feita no sistema, incluindo quem a fez, quando e por quê. Esse histórico imutável permite análises forenses e respostas a incidentes mais rápidas. As equipes podem identificar imediatamente as configurações comprometidas e reverter para os estados de bom funcionamento, se necessário.
Uma infraestrutura imutável também elimina a necessidade de usar logins do Secure Shell (SSH) para editar os servidores no local, reduzindo a superfície de ataque da rede.
A imutabilidade também apresenta compensações em comparação com uma infraestrutura mais tradicional e mutável, principalmente em relação ao armazenamento de dados.
Em uma infraestrutura mutável, um servidor pode gravar dados críticos de aplicações no disco local, tornando perigoso ou potencialmente impactante o sistema excluir e substituir esse servidor e disco. Portanto, em uma infraestrutura imutável, os dados devem ser armazenados externamente, adicionando um nível adicional de complexidade ao sistema.
Esse método pode ser feito usando armazenamento de dados externo, como cloud databases, block storage ou object storage. Quando uma nova máquina virtual fica online, ela pode se reconectar sem dificuldades aos dados existentes por meio desse armazenamento externo. As organizações geralmente mantêm a configuração e os metadados em sistemas de controle de versão, como o Git.
No entanto, a verdadeira "imutabilidade" de uma infraestrutura imutável às vezes é contestada. Essa limitação ocorre porque os dados do usuário da rede armazenados externamente estão em um estado constante de fluxo e, portanto, não podem ser comparados a um estado conhecido.
Escale automaticamente sua infraestrutura de TI existente para obter maior desempenho com custos reduzidos.
Descubra como a IA para operações de TI fornece os insights de que você precisa para ajudar a impulsionar o desempenho excepcional dos negócios.
Vá além da automação de tarefas simples para lidar com processos estratégicos voltados para o cliente e geradores de receita, com adoção integrada e escalabilidade.