O paradigma comum de desenvolvimento de software de forma monolítica, na qual toda a solução é gerada de uma só vez, já está ficando no passado. A nova onda é o uso de microserviços sendo que novos desafios surgem em questão de implantação e comunicação. O service mesh aparece então como uma alternativa.
Utilizar-se de microserviços dentro do desenvolvimento de software tem se mostrado a melhor alternativa na hora de criar soluções robustas e desacopladas entre si, facilitando o processo de geração de código.
Porém, o número de falhas pode aumentar consideravelmente, levando em conta que existem questões, como segurança, comunicação e transferência de dados que acabam sendo prejudicadas e demandam um novo olhar. É disso que vamos falar ao longo deste post. Confira!
O QUE É SERVICE MESH?
Ao buscarmos aplicações baseadas em microserviços, a lógica de negócios se torna distribuída entre os mais diversos serviços que formam o nosso sistema e se comunicam em rede. Essa solução distribuída tem muito mais chances de falhar, uma vez que se tratam, na prática, de dezenas de sistemas autônomos, cada um com um papel dentro da lógica geral de negócio.
Dentro desse novo conceito, é preciso repensar em arquitetura e processos que atuem de forma a prevenir que as pequenas falhas comuns desse sistema se transformem em grandes problemas com o passar do tempo e as novas atualizações realizadas em cada serviço.
O service mesh é uma camada de infraestrutura configurável e de baixa latência, sendo projetada para trabalhar com um grande volume de comunicação entre serviços de uma determinada rede, utilizando interfaces de troca de informações, as chamadas APIs.
Ele garante que a troca de dados entre os serviços que estão dentro dessa rede seja realizada de forma rápida, confiável e segura. Para isso, são aplicadas várias tecnologias, como criptografia, balanceamento de carga, rastreabilidade, entre outras.
A estratégia para obter melhores resultados é clara, o service mesh não implementa o pattern proxy reverso, ou seja, de forma centralizada, como na grande maioria das arquiteturas orientadas a serviços. Pelo contrário, ele usa uma variante mais leve de proxy com cada um dos serviços dentro da rede. Também chamado de “sidecar”, já que todas as interfaces estão lado a lado.
Dessa forma, o service mesh é capaz de realizar o roteamento de tráfego de forma mais rápida entre os mais diversos serviços, aplicando políticas de acesso e controle de fluxo. Entre os frameworks atuais de service mesh, o que mais se destaca é o Istio, apoiado por gigantes do mercado, como a Google e a IBM.
COMO ELE ATUA NO GERENCIAMENTO DE FALHAS?
O principal problema que a arquitetura de microserviços nos traz é quanto às falhas que podem surgir quando o ambiente de soluções começa a ficar saturado, já que há diversos “co-sistemas” habitando em uma mesma infraestrutura e se comunicando diretamente.
GERENCIAMENTO DE FALHAS
Para realizar o gerenciamento de falhas dentro da arquitetura de microserviços, temos, basicamente, três estratégias a serem abordadas. São elas:
● testes pró-ativos ─ conforme a atualização de serviços dentro do ambiente avança, as falhas podem começar a aparecer conforme a comunicação fica prejudicada. Por conta disso, é preciso desenvolver testes que garantam a qualidade das alterações e que nada do que já funciona será prejudicado com o lançamento de uma atualização. O time de testes deve estar focado na pré-publicação;
● mitigação ─ mitigar é implementar estratégias que atuam como forma de redução de impacto quando houver qualquer tipo de falha, realizando o balanceamento de carga entre múltiplas estâncias, virtuais ou físicas, que asseguram que o serviço continuará respondendo;
● rápida resposta ─ por fim, independentemente da falha ocorrida, sua identificação e resolução devem ser rápidas para evitar que esse problema aumente ou afete os demais serviços rodando no mesmo ambiente e que dependem dele direta ou indiretamente.
ATUAÇÃO DO SERVICE MESH
Um framework de service mesh oferece uma infraestrutura robusta no que tange a um controle e gerenciamento de falhas, podendo reduzir, e muito, os problemas oriundos de comunicação e roteamento dentro do ambiente.
TESTES PRÓ-ATIVOS
Um framework de service mesh pode fazer roteamentos de teste, enviando parte das solicitações para uma nova versão do serviço enquanto balanceia o restante para a versão de produção durante os testes.
Por exemplo, 1% de todas as solicitações realizadas são direcionadas para a versão 1.1, que está sendo testada, enquanto que 99% delas continuam utilizando a versão 1.0, que já rodava em produção. Essa é apenas uma das estratégias de teste que podem ser realizadas.
MITIGAÇÃO
Vários motivos podem ser responsáveis por uma falha em qualquer dos serviços rodando dentro de seu ambiente, como:
● erros no código;
● falta de recursos no servidor;
● falhas de hardware;
● atualizações problemáticas.
Limitar o impacto geral desses erros é fundamental para que a aplicação continue rodando como um todo, mesmo que sem a presença do serviço que falhou.
Os frameworks de service mesh mitigam o impacto das falhas com a implementação de padrões de resiliência, balanceamento de carga, rate limit e circuit breakers, evitando colapsos na aplicação, mesmo com o surgimento de erros.
RÁPIDA RESPOSTA
Falhas são algo inevitável dentro de sistemas de informação, por isso a importância de manter um monitoramento constante para observar e rastrear problemas com o intuito de consertá-los o mais rápido possível.
Um service meshcoleta dados a todo momento acerca das funcionalidades existentes no ambiente e cria logs que podem ser analisados em busca de falhas ou indícios que possam levar a problemas futuros, auxiliando nesse controle.
COMO ELE PODE AUXILIAR A CONSTRUIR SOFTWARE MAIS RÁPIDO?
Os frameworks de service mesh trabalham realizando toda a gestão da rede entre os serviços, sendo que, dessa forma, os desenvolvedores não precisam se preocupar com a comunicação entre as várias APIs dentro de um sistema.
Além disso, a automatização de rotinas com publicações e testes agiliza ainda mais o trabalho de desenvolvimento, que pode focar realmente nas tarefas de programação e criação de novas features para a aplicação.
Tempo é dinheiro, e com desenvolvedores menos ocupados em gerenciar ambientes e infraestruturas, podemos ter uma maior produtividade onde realmente interessa, na criação de novas funcionalidades e desenvolvimento do negócio.
Chegamos ao final deste post e esperamos que ele possa ter esclarecido para você o que é service mesh e como esses frameworks são essenciais para empresas que buscam criar arquiteturas de microserviços em suas aplicações.
Se você gostou, não deixe de assinar nossa newsletter e para começar a receber alguns de nossos conteúdos exclusivos!