Infraestrutura Imutável

infraestrutura-imutavel

Em uma infraestrutura tradicional no mundo de TI, temos servers que são continuamente alterados ou atualizados ao longo do tempo, seja por uma demanda de serviço, aplicação, segurança, entre outras. Nesse modelo, os servidores são acessados de forma local ou remota, para ser feito alguma alteração, como, por exemplo, efetuar um novo deploy, patch de correção, alteração em arquivos de configuração do server. No final das contas, esses servers sofrem inúmeras mudanças ao longo do tempo, isso constitui o modelo de infraestrutura mutável.

 

O que é?

No outro lado, temos o modelo de infraestrutura imutável, servers que a partir do momento que são criados, nunca sofrem alterações. Um paralelo muito interessante é o conceito de objetos imutáveis dentro do paradigma de Orientação a Objetos, além de claro, demonstrar que a imutabilidade é utilizada em diversas áreas e assuntos. A definição está da seguinte forma: “Na programação orientada a objetos e funcional, um objeto imutável (objeto inalterável) é um objeto cujo estado não pode ser modificado após a criação” (Fonte:Wikipedia).

O conceito se estabelece basicamente em construir os componentes da infraestrutura para um conjunto exato de especificações. Sem desvio, sem alterações. Se for necessária uma mudança para uma especificação, um novo conjunto de infraestrutura será provisionado com base nos requisitos atualizados e a infraestrutura anterior será apagada, já que é obsoleta e não deve existir mais.

 

Por quê?

Como podemos notar nos últimos anos, a adoção de novos conceitos ou determinadas tecnologias, tem acontecido de maneira cada vez mais natural e rápida. Tivemos mudanças em como gerenciamos e organizamos times, em como desenvolvemos aplicações, e como operamos tudo isso para uma entrega de valor. Tivemos cada vez mais a adoção de metodologias ágeis, arquiteturas que visam escalabilidade, resiliência, ser responsivo, e, como operar tudo isso de uma maneira que o time de operação seja capaz de acompanhar a velocidade em que uma demanda é desenvolvida, mantendo estável e seguro.

Por isso, falamos em infraestrutura imutável e em como podemos endereçar todos esses pontos e atendê-los.

Precisamos entender quais práticas são necessárias para implementar o modelo, com Continuous Delivery, Virtualização de Ambientes e Cloud Computing.

O Continuous Delivery é a capacidade de obter mudanças de todos os tipos – incluindo novos recursos, correções de bugs e experiências – em produção ou nas mãos dos usuários, de forma segura, rápida e sustentável. Este é o primeiro passo para garantirmos um software estável e proporcionar um sistema imutável, que está sendo criado e testado para não falhar e sempre em busca de melhorias.

A Virtualização de Ambientes é a tecnologia que permite criar vários ambientes simulados ou recursos dedicados a partir de um único sistema de hardware físico. A virtualização torna possível a criação de maquinas inteiras ou parciais sob demanda, além do código para montar essa infraestrutura estar sendo mantido junto com o código da aplicação e de participar da esteira de entrega contínua, tudo de forma automatizada.

 

Cloud Computing

Até agora falamos sobre a automatização do processo de entrega de software e a automatização do ambiente que vai hospedar esse software. Mas onde fica a infraestrutura física disso tudo?

Fica principalmente em algum provedor de Cloud. Mas para entendermos, vale a pena ressaltar melhor o conceito de uma infraestrutura em Cloud. Muitas empresas acabam utilizando como uma versão da sua infraestrutura hospedada fora do seu parque interno, utilizando de práticas que não são as melhores para Cloud. Atualmente, as instâncias da nuvem ainda são usadas como hardware no passado. Você configurou uma vez e atualiza sempre que necessário. O problema é que os servidores em nuvem não se destinam a ser sólidos ou duráveis.

A vantagem deles é que os mesmos são padronizados e fáceis de substituir. Os servidores em nuvem são como peças do Lego que podem ser alteradas sempre que necessário. Se você quiser ter uma cor diferente, basta trocar a peça por uma nova. Você não pintaria uma peça de lego, certo?

 

Como funciona?

Existem diversas estratégias para implementar o modelo utilizando as abordagens citadas, e pretendemos em um futuro artigo, apresentar como o fazemos aqui na Certsys todo o nosso pipeline de entrega contínua, desde a concepção do use case e desenvolvimento, até a criação da máquina de forma automatizada, a adição ou remoção de uma ambiente e como monitorar toda essa infraestrutura.

 

Ganhos
  • Automatizar o ganho em escalabilidade na nuvem;
  • Deploy contínuo rápido e eficaz;
  • A operação se torna muito mais automatizada, utilizando o seu tempo para focar em problemas e predições que importam de fato;
  • Ir para uma versão mais antiga do sistema ou aplicação;
  • Replicar um modelo de produção na máquina dos desenvolvedores;
  • Testar cada componente de forma isolada;
  • Montar todo o ambiente em caso de falhas.

 

Conclusão

O que a infraestrutura imutável fornece realmente perturba a maneira como é feito o deploy de aplicações atualmente. A capacidade de aumentar a confiabilidade, a eficiência e a consistência dentro de um ambiente em que foi feito o deploy, para que possa ser recriado em poucos minutos, é inestimável. O atraso aumentará apenas o custo e o tempo para melhorar todo o processo e o produto. A ideia de avançar com imutabilidade é atual e vale muito a pena. Venha conhecer a Certsys e como ela aplica esse modelo em sua infraestrutura!

Posts Relacionados

Comentários