Malha de serviço para microsserviços. Parte I

Uma tradução do artigo foi preparada especificamente para os alunos do curso da Plataforma de Infraestrutura Baseada em Kubernetes .




Se você seguiu as tendências nas arquiteturas distribuída e na nuvem nos últimos anos, provavelmente já ouviu mais de uma vez sobre microsserviços. Eles apareceram há alguns anos e, desde então, seu papel nas implantações corporativas de nuvem só aumentou. Mais e mais empresas estão migrando para microsserviços e declaram isso em suas publicações e press releases.

Sua escolha é justificada, mas poucos dizem o que está por trás dessa transição. Com a implementação adequada, os microsserviços resolvem muitos problemas da arquitetura monolítica: são fáceis de iterar e distribuir em grupos, e o código é facilmente dividido em componentes gerenciados. No entanto, na maioria das publicações, não há uma palavra sobre o trabalho subsequente com microsserviços e ferramentas necessárias para seu uso efetivo.

Hoje, olhamos para os bastidores e vemos o que é uma malha de serviço, como essa tecnologia ajuda a resolver problemas de arquitetura de microsserviço e simplifica o trabalho dos desenvolvedores. Espero que você tenha uma idéia detalhada de seu papel nas implantações de microsserviços.

O que é uma malha de serviço?


A malha de serviço (os termos “rede de microsserviço”, “rede de malha de microsserviços” também são usados) é uma camada abstrata de infraestrutura que define a interação entre microsserviços de um aplicativo. A tecnologia usa conexões de rede entre contêineres para controlar a interação de vários componentes de aplicativos. Parece bastante abstrato, mas na verdade é um conceito muito prático. Os contêineres interagem através da rede, portanto, alterar a topologia da rede permite alterar a ordem na qual os contêineres interagem.



A colaboração eficaz desempenha um papel fundamental nos microsserviços. O gerenciamento dessa interação com a malha de serviço oferece muitos benefícios. Portanto, ao implantar novas versões de componentes, você pode mudar instantaneamente os dispositivos de rede dos antigos para os novos sem configuração adicional. Se você tiver dificuldades com o dimensionamento, poderá usar a malha de serviço para redirecionar o tráfego para vários balanceadores de carga e aumentar o número de contêineres para componentes de aplicativos.

Uma dica popular para quem começa a trabalhar com microsserviços é: tratar os vários componentes do aplicativo como uma API de provedores completamente diferentes. A tecnologia de malha de serviço permite implementar esse princípio no nível da rede e determinar com precisão quais serviços estarão disponíveis em vários locais da rede. No caso de mover ou modificar um serviço, em vez de implantar uma nova configuração, basta alterar a interação da rede.

O que isso dá?


Os microsserviços são populares por sua ampla escalabilidade e são adequados para trabalhar com aplicativos grandes que podem ser divididos em componentes facilmente gerenciáveis. As arquiteturas monolíticas, por outro lado, são convenientes em áreas onde a centralização é importante. Em aplicativos monolíticos, é mais fácil registrar eventos, pois eles são executados no mesmo local. O controle de versão também é direto, pois uma única instância é substituída. Não é de surpreender que muitos desenvolvedores estejam perdidos na transição de arquiteturas monolíticas para microsserviços, onde não há um local único para registro no diário e é mais difícil selecionar as versões necessárias dos componentes.



A vantagem da tecnologia de malha de serviço é que ela desempenha o papel de fonte central de alguns dados, em particular dados sobre interações de rede. Considere o exemplo acima de implantar uma nova versão de um componente de aplicativo. Em vez de destruir todos os contêineres que contêm a versão antiga, iniciar novos contêineres com a nova versão e repetir esse processo para outros componentes relacionados, você pode controlar quais contêineres estarão visíveis para outros contêineres na rede.

Isso significa que, para implantar a nova versão, basta especificar os novos contêineres como destino usando DNS, direcionar o novo balanceador de carga ou alterar os contêineres que o balanceador existente está direcionando.

Ao focar nas interações entre os componentes do aplicativo (na rede de malha na qual eles funcionam), você pode manter um certo nível de centralização, o que simplifica a administração em um ambiente monolítico. Precisa de mais informações sobre o tráfego que passa pelo aplicativo? Adicione recursos de monitoramento à rede entre componentes. Deseja melhorar a segurança? Implemente criptografia forte e HTTPS. Tudo isso é possível graças à malha de serviço .

Deseja saber mais?


Nas próximas semanas, estudaremos mais detalhadamente o funcionamento da rede mesh e sua aplicação prática em alguns cenários de implantação de microsserviços. Vamos nos concentrar nos benefícios reais desta tecnologia: controle efetivo, capacidade de gerenciamento e capacidade de monitorar os processos de grandes aplicações.

Source: https://habr.com/ru/post/pt476358/


All Articles