Então, partindo deste conceito, podemos dizer que uma infraestrutura imutável é uma estrutura onde seus componentes básicos não podem ser mudados ou modificados.
Nesta primeira imagem, podemos ver como são realizadas as mudanças em uma estrutura mutável, ou seja, onde podemos mudar os componentes. Neste caso, trata-se de sistemas e aplicações em um servidor.
Neste exemplo, podemos ver que houve a atualização de uma aplicação web e a mudança de um servidor web, e após a reinicialização da máquina, deveríamos ter tudo funcionando corretamente.
Temos que imaginar que, durante o processo de atualização e mudança de sistemas, por mais que a equipe siga padrões já pré-estabelecidos, cada um realiza as tarefas a seu modo. Isso pode gerar uma série de problemas. E se imaginarmos que em uma infraestrutura de alta disponibilidade o principal objetivo é manter o sistema operando o maior tempo possível, ter que reiniciar máquinas não é a melhor solução.
A figura abaixo mostra uma infraestrutura imutável e como ela é operada para reduzir a margem de erros e o tempo fora de operação.
Em uma infraestrutura imutável, o estado do servidor não está sujeito a mudanças. Podemos perceber que é uma maneira alternativa de construir uma infraestrutura e ajuda a corrigir muitos dos problemas encontrados na abordagem de infraestrutura mutável.
No exemplo da imagem acima, a equipe de operações atualiza diretamente os sistemas e aplicações no código da imagem que será usada como base e não manualmente no servidor. Então, após essas mudanças no código, a equipe de desenvolvimento pode passar a realizar os testes em um ambiente isolado. Este, sendo validado, pode ser novamente passado para a equipe de operações que, a partir deste, passa a criar uma nova instância de um servidor usando alguma ferramenta de continuous integration.
Claramente já podemos perceber um grande benefício do uso deste tipo de solução. Quando há o deploy por parte da equipe de operações, este já foi testado em um outro ambiente e validado. Portanto dificilmente teremos um erro neste processo.
Tendo isso sido feito, em algum momento o antigo servidor será destruído e a operação seguirá normalmente.
Essa técnica remonta aos tempos onde os mineradores colocavam pequenos canários em gaiolas dentro das minas. Desta forma, caso acontecesse o vazamento de algum gás nocivo ao ser humano, isso afetaria primeiro o canário, mostrando assim que algo está errado.
Este pensamento foi colocado para a validação de estruturas imutáveis, conseguindo assim que parte do tráfego de uma aplicação web, por exemplo, seja direcionado a servidores que foram alterados. Então, caso alguma coisa estivesse errada, apenas uma pequena parte dos usuários sofreria um impacto, o que possibilitaria a correção.
Esse tipo de estrutura pode ser uma grande vantagem para a grande maioria das empresas e dos sistemas. No entanto, entendemos que em alguns casos não é viável o uso deste tipo de solução.