Menu English version
Blog Infra como Código

4 aspectos importantes de um sistema dinâmico e auto-suficiente

Entenda como o DevOps pode tornar o trabalho da sua equipe mais produtivo e eficiente

Qualquer sistema que pretenda ser totalmente automatizado e auto-suficiente deve ser capaz de resolver automaticamente as suas falhas e de adaptar-se a novas configurações. Em geral, ele precisa no mínimo ser capaz de realizar o monitoramento e execução de certas ações nos níveis de serviços e de infraestrutura.

Dois eixos podem representar o conjunto de ações que um sistema pode executar. Um grupo é representado a partir das diferenças entre a infraestrutura e os serviços. O outro eixo pode ser explicado pelo tipo de atividades realizadas, como a auto-recuperação e a auto-adaptação.  

O tipo mais comum de auto-recuperação, quando aplicado à infraestrutura, é recriar um node no qual ocorreu uma falha.  Quando a infraestrutura precisa se adaptar a novas condições e configurações, é preciso redimensionar os nodes. A auto-recuperação nada mais é do que a reconfiguração automática de serviços nos quais ocorreram falhas.

 

sistema dinâmico

 

O uso de sistemas estáticos

Todo o sistema possui um design próprio: ele pode permanecer inalterado por um longo período de tempo, ou pode ser redesenhado a cada poucos minutos. A freqüência de uma mudança de um design do sistema distingue aqueles que são estáticos dos que são dinâmicos.

Durante muitos anos da indústria de software, o foco foi produzir projetos duradouros e praticamente imutáveis. Era gasto muito tempo planejando um sistema e ainda mais tempo projetando-o antes de realizar a implementação. Havia um um extenso planejamento realizado com antecedência e ele era executado em fases muito longas. Na maioria das vezes, o resultado seria um fracasso, mas este não é o foco da discussão neste post. Se você trabalhou nesta indústria de TI há algum tempo, você provavelmente se identificou com essa situação. Felizmente, se a sua empresa tem o foco na inovação e realizou mudanças, os projetos estáticos são a cada dia mais incomuns na sua equipe!

 

Os sistemas dinâmicos e a auto-adaptação

Os sistemas dinâmicos são caracterizados por mudanças de design muito frequentes, e não contínuas. Toda vez que tomamos uma decisão consciente de mudar algo dentro de um sistema, estamos mudando o design dele. Cada uma dessas alterações é resultado do erro de cálculo inicial ou da modificação nas condições externas que estão afetando aquilo que tinha sido inicialmente planejado. Um aumento constante no tráfego requer uma mudança no design, por exemplo. Na maioria dos casos, é possível utilizar recursos que estão ociosos na infraestrutura para aumentar a disponibilidade dos serviços.

A auto-adaptação é uma maneira automatizada de mudar o design de um sistema. Quando nós (humanos) mudamos, fazemos isso avaliando as métricas. Pelo menos, devemos fazê-lo assim. Caso contrário, é como se fosse uma consulta a uma bola de cristal: decisões são tomadas utilizando a adivinhação ou opiniões sem embasamentos na realidade do sistema.

Se nós pudermos tomar decisões com base em métricas, o sistema também pode realizar isso por si mesmo. Não importa quem vai mudar o sistema: cada alteração é uma modificação do design. Se isso puder ser feito de maneira automatizada, há um ganho de produtividade para a equipe e o uso efetivo da capacidade de auto-adaptação.

 

Auto-recuperação x Auto-adaptação

Já a auto-recuperação não afeta diretamente o projeto inicial. Em geral, é uma etapa que ocorre após a execução. Por exemplo, se houverem 4 nodes em funcionamento e o planejado eram 5, o sistema fará tudo o que for necessário para habilitar este último node. A mesma lógica aplica-se a qualquer outra parte quantificável do sistema. Por isso, o objetivo da auto-recuperação é garantir é o design desejado seja sempre seguido.

A auto-adaptação por sua vez, objetiva ter uma maneira automatizada de aplicar mudanças no projeto de um sistema. Assim, o design pode ser seguido a qualquer momento, de acordo com as circunstâncias apresentadas. Quando combinamos a auto-adaptação com a auto-recuperação, o resultado é um sistema verdadeiramente dinâmico, resiliente e tolerante a falhas e que oferece uma alta disponibilidade.

A adaptação é essencial não apenas para manter o sistema ativo, mas também para permitir que a equipe desenvolva os seus projetos com efetividade e agilidade. Por isso, é importante que os membros do time tenham em mente a importância destes quatro aspectos na hora de desenvolver os seus sistemas.  

Post produzido em parceria com a CloudBees.