Isolamento em aplicações

Em busca de aplicações mais escaláveis, flexíveis, tolerante a falhas e de fácil manutenção, uma das formas de atingir essas características é pensando em isolamento dentro das nossas aplicações, pois quando isolamos implementações, mais desacoplados nossas aplicações ficam, consequentemente essas características vão se tornando mais acessíveis.

Baseado nisso, o princípio de isolamento define a importância de isolamento em 4 aspectos, são eles: estado, espaço, tempo e falha.

Estado

Nossas aplicações devem ser isoladas de estados, ou seja, elas não devem compartilhar estados entre elas, como por exemplo, aplicações não devem
compartilhar banco de dados.

Isolamento de estado é uma boa prática já conhecida nos microserviços, onde microserviços que compartilham banco de dados geram problemas de acoplamento entre serviços por estarem dependentes da mesma fonte de dados, assim dificultando o controle dos dados por não saber a real forma de lidar com os dados, pois mais de uma aplicação está gerenciando e modificando estado.

Espaço

Nossas aplicações devem isolar espaço, ou seja, elas não devem estarem no mesmo espaço fisico, como por exemplo aplicações instaladas no mesmo servidor de aplicação ou mais de um serviço sendo executado na mesma maquina.

O problema de compartilhamento de espaço é a influência entre os serviço, onde em caso de sobrecarga em algum dos serviços os outros serviços instalados no mesmo espaço serão impactados, assim dificultado a investigação de problemas.

Tempo

Nossas aplicações devem isolar tempo, ou seja, elas devem exercer sua ações sem sofrer influência de fatores externos, como por exemplos comunicações assíncronas, que não dependem de respostas.

Aplicações que não isolam espaço são afetadas diferente pelo tempo de execuções de outras aplicações, em outras palavras, se uma aplicação A faz uma requisição na aplicação B e você aguarda uma resposta (por exemplo em requisições HTTP – request/response) automaticamente a aplicação A depende do tempo de resposta da aplicação B, isso que dizer que, se a aplicação B demorar para responder a aplicação A também demora para responder.

Em comunicações síncronas, que não isolam tempo, é muito comum termos que fazer medições ou tracing das comunicações para investigações de performance, pois como o tempo não está isolado, é necessário investigar em qual ponto ocorre o excesso de tempo.

Falha

Nossas aplicações devem isolar as falhas, ou seja, quando houver falhas (elas vão acorrer uma hora, é inevitável) elas não devem ser propagadas para toda a solução, por exemplo, em casos de um banco de dados sobrecarregado, onde o retorno é demorado, não devemos continuar tentando acessar o banco também sobrecarregando a aplicação e fazendo com que ela também não suporte e falhe como um todo.

A idéia de microserviços vai ao encontro de isolar falhas, onde temos como conceito falhar menor, ou seja, falha apenas o serviço que está com problema e não toda solução.

Outro fator importante, é que se estamos isolando estado, espaço e tempo tem grande chance da nossas falhas também estarem sendo isoladas.

Conclusão

O conceito de isolamento é um importante ponto para alcançarmos características “modernas” nas nossas soluções, como: escalabilidade, flexibilidade, tolerância a falhas, etc, por estarem estruturadas mais desacopladas, o que faz com que essa separação facilite a manutenção e evolução das nossas aplicações.

Além disso, o isolamento auxilia muito na investigação de problemas, onde estado, espaço, tempo e falhas estarão isoladas, as análises serão mais direcionadas, assim reduzindo complexidade.

Apensar do princípios de isolamento fazer bastante sentido com microserviços e com outras abordagens como arquitetura reativas, o isolamento também pode ser aplicado em qualquer tipo de arquitetura, basta estruturar as implementações de forma que seja possível isolar estado, espaço, tempo e falhas.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.