O que é o AWS App Mesh? - AWS App Mesh

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

O que é o AWS App Mesh?

O AWS App Mesh é uma malha de serviços que facilita o monitoramento e o controle de serviços. Uma malha de serviços é uma camada de infraestrutura dedicada a lidar com a comunicação entre serviços, geralmente por meio de uma variedade de proxies de rede leves implantados junto com o código do aplicativo. O App Mesh padroniza o modo como os serviços se comunicam, oferecendo a você visibilidade completa e ajudando a garantir alta disponibilidade para as aplicações. O App Mesh oferece controles do tráfego de rede e visibilidade consistentes para cada serviço em uma aplicação.

Adicionar o App Mesh a um aplicativo de exemplo

Considere o seguinte exemplo simples de aplicativo que não usa o App Mesh. Os dois serviços podem ser executados no AWS Fargate, no Amazon Elastic Container Service (Amazon ECS), no Amazon Elastic Kubernetes Service (Amazon EKS), no Kubernetes em instâncias do Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias do Amazon EC2 com o Docker.

Nesta ilustração, serviceA e serviceB, ambos são detectáveis por meio do namespace apps.local. Digamos, por exemplo, que você decida implantar uma nova versão do serviceb.apps.local nomeado servicebv2.apps.local. Em seguida, você deseja direcionar uma porcentagem do tráfego de servicea.apps.local para serviceb.apps.local e uma porcentagem para servicebv2.apps.local. Quando tiver certeza de que servicebv2 está funcionando bem, você deseja enviar 100% do tráfego para ele.

O App Mesh pode ajudá-lo a fazer isso sem alterar nenhum código de aplicativo ou nomes de serviço registrados. Se você usar o App Mesh com esse aplicativo de exemplo, sua malha poderá se parecer com a ilustração a seguir.

Nessa configuração, os serviços não se comunicam mais diretamente entre si. Em vez disso, eles se comunicam entre si por meio de um proxy. O proxy implantado com o serviço servicea.apps.local lê a configuração do App Mesh e envia tráfego para serviceb.apps.local ou servicebv2.apps.local com base na configuração.

Componentes do App Mesh

O App Mesh tem os seguintes componentes, ilustrados no exemplo anterior:

  • Malha de serviços: uma malha de serviços é um limite lógico para o tráfego de rede entre os serviços que residem nela. No exemplo, a malha é nomeada apps e contém todos os outros recursos da malha. Para obter mais informações, consulte Malhas de serviço.

  • Serviços virtuais: um serviço virtual é uma abstração de um serviço real que é fornecido por um nó virtual direta ou indiretamente por meio de um roteador virtual. Na ilustração, dois serviços virtuais representam os dois serviços reais. Os nomes dos serviços virtuais são os nomes detectáveis dos serviços reais. Quando um serviço virtual e um serviço real têm o mesmo nome, vários serviços podem se comunicar entre si usando os mesmos nomes que usavam antes da implementação do App Mesh. Para obter mais informações, consulte Serviços virtuais.

  • Nós virtuais: um nó virtual atua como um ponteiro lógico para um serviço detectável, como um serviço do Amazon ECS ou Kubernetes. Para cada serviço virtual, você terá pelo menos um nó virtual. Na ilustração, o serviço virtual servicea.apps.local obtém informações de configuração para o nó virtual nomeado serviceA. O nó virtual serviceA é configurado com o nome servicea.apps.local para descoberta de serviços. O serviço virtual serviceb.apps.local é configurado para rotear o tráfego para os nós virtuais serviceB e serviceBv2 por meio de um roteador virtual nomeado serviceB. Para obter mais informações, consulte Nós virtuais.

  • Roteadores virtuais e rotas: os roteadores virtuais manipulam o tráfego de um ou mais serviços virtuais dentro da malha. Uma rota está associada a um roteador virtual. A rota é usada para atender às solicitações do roteador virtual e distribuir o tráfego para os nós virtuais associados. Na ilustração anterior, o roteador virtual serviceB tem uma rota que direciona uma porcentagem do tráfego para o nó virtual serviceB e uma porcentagem do tráfego para o nó virtual serviceBv2. Você pode definir a porcentagem de tráfego roteado para um determinado nó virtual e alterá-la ao longo do tempo. Você pode rotear o tráfego com base em critérios como cabeçalhos HTTP, caminhos de URL ou nomes de serviços e métodos gRPC. Você pode configurar políticas de novas tentativas para tentar novamente uma conexão se houver um erro na resposta. Por exemplo, na ilustração, a política de novas tentativas da rota pode especificar que uma conexão com serviceb.apps.local seja tentada novamente cinco vezes, com dez segundos entre as tentativas de repetição, se serviceb.apps.local retornar tipos específicos de erros. Para obter mais informações, consulte Roteadores virtuais e Rotas.

  • Proxy: você configura seus serviços para usar o proxy depois de criar sua malha e seus recursos. O proxy lê a configuração do App Mesh e direciona o tráfego de forma adequada. Na ilustração, toda a comunicação de servicea.apps.local até serviceb.apps.local passa pelo proxy implantado em cada serviço. Os serviços se comunicam entre si usando os mesmos nomes de descoberta de serviços usados antes da introdução do App Mesh. Como o proxy lê a configuração do App Mesh, você pode controlar como os dois serviços se comunicam entre si. Quando quiser alterar a configuração do App Mesh, você não precisa alterar nem reimplantar os próprios serviços ou os proxies. Para obter mais informações, consulte Imagem do Envoy.

Como começar a usar

Para usar o App Mesh, você deve ter um serviço existente em execução no AWS Fargate, no Amazon ECS, no Amazon EKS, no Kubernetes no Amazon EC2 ou no Amazon EC2 com Docker.

Para começar a usar tags no App Mesh, consulte os guias a seguir:

Acessar o App Mesh

Você pode trabalhar com App Mesh das seguintes formas:

AWS Management Console

O console é uma interface baseada em navegador que você pode usar para gerenciar os recursos do App Mesh. Você pode abrir o console do App Mesh em https://console.aws.amazon.com/appmesh/.

AWS CLI

Fornece comandos para um conjunto amplo de produtos da AWS e é compatível com Windows, Mac e Linux. Para começar a usar, consulte oAWS Command Line Interface User Guide (Guia do usuário da AWS Command Line Interface). Para obter mais informações sobre comandos para App Mesh, consulte appmesh na Referência de comandos da AWS CLI.

AWS Tools for Windows PowerShell

Fornece comandos para um conjunto amplo de produtos da AWS para os usuários que usam script no ambiente do PowerShell. Para começar a usar, consulte o Guia do usuário do AWS Tools for Windows PowerShell. Para obter mais informações sobre cmdlets para o App Mesh, consulte App Mesh na Referência de Cmdlets para ferramentas da AWS no PowerShell.

AWS CloudFormation

Permite que você crie um modelo que descreva os recursos da AWS que deseja. Usando o modelo, o AWS CloudFormation provisiona e configura os recursos para você. Para começar a usar, consulte oAWS CloudFormation User Guide (Guia do usuário da AWS CloudFormation). Para obter mais informações sobre os tipos de recursos do App Mesh, consulte Referência do tipo de recurso do App Mesh na Referência do modelo do AWS CloudFormation.

AWS SDKs

Também fornecemos SDKs que permitem que você acesse o App Mesh com diversas linguagens de programação. Os SDKs cuidam automaticamente de tarefas como:

  • Assinar criptograficamente suas solicitações de serviço

  • Recuperar solicitações

  • Lidar com respostas de erro

Para mais informações sobre os SDKs disponíveis, consulte Ferramentas para a Amazon Web Services.

Para obter mais informações sobre como usar as APIs do App Mesh, consulte a Referência da API do AWS App Mesh.