Há tempos, a forma dominante de manter nossas aplicações “rodando” tem sido através de infraestruturas “mutáveis”. Ou seja, compostas por servidores projetados para continuar funcionando por tempo indeterminado, recebendo atualizações na medida em que estas ficam disponíveis. Entretanto, esse “jeito de funcionar”, parece estar com os dias contados!
[tweet]Manter os servidores, em produção, devidamente atualizados e saudáveis é um desafio crescente.[/tweet] A menos que passemos a fazer as coisas de uma forma diferente da que fazemos hoje, nossos obstáculos só vão aumentar.
O “jeito mutável”, tem feito com que frequentemente, rotinas administrativas, mesmo as aparentemente inocentes, originem falhas notáveis em produção. Nem mesmo a adoção de ótimas ferramentas, como Puppet, Chef, Ansible e Octopus, tem sido suficientes para impedir que coisas assim aconteçam.
A raiz das dificuldades relacionadas as infraestruturas “mutáveis”, acreditamos, é a “complexidade” crescente e manifesta em suas quatro origens comuns:
- dimensionalidade alta, tanto nos diversos fluxos independentes de atualização quanto na heterogeneidade resultante nas diversas instâncias de servidores;
- interdependência crescente dos componentes, expressa na falta evidente de resiliência das arquiteturas;
- grande influência de fatores externos, sobretudo em atualizações que não tem qualquer relação com as demandas da aplicação operando em um servidor e que, mesmo assim, são instaladas e geram impactos negativos;
- baixíssima reversibilidade, assinalada na dificuldade de reverter “impactos colaterais” causados por rotinas de atualização que gostaríamos que fossem desfeitas.
As soluções para estas origens de complexidade, presentes nas infraestruturas “mutáveis”, passam pelo rompimento definitivo com o paradigma.
A recomendação tem sido para que, inspirados pelos contêineres, deixemos de utilizar servidores, incrementalmente atualizados, projetados para operar por tempo indeterminado. No lugar deles, que adotemos métodos ágeis para “levantar” e “derrubar” servidores, rapidamente, a partir de scripts de configuração. Esses servidores não seriam atualizados em produção, permanecendo “imutáveis”, sendo substituídos por novas instâncias sempre que necessário.
A “infraestrutura imutável”, combinada com o conceito de “infraestrutura como código”, possibilita, inclusive, com ferramentas como a Packer, da HashiCorp, que apliquemos as mesmas estratégias de CI/CD que já aplicamos com sucesso no desenvolvimento de aplicações. Dessa forma, temos:
- redução na dimensionalidade, uma vez que concentramos os fluxos de atualização sempre na atualização do script que gera a imagem dos servidores e que as instâncias passam a ter homogeneidade garantida pela utilização da mesma imagem;
- redução da interdependência, visto que o deploy da aplicação fica combinado com o da infraestrutura;
- menor influência do ambiente, uma vez que as imagens são projetadas em isolamento e podem ser testadas também em isolamento;
- aumento da reversibilidade, uma vez que, por serem imutáveis, os servidores não armazenam estado e podem ser gerados, rapidamente, por versões anteriores de seus scripts de configuração.
Em termos simples, infraestruturas “imutáveis” atacam as origens comuns da complexidade e, por isso, invariavelmente, são mais simples, eficientes e mais baratas.
Finalmente, mas não menos importante, infraestruturas “imutáveis” são plenamente alinhadas com os princípios da computação em nuvem. Afinal, a geração de novas instâncias, simplificada a partir de scripts, melhora a descartabilidade dos servidores e habilita a utilização de features como auto-scaling e self-healing.
Conteúdo superficial, não resolve nada, não serve nem pra teoria. Esperava mais de uma empresa chamada “Eximia”..
Bom, esperar oque, todo conteúdo desses sites é nesse sentido, oque me impressiona é o “dono” falar amadorismo remunerado, quando o mesmo parece ocorrer nesses blogs. 🙄
Mais uma vez, Jonas, você comenta e agradecemos pelo feedback honesto. Mais uma vez, verificamos que o email que você forneceu é falso. 😉
Se quiser fazer algo mais construtivo, entre em contato com a gente em um canal onde possamos entender melhor sua posição.
Em tempo, o post indicado pelo Jonas é esse aqui.
https://www.eximiaco.tech/pt/2019/05/31/somos-amadores-remunerados/
Kkkk.
Elemar… Tem que ser muito fã seu pra se dar o trabalho.
Excelente artigo Elemar, enriquecedor como sempre!
Sobre o menino Jonas, é incrível como sempre tem um menininho que fica sentido e acoado com tamanha qualidade técnica sua. Acho que todo artigo aparece um cara desses, nem se incomode rsrs.
Forte abraço!