Pesquisar

Português

Login Account

Login / Registre-se Account

Websites

Microsserviços

O que é service mesh?

Uma service mesh é uma maneira de controlar como diferentes componentes de uma aplicação compartilham dados entre si. Diferentemente de outros sistemas de gerenciamento de comunicação, a service mesh é uma camada de infraestrutura dedicada, incorporada diretamente em uma aplicação. Essa camada de infraestrutura visível pode documentar o desempenho das interações entre os diferentes componentes da aplicação, facilitando a otimização da comunicação e evitando o tempo de inatividade, conforme a aplicação evolui.

Cada componente da aplicação é um "serviço" que depende de outros para atender às necessidades dos usuários. Se o usuário de uma aplicação de vendas on-line deseja comprar um produto, ele precisa saber se ainda está disponível no estoque. Nesse exemplo, o serviço que comunica com o banco de dados do inventário da empresa também precisa se comunicar com a página da web do produto que, por sua vez, precisa se comunicar com a seção do carrinho de compras on-line do usuário. Para agregar valor aos negócios, a loja on-line pode futuramente criar um serviço que oferece recomendações in-app de produtos. Para gerar as recomendações, esse novo serviço deverá se comunicar com um banco de dados de tags de produtos. Também precisará se comunicar com o banco de dados do inventário usado pela página do produto. Está claro que estamos falando de diversos componentes maleáveis e reutilizáveis.

Geralmente, as aplicações modernas são desmembradas dessa maneira: como uma rede de serviços, cada um realizando uma função de negócios específica. Para que um serviço execute sua função, provavelmente será necessário que solicite dados de vários outros serviços. Mas, o que acontece se alguns serviços, como o banco de dados do inventário da loja, ficarem sobrecarregados? A service mesh resolve o problema, encaminhando as solicitações de um serviço para o próximo e otimizando a forma como todos esses elementos funcionam juntos.


Mas os microsserviços já não fazem isso?

A arquitetura de microsserviços permite aos desenvolvedores fazer alterações nos serviços de uma aplicação sem a necessidade de reimplantá-la totalmente. Diferentemente do desenvolvimento de aplicações em outros tipos de arquitetura, os microsserviços são criados individualmente por diversas microequipes, com flexibilidade para escolher as ferramentas e linguagens de codificação que desejam usar. Basicamente, os microsserviços são projetados de maneira independente e são intercomunicáveis, de modo que a falha de um não resulte na interrupção completa da aplicação.

A essência dos microsserviços está na comunicação serviço a serviço. Não é necessária uma camada de service mesh para que a comunicação possa ser codificada em cada serviço, mas conforme a complexidade da comunicação aumenta, a service mesh se torna cada vez mais indispensável. No caso de aplicações nativas em nuvem criadas em uma arquitetura de microsserviços, a service mesh é uma maneira de englobar um grande número de serviços distintos em uma aplicação funcional.


Como isso funciona?

A service mesh não adiciona uma funcionalidade nova ao ambiente de execução da aplicação. Em qualquer arquitetura, as aplicações precisam de regras para especificar como as solicitações partem do ponto A e são recebidas pelo ponto B. A service mesh é diferente porque retira a lógica que rege a comunicação intrasserviço do âmbito individual e a transfere para uma camada de infraestrutura.

Para que isso seja possível, é necessário que a service mesh seja incorporada à aplicação como uma matriz de proxies de rede. Proxy é um conceito já conhecido pela TI corporativa. Se você estiver usando seu computador do trabalho para acessar esta página, provavelmente utilizou um proxy:

  1. A sua solicitação para acessar esta página partiu do seu computador e foi recebida primeiramente pelo proxy web da sua empresa.
  2. Após ser autorizada pela medida de segurança do proxy, a solicitação foi enviada para o servidor que hospeda esta página.
  3. Depois, esta página foi retornada ao proxy e novamente verificada pelas medidas de segurança.
  4. Por fim, a página foi enviada do proxy para o seu computador.

Em uma service mesh, as solicitações são encaminhadas entre microsserviços utilizando proxies em uma camada de infraestrutura própria. Por esse motivo, os proxies que compõem uma service mesh são, às vezes, chamados de "sidecars", pois são executados paralelamente a cada serviço, não dentro dele. Juntos, esses proxies "sidecars", desacoplados de cada serviço, formam uma rede em malha.

Um proxy sidecar reside ao lado de um microsserviço e encaminha solicitações para outros proxies. Juntos, esses sidecars formam uma rede em malha.

Sem a service mesh, é necessário codificar cada microsserviço com a lógica que rege a comunicação de serviço a serviço, resultando em menos tempo para que os desenvolvedores se concentrem nas metas de negócios. Além disso, a falta da malha dificulta a identificação de falhas na comunicação, pois a lógica que rege a comunicação entre serviços fica oculta dentro de cada serviço.


Como uma service mesh otimiza a comunicação?

Cada serviço novo adicionado à aplicação ou nova instância de um serviço existente executado em um container significa uma complicação a mais para o ambiente de comunicação e introduz novos pontos para possível falhas. Em uma arquitetura de microsserviços complexa, é praticamente impossível localizar onde os problemas ocorrem sem uma service mesh.

Isso deve-se ao fato de que a service mesh também captura todos os aspectos da comunicação de serviço a serviço como métricas de desempenho. Com o passar do tempo, é possível aplicar os dados fornecidos pela service mesh às regras de comunicação entre serviços para aumentar a eficiência e a confiabilidade das solicitações de serviço.

Por exemplo, se um determinado serviço falhar, a service mesh coletará os dados sobre o tempo até a retomada da atividade. Conforme os dados sobre períodos de falha de um determinado serviço se acumulam, é possível escrever regras para determinar o tempo de espera ideal antes de fazer uma nova tentativa. Isso garantirá que o sistema não seja sobrecarregado com tentativas desnecessárias.


Planejamento para o futuro

Se a sua empresa estiver criando microsserviços, provavelmente sua equipe já antecipou algumas necessidades futuras, como rápida escalabilidade e adição de novas funcionalidades para satisfazer às necessidades empresariais. Na maioria dos casos, depois de um ano, a arquitetura de microsserviços tem um aspecto muito diferente do inicial. Em um primeiro momento, as bibliotecas incorporadas aos microsserviços precisam ser capazes de lidar com a comunicação serviço a serviço com o mínimo de interrupção das operações. Se a sua empresa aproveitar todo o potencial dos microsserviços expandindo a escalabilidade e as funcionalidades, a eficiência da comunicação poderá ser afetada. Com o passar do tempo, os problemas aumentam à medida que os serviços ficam sobrecarregados com solicitações e os desenvolvedores precisam gastar mais tempo codificando a lógica em cada serviço.

Com uma service mesh:

  • Os desenvolvedores podem se concentrar em agregar mais valor aos negócios, em vez de se ocuparem com a conexão entre serviços.
  • A lógica de solicitação forma uma camada de infraestrutura visível paralela aos serviços. Dessa forma, é mais fácil reconhecer e diagnosticar os problemas.
  • As aplicações se tornam mais resilientes ao tempo de inatividade, já que a service mesh pode rotear as solicitações para que não passem pelos serviços com falhas.
  • As métricas de desempenho podem oferecer sugestões sobre como otimizar a comunicação no ambiente de execução.

Você pode fazer muito mais com service meshes